เฟรมเวิร์กไมโครเซอร์วิสที่รวดเร็ว น้ำหนักเบา และใช้งานบนคลาวด์
สแต็กโอเวอร์โฟลว์ | กลุ่มกูเกิล | Gitter แชท | ซับเรดดิท | ช่องยูทูป | เอกสารประกอบ | คู่มือการบริจาค |
แสงหมายถึงน้ำหนักเบา รวดเร็วปานสายฟ้า และให้ความกระจ่างเกี่ยวกับวิธีการเขียนโปรแกรมด้วย Java SE สมัยใหม่สำหรับการปรับใช้บนคลาวด์
ฉันทำงานบนแพลตฟอร์ม Java EE มาตั้งแต่ต้นปี 2000 และประสบปัญหาด้านประสิทธิภาพและประสิทธิภาพการทำงาน ในปี 2014 ฉันตระหนักว่าอุตสาหกรรมไอทีกำลังย้ายจาก Monolithic ไปสู่ Microservices และจากศูนย์ข้อมูลในองค์กรไปสู่ระบบคลาวด์สาธารณะ
เพื่อลดต้นทุนการผลิตแอปพลิเคชันของฉัน ฉันจำเป็นต้องค้นหาแพลตฟอร์มน้ำหนักเบาที่มีพื้นที่หน่วยความจำน้อย ปริมาณงานสูง และเวลาแฝงต่ำใน Java Java EE และ Spring/Spring Boot นั้นหนักเกินกว่าจะพิจารณาได้ แพลตฟอร์ม Java แบบน้ำหนักเบาอื่นๆ ล้วนมีปัญหาที่แตกต่างกันเกี่ยวกับการแยกระหว่างตรรกะทางธุรกิจและข้อกังวลด้านเทคนิค ยิ่งไปกว่านั้น ไม่ใช่แบบคลาวด์เนทีฟหรือออกแบบมาสำหรับคอนเทนเนอร์/คลาวด์
โดยไม่พบสิ่งที่เหมาะสม ฉันเริ่มสร้างแพลตฟอร์มโอเพ่นซอร์ส light-4j ที่ด้านบนของคอร์ Undertow HTTP โดยปฏิบัติตามหลักการ เนื่องจากแนวทางของฉันรุนแรงมากและเป็นการต่อต้านผลิตภัณฑ์จากองค์กรขนาดใหญ่ ฉันจึงถูกโจมตีโดยหน่วยงานบางแห่งทางออนไลน์และออฟไลน์อย่างต่อเนื่อง อย่างไรก็ตาม ฉันเชื่อมั่นมากว่าแนวทางของฉันคือทิศทางในอนาคต และใช้ความพยายามทั้งหมดเพื่อพัฒนาต่อไป ทุกวันนี้ บริษัทจำนวนมากใช้ light-4j ในการผลิตโดยได้รับการตอบรับเชิงบวกอย่างมาก นอกจากนี้ยังสนับสนุนให้ฉันอุทิศตนให้กับกรอบงานและขยายแพลตฟอร์มเพื่อสร้างระบบนิเวศ
สำหรับผู้ใช้ที่ได้รับประโยชน์จากแพลตฟอร์ม คุณสามารถเป็นผู้สนับสนุนให้ฉันได้ เพื่อที่ฉันจะได้ทุ่มเทความพยายามทั้งหมดให้กับโครงการโอเพ่นซอร์ส
เร็วกว่าแพลตฟอร์มไมโครเซอร์วิสยอดนิยมอย่าง Spring Boot ที่ฝัง Tomcat ถึง 44 เท่า และใช้หน่วยความจำเพียง 1/5 เท่านั้น นี่คือผลลัพธ์การวัดประสิทธิภาพเปรียบเทียบกับ Spring Boot และไมโครเซอร์วิสเฟรมเวิร์กอื่นๆ นี่คือการเปรียบเทียบโดยบุคคลที่สามกับกรอบงานเว็บอื่นๆ
ออกแบบข้อกำหนด OpenAPI และสร้างบริการจากข้อกำหนดดังกล่าว ข้อกำหนดนี้ยังเป็นส่วนหนึ่งของกรอบงานเพื่อขับเคลื่อนการตรวจสอบความปลอดภัยและขอการตรวจสอบความถูกต้องขณะรันไทม์
ต้นขั้วการทดสอบแบบหน่วย/ต้นทางถึงปลายทางถูกสร้างขึ้นเพื่อให้สามารถใช้วิธีการทดสอบที่ขับเคลื่อนด้วยผลิตภัณฑ์ที่มีคุณภาพ
การดีบักภายใน IDE เช่นเดียวกับแอปพลิเคชันแบบสแตนด์อโลนเพื่อประสิทธิภาพการทำงานของนักพัฒนาที่ดีขึ้น
ไฟล์สนับสนุน Dockerfile และ DevOps ถูกสร้างขึ้นเพื่อรองรับการเชื่อมต่อและบูรณาการเข้ากับการใช้งานจริงอย่างต่อเนื่อง
เฟรมเวิร์กโอเพ่นซอร์สทั้งหมดสร้างขึ้นใน Java และเรากำลังทำงานกับเฟรมเวิร์ก Nodejs ภายใน ในอนาคต เราอาจจัดเตรียมกรอบการทำงาน Golang ด้วยเช่นกัน และทั้งหมดนี้มีระบบนิเวศและตลาดเดียวกัน
เซิร์ฟเวอร์ OAuth2 เพื่อความปลอดภัยและพอร์ทัลสำหรับการตรวจสอบและการจัดการการผลิต พอร์ทัลนี้ยังเป็นตลาดกลางในการเชื่อมโยงลูกค้าและบริการเข้าด้วยกัน
มีสองวิธีในการเริ่มโครงการของคุณ:
คุณสามารถใช้ light-codegen เพื่อสร้างโปรเจ็กต์ที่ใช้งานได้ ปัจจุบันรองรับ light-rest-4j, light-graphql-4j, light-hybrid-server-4j และ light-hybrid-service-4j เครื่องสร้างโค้ดเหตุการณ์แสงกำลังจะมา
โครงการ light-codegen README.md อธิบายสี่วิธีในการใช้ตัวสร้างพร้อมตัวอย่าง
อีกวิธีในการเริ่มต้นโปรเจ็กต์ของคุณคือการคัดลอกจาก light-example-4j
คุณสามารถดูคำอธิบายของตัวอย่างเหล่านี้ได้
นอกจากนี้ยังมีบทช่วยสอนบางส่วน
หากต้องการรัน/ดีบักจาก IDE คุณต้องกำหนดค่าแอปพลิเคชัน Java ด้วยคลาสหลัก "com.networknt.server.Server" และไดเร็กทอรีการทำงานคือโฟลเดอร์โปรเจ็กต์ของคุณ ไม่มีคอนเทนเนอร์และคุณกำลังทำงานกับแอปพลิเคชัน Java แบบสแตนด์อโลน
สร้างแอปพลิเคชัน Java ที่คลาสหลักคือ com.networknt.server.Server และไดเร็กทอรีการทำงานคือโฟลเดอร์รูทโปรเจ็กต์ของคุณ คุณสามารถดีบักเซิร์ฟเวอร์ของคุณได้เช่นเดียวกับแอปพลิเคชัน POJO
mvn ผู้บริหาร:exec
java -jar target/demo-0.1.0.jar
คุณสามารถใช้ Ctrl+C เพื่อฆ่าเซิร์ฟเวอร์ แต่สำหรับการผลิตให้ใช้คำสั่งต่อไปนี้
kill -s TERM <pid>
เซิร์ฟเวอร์มีฮุคการปิดระบบและคำสั่งด้านบนอนุญาตให้ทำการล้างข้อมูลได้ ตัวอย่างเช่น ดำเนินการคำขอบนเครื่องบินให้เสร็จสิ้นและปิดการเชื่อมต่อฐานข้อมูล เป็นต้น หากใช้การลงทะเบียนและการค้นหาบริการ เซิร์ฟเวอร์จะส่งเหตุการณ์การปิดระบบไปยังรีจิสทรีบริการ และเก็บคำขอประมวลผลไว้เป็นเวลา 30 วินาทีจนกว่าไคลเอนต์ทั้งหมดจะรีเฟรชแคชในเครื่องก่อนที่จะปิดระบบ .
เฟรมเวิร์ก Light-4j และ light-*-4j ทั้งหมดพร้อมใช้งานภายใต้ลิขสิทธิ์ Apache 2.0 ดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม