นักดูดาวเมื่อเวลาผ่านไป | ผู้มีส่วนร่วมเมื่อเวลาผ่านไป |
---|---|
GitHub: opengoofy/hippo4j
Gitee: opengoofy/hippo4j
สำหรับเอกสารฉบับเต็มและรายละเอียดเพิ่มเติม โปรดไปที่: เอกสาร
Thread Pool เป็นเครื่องมือสำหรับจัดการเธรดตามแนวคิดในการรวมเธรด การใช้เธรดพูลสามารถลดต้นทุนในการสร้างและทำลายเธรด และหลีกเลี่ยงความสิ้นเปลืองทรัพยากรระบบที่เกิดจากเธรดมากเกินไป ในสถานการณ์การประมวลผลงานที่มีพร้อมกันสูงและปริมาณมาก การใช้พูลเธรดถือเป็นสิ่งสำคัญ
หากคุณใช้ Thread Pool ในโปรเจ็กต์ของคุณจริงๆ ฉันเชื่อว่าคุณอาจพบปัญหาต่อไปนี้:
เธรดพูลถูกกำหนดโดยพลการและมีทรัพยากรเธรดมากเกินไป ทำให้เกิดภาระงานสูงบนเซิร์ฟเวอร์
พารามิเตอร์เธรดพูลนั้นยากต่อการประเมิน เนื่องจากการทำงานพร้อมกันทางธุรกิจเพิ่มขึ้น ธุรกิจจึงมีความเสี่ยงที่จะเกิดความล้มเหลว
เวลาดำเนินการงานเธรดพูลเกินรอบการดำเนินการโดยเฉลี่ย และนักพัฒนาจะมองไม่เห็น
การสะสมงานเธรดพูลจะกระตุ้นให้เกิดนโยบายการปฏิเสธ และส่งผลกระทบต่อการดำเนินงานปกติของธุรกิจที่มีอยู่
เมื่อเกิดปัญหา เช่น การหมดเวลาและเซอร์กิตเบรกเกอร์ในธุรกิจ เนื่องจากไม่มีการตรวจสอบ จึงไม่สามารถระบุได้ว่าปัญหาเกิดจากเธรดพูลหรือไม่
เธรดพูลดั้งเดิมไม่รองรับการถ่ายโอนตัวแปรรันไทม์ ตัวอย่างเช่น บริบท MDC จะ GG เมื่อพบเธรดพูล
ไม่สามารถดำเนินการปิดระบบอย่างค่อยเป็นค่อยไป งานเธรดพูลที่ทำงานอยู่จำนวนมากถูกยกเลิกไปเมื่อปิดโครงการ
ขณะที่เธรดพูลกำลังทำงานอยู่ การดำเนินการงานจะหยุดลง สงสัยว่าเกิดการชะงักงันเกิดขึ้นหรือมีการดำเนินการที่ใช้เวลานาน แต่ไม่มีวิธีที่จะเริ่มได้
ให้การสนับสนุนฟังก์ชั่นต่อไปนี้:
การควบคุมทั่วโลก - จัดการอินสแตนซ์พูลเธรดของแอปพลิเคชัน
การเปลี่ยนแปลงแบบไดนามิก - เปลี่ยนพารามิเตอร์เธรดพูลแบบไดนามิกในขณะที่แอปพลิเคชันกำลังทำงาน รวมถึงแต่ไม่จำกัดเพียง: คอร์ จำนวนเธรดสูงสุด ความจุของคิวการบล็อก นโยบายการปฏิเสธ ฯลฯ
การแจ้งเตือน - กลยุทธ์การแจ้งเตือนในตัวสี่แบบ กิจกรรมเธรดพูล ระดับน้ำความจุ กลยุทธ์การปฏิเสธ และเวลาปฏิบัติงานยาวเกินไป
การรวบรวมข้อมูล - รองรับหลายวิธีในการรวบรวมข้อมูลเธรดพูล รวมถึงแต่ไม่จำกัดเพียง: บันทึก, คอลเลกชันในตัว, Prometheus, InfluxDB, ElasticSearch ฯลฯ
ดำเนินการตรวจสอบ - ดูข้อมูลรันไทม์พูลเธรดแบบเรียลไทม์ และแสดงข้อมูลรันไทม์พูลเธรดในแผนภูมิภายในเวลาที่กำหนดเอง
การขยายฟังก์ชัน - รองรับบริบทการจัดส่งงานเธรดพูล เมื่อปิดโปรเจ็กต์ รองรับการรอเธรดพูลเพื่อทำงานให้เสร็จสิ้นภายในเวลาที่กำหนด
โหมดหลายโหมด - โหมดการใช้งานในตัวสองโหมด: ขึ้นอยู่กับศูนย์การกำหนดค่าและไม่มีการพึ่งพามิดเดิลแวร์
การจัดการคอนเทนเนอร์ - การดูรันไทม์พูลเธรดของคอนเทนเนอร์ Tomcat, Jetty, Undertow และการเปลี่ยนแปลงหมายเลขเธรด
การปรับเฟรมเวิร์ก - Dubbo, Hystrix, RabbitMQ, RocketMQ และการดูข้อมูลรันไทม์พูลเธรดผู้บริโภคอื่น ๆ และการเปลี่ยนแปลงหมายเลขเธรด
การตรวจสอบการเปลี่ยนแปลง - จัดเตรียมบทบาทของผู้ใช้ที่หลากหลาย การเปลี่ยนแปลงพารามิเตอร์พูลเธรดโดยผู้ใช้ทั่วไปจำเป็นต้องมีการตรวจสอบจากผู้ใช้ผู้ดูแลระบบก่อนจึงจะมีผล
ปลั๊กอินไดนามิก - ปลั๊กอินพูลเธรดหลายตัวในตัว รองรับปลั๊กอินที่ผู้ใช้กำหนดและส่วนขยายรันไทม์
การปรับหลายเวอร์ชัน - หลังจากการทดสอบจริง รองรับไคลเอนต์ SpringBoot 1.5.x => 2.7.5 แล้ว (ยังไม่ได้ทดสอบเวอร์ชันที่สูงกว่า)
เพื่อวัตถุประสงค์ในการสาธิตในท้องถิ่น โปรดดูที่ การเริ่มต้นอย่างรวดเร็ว
สภาพแวดล้อมการสาธิต: http://console.hippo4j.cn/index.html
บริษัทที่เกี่ยวโยงกันสามารถลงทะเบียนตามที่อยู่ลงทะเบียนได้เท่านั้น
โอเพ่นซอร์สไม่ใช่เรื่องง่าย คลิกดาวที่มุมขวาบนเพื่อให้กำลังใจ!
หากคุณต้องการติดตามบทความที่อัปเดตของ Hippo4j และข้อมูลที่แบ่งปันแบบเรียลไทม์ คุณสามารถติดตามบัญชีทางการของฉันได้
หากคุณมีคำถามใด ๆ ระหว่างการใช้งาน หรือมีข้อเสนอแนะสำหรับโครงการ โปรดติดตามบัญชีอย่างเป็นทางการและตอบกลับ: เข้าร่วมกลุ่มเพื่อสื่อสารและพูดคุยกับเพื่อนที่มีใจเดียวกัน 1000+
หากบริษัทของคุณไม่ได้ใช้สถานการณ์ Hippo4j ฉันขอแนะนำให้อ่านหลักการพื้นฐานของโครงการ ด้วยเหตุผลหลักๆ ดังต่อไปนี้:
เพื่อปรับปรุงคุณภาพของโค้ดและพฤติกรรมการขยายในภายหลัง จึงมีการใช้รูปแบบการออกแบบหลายรูปแบบเพื่อให้เกิดการเชื่อมโยงกันสูงและการเชื่อมต่อต่ำ
ชั้นล่างสุดของเฟรมเวิร์กอาศัย Spring Framework ในการทำงาน และใช้ฟังก์ชันที่เกี่ยวข้องกับ Spring จำนวนมากในซอร์สโค้ด
ใช้เครื่องมือที่หลากหลายภายใต้แพ็คเกจการทำงานพร้อมกันของ JUC เพื่อรับรองความปลอดภัยของการดำเนินการแบบมัลติเธรด และทำความเข้าใจการเขียนโปรแกรมพร้อมกันผ่านสถานการณ์จริง
เรียนรู้จากเฟรมเวิร์กโอเพ่นซอร์สกระแสหลัก Nacos และ Eureka เพื่อใช้ฟังก์ชันศูนย์การกำหนดค่าแบบไลท์เวทและศูนย์การลงทะเบียน
ปรับแต่งการใช้งานกรอบงาน RPC และห่อหุ้ม Netty เพื่อเพิ่มประสิทธิภาพการสื่อสารเครือข่ายไคลเอ็นต์/เซิร์ฟเวอร์ให้สมบูรณ์
สร้างมาตรฐานการเขียนโค้ดผ่านปลั๊กอิน เช่น CheckStyle และ Spotless เพื่อให้มั่นใจว่าลักษณะการทำงานของโค้ดและรูปแบบโค้ดมีคุณภาพสูง
[Sa-Token]: เฟรมเวิร์กการตรวจสอบสิทธิ์ Java น้ำหนักเบาที่ทำให้การตรวจสอบสิทธิ์ทำได้ง่ายและสวยงาม!
[HertzBeat]: ระบบตรวจสอบคลาวด์ที่ใช้งานง่ายและเป็นมิตร ไม่ต้องใช้ตัวแทน มีความสามารถในการตรวจสอบแบบกำหนดเองที่ทรงพลัง
[JavaGuide]: คำแนะนำที่ครอบคลุมความรู้หลักที่โปรแกรมเมอร์ Java ส่วนใหญ่จำเป็นต้องมี
[ toBetterJavaer ]: คู่มือการเรียนรู้ Java ที่เข้าใจง่ายและมีอารมณ์ขัน
[Jpom]: การสร้างออนไลน์ที่เรียบง่ายและมีน้ำหนักเบา การรบกวนต่ำ การปรับใช้อัตโนมัติ การดำเนินงานและการบำรุงรักษารายวัน และซอฟต์แวร์ตรวจสอบโครงการ
[12306]: ผู้ใช้ 12306 ที่เลียนแบบระดับสูง + การจับตั๋ว + การสั่งซื้อ + บริการการชำระเงินเพื่อช่วยให้นักเรียนมุ่งเน้นไปที่โครงการการจ้างงาน
[CongoMall]: ห้างสรรพสินค้าระดับองค์กร พัฒนาขึ้นตามโมเดลที่ขับเคลื่อนด้วยโดเมน DDD รวมถึงธุรกิจห้างสรรพสินค้าและโครงสร้างพื้นฐาน
ขอขอบคุณนักพัฒนาทุกคนที่มีส่วนร่วมในโครงการ หากคุณสนใจที่จะมีส่วนร่วม โปรดดูที่ฉบับแรกที่ดี
ชุมชน Hippo4j ได้รับใบอนุญาตหลายรายการจาก Jetbrains และได้มอบหมายให้นักพัฒนาที่กระตือรือร้นเข้าร่วมโครงการนี้ เรารู้สึกขอบคุณ Jetbrains เป็นอย่างยิ่งสำหรับการสนับสนุนชุมชนโอเพ่นซอร์ส