JBoss Fuse - อาปาเช่คาราฟ
ในบทนี้เราจะพูดถึง Apache Karaf และเหตุใดจึงเรียกว่า OSGi Container น้ำหนักเบาพร้อมทั้งประโยชน์และคุณสมบัติที่สำคัญอื่น ๆ
ปัญหา JVM
JVM หรือ Java virtual Machine ไม่ทำหน้าที่เสมือนเครื่องเสมือนจริง เครื่องที่จะช่วยให้คุณหยุดสตาร์ทหรือรีสตาร์ทส่วนประกอบที่ทำงานอยู่ภายในได้ทันที บางครั้งอาจอนุญาตให้ใช้งานได้อย่างร้อนแรงในระดับคลาส แต่ไม่มีวิธีใดที่คุณสามารถปรับใช้หรือยกเลิกการปรับใช้ส่วนประกอบของแอปพลิเคชันของคุณในเครื่องเสมือนโดยไม่ต้องรีสตาร์ท
เพื่อแก้ปัญหานี้และอนุญาตให้โมดูลาร์ในแอปพลิเคชัน Java Fuse ใช้รันไทม์บน OSGi ที่เรียกว่า Apache Karaf
OSGi
เทคโนโลยี OSGi เป็นชุดข้อมูลจำเพาะที่กำหนดระบบส่วนประกอบแบบไดนามิกสำหรับ java ข้อกำหนดเหล่านี้อนุญาตให้ใช้โมเดลการพัฒนาที่แอปพลิเคชัน (แบบไดนามิก) ประกอบด้วยส่วนประกอบต่างๆ (ใช้ซ้ำได้)
ประโยชน์ของ OSGi
Reduced Complexity - แอปพลิเคชันถูกสร้างขึ้นเป็นส่วนประกอบการทำงานร่วมกันซึ่งซ่อนรายละเอียดการใช้งานจากกันและกันส่งผลให้ความซับซ้อนลดลง
Reusability - ส่วนประกอบจำนวนมากสามารถใช้ประโยชน์จากส่วนประกอบเดียวกันที่ติดตั้งในคอนเทนเนอร์ได้
Deployment - OSGi ให้การสนับสนุนสำหรับการเริ่มต้นหยุดและอัปเดตส่วนประกอบได้ทันทีด้วย API การจัดการวงจรชีวิตโดยไม่ต้องรีสตาร์ทคอนเทนเนอร์
คุณสมบัติ Bundles Vs
ต่อไปนี้เป็นการเปรียบเทียบระหว่าง Bundles และ Features
การรวมกลุ่ม
บันเดิลเทียบเท่ากับ OSGi ซึ่งเป็น JVM บันเดิลคืออาร์ติแฟกต์ที่ปรับใช้ในคอนเทนเนอร์ OSGi บันเดิลเป็นส่วนประกอบที่ทำงานร่วมกันหรือเป็นอิสระในการสร้างแอปพลิเคชัน
บันเดิลเหล่านี้สามารถติดตั้งถอนการติดตั้งอัพเดตเริ่มต้นหรือหยุดที่รันไทม์โดยไม่ต้องรีสตาร์ทคอนเทนเนอร์
คุณสมบัติ
คุณลักษณะเป็นวิธีการปรับใช้หลายกลุ่มเข้าด้วยกัน บางครั้งการปรับใช้บันเดิลในกลุ่มก็สมเหตุสมผลกว่า ฟีเจอร์ช่วยให้เราสามารถปรับใช้กลุ่มบันเดิลได้ด้วยคำสั่งเดียว
ทำไมต้องเป็นคอนเทนเนอร์อื่น
Apache Karaf เป็นรันไทม์ที่ใช้ OSGi ซึ่งเป็นที่ที่แอปพลิเคชันบันเดิลของเราทำงาน Fuse ใช้ Apache Karaf เป็นรันไทม์ที่บันเดิลทำงานและทำงานร่วมกันเพื่อมอบฟังก์ชันทางธุรกิจ
Karaf สร้างขึ้นจาก Felix และ equinox ซึ่งเป็น OSGi Frameworks
สถาปัตยกรรม Karaf
Apache Karaf เพิ่มฟังก์ชันเพิ่มเติมดังต่อไปนี้ให้กับรันไทม์ OSGi พื้นฐาน
Hot Deployment
Karaf รองรับการใช้งานที่ร้อนแรง มีไดเร็กทอรี hot deploy ทุกสิ่งที่อยู่ในไดเร็กทอรีนี้จะถูกปรับใช้และติดตั้งใน Karaf โดยอัตโนมัติเป็นกลุ่ม
การบันทึก
Karaf จัดเตรียมการบันทึกแบบรวมศูนย์โดยการสร้างบันทึกสำหรับบันเดิลทั้งหมดใน $Fuse_home/data/log. เราสามารถแก้ไขการกำหนดค่าคนตัดไม้ได้ในorg.ops4j.pax.logging.cfg ใน $Fuse_home/etc directory.
คอนโซลผู้ดูแลระบบ
Karaf มีคอนโซลผู้ดูแลระบบที่ซับซ้อนและชัดเจนเพื่อโต้ตอบกับฟิวส์ที่ทำงานอยู่ นอกจากนี้ยังมีชุดคำสั่งที่ติดตั้งไว้ล่วงหน้าซึ่งสามารถใช้เพื่อจัดการและตรวจสอบส่วนประกอบ (Bundle) ที่รันไทม์ คอนโซลนี้สามารถขยายได้ดังนั้นจึงช่วยให้เราสามารถเพิ่มคำสั่งใหม่ให้กับคอนโซลได้โดยการเพิ่มบันเดิลใหม่ลงในคอนโซล
การเข้าถึง SSH
Karaf อนุญาตให้เข้าถึงคอนโซลผู้ดูแลระบบนี้จากระยะไกลด้วย SSH ทุกคนที่มีข้อมูลรับรองที่ถูกต้องสามารถเชื่อมต่อกับคอนโซลผู้ดูแลระบบ karaf ผ่านเทอร์มินัล SSH