โครงแบบไมโครเซอร์วิสแบบ lamp-cloud รุ่นก่อนคือ zuihou-admin-cloud เริ่มตั้งแต่ 3.0.0 โดยเปลี่ยนชื่อเป็น lamp-cloud
โครงไมโครเซอร์วิสแบบ lamp-cloud คือโครงแบบไมโครเซอร์วิส SaaS ที่ใช้ SpringCloud (Hoxton.SR10) + SpringBoot (2.3.10.RELEASE) โดยมีระบบการจัดการพื้นหลังการอนุญาตและการรับรองความถูกต้องแบบรวม ซึ่งรวมถึงการจัดการผู้ใช้ การจัดการสิทธิ์การใช้ทรัพยากร เกตเวย์ หลายโมดูล เช่น API, ธุรกรรมแบบกระจาย และเรซูเม่การกระจายตัวของเบรกพอยต์ไฟล์ขนาดใหญ่ รองรับการพัฒนาแบบคู่ขนานของระบบหลายธุรกิจ และสามารถใช้เป็นโครงการพัฒนาสำหรับบริการแบ็คเอนด์ รหัสมีความกระชับและมีโครงสร้างที่ชัดเจน เหมาะสำหรับการเรียนรู้และนำไปใช้โดยตรงในโครงการ เทคโนโลยีหลักใช้เฟรมเวิร์กและมิดเดิลแวร์หลัก เช่น Nacos, Fegin, Riadfdson, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Redis และ RiadfdsitMQ
ฟังก์ชันนั่งร้านไมโครเซอร์วิสแบบ lamp-cloud
1. การลงทะเบียนบริการและการค้นพบและการร้องขอ
การลงทะเบียนและการค้นพบบริการโดยใช้ Nacos โดยใช้ Feign เพื่อใช้บริการ intermodulation สามารถบรรลุประสบการณ์การเขียนโค้ดแบบเดียวกับการเรียกวิธีการในเครื่องเมื่อใช้คำขอ HTTP สำหรับการโทรระยะไกล เห็นว่านี่เป็นคำขอ HTTP
2. การรับรองความถูกต้องของบริการ:
ใช้ JWT เพื่อเสริมสร้างการตรวจสอบสิทธิ์สำหรับการกำหนดเวลาระหว่างบริการและรับรองความปลอดภัยของบริการภายใน
3. การปรับสมดุลโหลด
ส่วนที่เหลือที่บริการเก็บไว้ใช้สำหรับการควบคุมพร็อกซีและเกตเวย์ นอกเหนือจาก node.js และ nginx ที่ใช้กันทั่วไปแล้ว zuul และ riadfdson ของซีรีส์ Spring Cloud ยังช่วยให้เราดำเนินการควบคุมเกตเวย์ปกติและการทำโหลดบาลานซ์ได้ ในหมู่พวกเขา การขยายและการอ้างอิงจากโครงการต่างประเทศจะขึ้นอยู่กับปลั๊กอินจำกัดกระแสของ JWT Zuul ซึ่งจำกัดกระแส
4. กลไกการหลอมรวม
เนื่องจากการกระจายบริการ เพื่อหลีกเลี่ยง "หิมะถล่ม" ของการโทรระหว่างบริการ Hystrix จึงถูกใช้เป็นฟิวส์เพื่อหลีกเลี่ยง "หิมะถล่ม" ของการโทรระหว่างบริการ
5. การติดตามผล
ใช้ Spring Boot Admin เพื่อตรวจสอบสถานะการทำงานของบริการอิสระแต่ละรายการ ใช้กังหันเพื่อดูสถานะการทำงานและความถี่การโทรของอินเทอร์เฟซแบบเรียลไทม์ ใช้ Zipkin เพื่อดูสายโซ่การโทรระหว่างแต่ละบริการ ฯลฯ
6. เชื่อมโยงการตรวจสอบการโทร
ใช้ Zipkin เพื่อติดตามการตรวจสอบประสิทธิภาพไมโครเซอร์วิสแบบลิงก์เต็มรูปแบบ แสดงตัวบ่งชี้ต่างๆ จากมิติโดยรวมไปจนถึงมิติท้องถิ่น และแสดงข้อมูลประสิทธิภาพสายโซ่การโทรทั้งหมดจากส่วนกลางทั่วทั้งแอปพลิเคชัน ซึ่งสามารถวัดประสิทธิภาพโดยรวมและประสิทธิภาพในพื้นที่ได้อย่างง่ายดาย และค้นหาแหล่งที่มาของ ข้อบกพร่อง ซึ่งสามารถลดระยะเวลาการแก้ไขปัญหาในการผลิตได้อย่างมาก โดยที่เราสามารถทำได้
ขอการติดตามลิงก์และตำแหน่งข้อบกพร่องอย่างรวดเร็ว: สามารถค้นหาข้อมูลข้อผิดพลาดได้อย่างรวดเร็วผ่านทางสายโซ่การโทรรวมกับบันทึกทางธุรกิจ การแสดงภาพ: แต่ละขั้นตอนต้องใช้เวลาและดำเนินการวิเคราะห์ประสิทธิภาพ การเพิ่มประสิทธิภาพการพึ่งพา: ความพร้อมใช้งานของแต่ละลิงก์การโทร การแยกการพึ่งพาบริการ และการเพิ่มประสิทธิภาพ การวิเคราะห์ข้อมูล การเพิ่มประสิทธิภาพลิงก์: สามารถรับเส้นทางพฤติกรรมของผู้ใช้ และการวิเคราะห์สรุปนำไปใช้ในสถานการณ์ทางธุรกิจต่างๆ
7. การอนุญาตข้อมูล
การใช้สิทธิ์อนุญาตข้อมูลอย่างง่ายโดยใช้ DataScopeInterceptor Interceptor ที่อิงจาก Mybatis
8. SaaS (ผู้เช่าหลายราย) โซลูชันที่ไม่ก้าวก่าย
ใช้ตัวสกัดกั้น Mybatis เพื่อสกัดกั้น SQL ทั้งหมดและแก้ไข Schema เริ่มต้นเพื่อให้เกิดการแยกข้อมูลแบบหลายผู้เช่า และรองรับการเสียบปลั๊ก
9. แคชระดับที่สอง
J2Cache ใช้เพื่อดำเนินการแคช แคชระดับแรกใช้หน่วยความจำ (คาเฟอีน) และแคชระดับที่สองใช้ Redis เนื่องจากการอ่านแคชจำนวนมากจะทำให้เครือข่าย L2 กลายเป็นคอขวดของทั้งระบบ เป้าหมายของ L1 คือการลดจำนวนการอ่านให้เหลือ L2 กรอบงานการแคชนี้ส่วนใหญ่จะใช้ในสภาพแวดล้อมคลัสเตอร์ นอกจากนี้ยังสามารถใช้บนเครื่องเดียวเพื่อหลีกเลี่ยงผลกระทบต่อธุรกิจแบ็คเอนด์หลังจากการสตาร์ทแบบเย็นที่เกิดจากการรีสตาร์ทแอปพลิเคชัน
10. การแปลงถั่วที่สง่างาม
ใช้ส่วนประกอบของ Dozer เพื่อเพิ่มประสิทธิภาพและแปลง DTO, DO, PO และวัตถุอื่นๆ
11. การตรวจสอบแบบฟอร์มแบบครบวงจรทั้งด้านหน้าและด้านหลัง
การตรวจสอบแบบฟอร์มที่เข้มงวดมักจะต้องมีการตรวจสอบส่วนหน้าและส่วนหลังในเวลาเดียวกัน อย่างไรก็ตาม ในโปรเจ็กต์แบบเดิม ส่วนหน้าและส่วนหน้าสามารถทดสอบได้เพียงครั้งเดียวเท่านั้น หากกฎมีการเปลี่ยนแปลงในภายหลัง ส่วนหน้า และต้องแก้ไขแบ็คเอนด์ไปพร้อมๆ กัน ดังนั้น การขึ้นต่อกันเริ่มต้นของ zuihou-validator-starter จึงถูกห่อหุ้มไว้บนพื้นฐานของ hibernate-validator โดยจัดให้มีอินเทอร์เฟซทั่วไปเพื่อรับกฎที่ต้องได้รับการตรวจสอบ จากนั้นส่วนหน้าจะใช้กฎที่ส่งคืนโดยส่วนหลัง หากกฎมีการเปลี่ยนแปลงในอนาคต จำเป็นต้องมีเฉพาะส่วนหลังเท่านั้น
12. ป้องกันการโจมตีด้วยสคริปต์ข้ามไซต์ (XSS)
ใช้ตัวกรองเพื่อกรองพารามิเตอร์แบบฟอร์มในคำขอทั้งหมด
กรองพารามิเตอร์ประเภทแอปพลิเคชัน/json ทั้งหมดผ่าน Json deserializer
13. ปัจจุบันเข้าสู่ระบบหัวฉีดข้อมูลผู้ใช้
การแทรกข้อมูลระบุตัวตนของผู้ใช้ผ่านคำอธิบายประกอบ
14. API ออนไลน์
เนื่องจากฟังก์ชันบางอย่างของ swagger-ui ดั้งเดิมนั้นไม่เป็นมิตรเพียงพอ เราจึงนำ swagger-bootstrap-ui แบบโอเพ่นซอร์สในประเทศมาใช้ และสร้าง stater เพื่ออำนวยความสะดวกให้กับผู้ใช้ springboot
15. เครื่องกำเนิดโค้ด
ชุดตัวสร้างโค้ดได้รับการปรับแต่งตาม Mybatis-plus-generator โดยการกำหนดค่าคำอธิบายประกอบของฟิลด์ฐานข้อมูล จะสร้างคลาสการแจงนับ คำอธิบายประกอบพจนานุกรมข้อมูล SaveDTO UpdateDTO คำอธิบายประกอบกฎการตรวจสอบแบบฟอร์ม คำอธิบายประกอบ Swagger ฯลฯ โดยอัตโนมัติ
16. ผู้จัดกำหนดการงานตามกำหนดเวลา
การปรับปรุงฟังก์ชั่นตามงาน xxl (ตัวอย่างเช่น: การส่งงานในเวลาที่กำหนด การรวมโปรเจ็กต์กับผู้ดำเนินการและผู้กำหนดเวลา แหล่งข้อมูลหลายแหล่ง)
17. การอัพโหลดไฟล์ขนาดใหญ่/เบรกพอยต์/เรซูเม่แบบแยกส่วน
ส่วนหน้าใช้ webupload.js และส่วนหลังใช้ NIO เพื่อใช้การอัปโหลดไฟล์ขนาดใหญ่แบบแยกส่วนเบรกพอยต์ หลังจากเริ่มบริการ Eureka, Zuul และ File คุณสามารถเปิด docs/chunkUploadDemo/demo.html เพื่อทำการทดสอบได้โดยตรง หลังจากการทดสอบ หน่วยความจำสูงสุดสแต็กในเครื่องคือ 128M เพื่อเริ่มบริการไฟล์ และสามารถอัปโหลดไฟล์ขนาดใหญ่ 4.6G+ ได้สำเร็จภายใน 5 นาที เวลาให้บริการอย่างเป็นทางการจะได้รับผลกระทบจากแบนด์วิดท์ผู้ใช้และแบนด์วิธของเซิร์ฟเวอร์ และจะเป็นเช่นนั้น ใช้เวลานาน
18. ธุรกรรมแบบกระจาย
เมื่อผสานรวมกับมิดเดิลแวร์ธุรกรรมแบบกระจายของ Alibaba: seata จะช่วยแก้ปัญหาธุรกรรมแบบกระจายที่ต้องเผชิญในสถานการณ์ไมโครเซอร์วิสด้วยวิธีที่มีประสิทธิภาพและไม่รุกราน
19. หัวฉีดอัตโนมัติข้อมูลข้ามตาราง ข้ามฐานข้อมูล และบริการข้ามบริการ
ใช้เพื่อแก้ปัญหาการสะท้อนข้อมูลที่เกี่ยวข้องกับคุณลักษณะของข้อมูลแบบข้ามตาราง ฐานข้อมูลแบบข้ามบริการ หรือคุณลักษณะของออบเจ็กต์เดียว สนับสนุนการแทรกคุณลักษณะข้อมูลคงที่ (พจนานุกรมข้อมูล) และคีย์หลักแบบไดนามิกโดยอัตโนมัติ ข้อมูล.
20. การปล่อยระดับสีเทา
เพื่อที่จะแก้ไขปัญหาการอัปเดตบริการออนไลน์บ่อยครั้ง การย้อนกลับ การวนซ้ำอย่างรวดเร็ว และการพัฒนาร่วมกันภายในบริษัท โปรเจ็กต์นี้ใช้กลยุทธ์การปรับสมดุลโหลดของ riadfdson ที่ได้รับการแก้ไขเพื่อให้บรรลุการเปิดตัวระดับสีเทา
บันทึกการอัพเดต lamp-cloud
เวอร์ชัน 3.5.5
ปรับโครงสร้างใหม่
lamp-cloud: ปรับลำดับการดำเนินการของ TraceFilter เพื่ออำนวยความสะดวกให้กับตัวกรองอื่นๆ ในเกตเวย์เพื่อบันทึกข้อมูลบันทึก
lamp-cloud: เพิ่มประสิทธิภาพ RouterMeta และรองรับปุ่มกำหนดเองส่วนหน้า
lamp-cloud: เพิ่มประสิทธิภาพอินเทอร์เฟซการรวบรวมข้อมูลระดับภูมิภาคที่รวบรวมข้อมูลปัญหาที่อ่านไม่ออก
lamp-cloud: การเพิ่มประสิทธิภาพอินเทอร์เฟซการรวบรวมข้อมูลระดับภูมิภาคไม่สามารถรวบรวมข้อมูลสำหรับมณฑลที่อยู่ต่ำกว่าเมืองได้
lamp-cloud: เพิ่มวิธีการ addChildren ให้กับเอนทิตีพื้นฐานของโครงสร้างต้นไม้
lamp-cloud: ปรับโครงสร้างการรวมผยองให้เหมาะสมเพื่อละเว้นบริการซ็อกเก็ตเว็บ
แก้ไข
lamp-util: เมื่อพารามิเตอร์ส่วนหัวของคำขอมีภาษาจีน การเรียกแบบอะซิงโครนัสจะรายงานข้อผิดพลาด
lamp-cloud: แก้ไขข้อผิดพลาดที่โครงสร้างต้นไม้ไม่สามารถรับโครงสร้างลำดับชั้นการประกบที่ถูกต้อง
lamp-web-plus: แก้ไขข้อผิดพลาดที่เกิดจากความสูงคงที่ของหน้าต้นไม้
lamp-web-plus: แก้ไขปัญหาดรอปดาวน์องค์ประกอบ TableAction ทำให้เส้นแบ่งแสดงไม่ถูกต้องเนื่องจากการอนุญาต
lamp-web-plus: แก้ไขปัญหาที่ข้อมูลจากหน้ารายการถูกถ่ายโอนไปยังหน้าแก้ไข และข้อมูลได้รับการแก้ไขโดยไม่ตั้งใจ