durable-streams-java - อิมพลีเมนเทชัน Java ของ Durable Streams
(github.com/Clickin)ผมเห็น Durable Streams แล้วคิดว่าเป็นโปรเจกต์ที่ดี จึงลองสร้างอิมพลีเมนเทชันสำหรับ java ซึ่งเป็นภาษาหลักที่ผมใช้งานขึ้นมาด้วย
คุณสมบัติหลัก
- ลดการผูกติดกับไลบรารีเฉพาะให้น้อยที่สุด: ออกแบบให้พึ่งพาเฟรมเวิร์กหรือไลบรารีเฉพาะให้น้อยที่สุด พร้อมทั้งเปิดให้ปรับแต่งได้มากที่สุด และยังมี implementation พื้นฐานมาให้ใช้งาน
- ปรับให้เหมาะกับ Virtual thread: ใช้งานได้ตั้งแต่ Java 17 ขึ้นไป แต่แนะนำให้ใช้ร่วมกับ Virtual thread บน Java 21 ขึ้นไป
- ผสานรวมกับเฟรมเวิร์กหลักบน JVM: มีอะแดปเตอร์สำหรับ Spring MVC, Spring WebFlux, Micronaut, Quarkus และ Ktor โดยมีการแปลง request/response และการจัดการ SSE ที่เหมาะกับแต่ละเฟรมเวิร์กมาให้ในตัว ทำให้เริ่มใช้งานได้ทันทีด้วยการตั้งค่าเพียงไม่กี่บรรทัด
- ผ่านการทดสอบความสอดคล้องของโปรโตคอล: ผ่านการทดสอบความสอดคล้องทั้ง 131 รายการที่มีให้ในรีโป durable-streams
ข้อควรระวัง
สตอเรจแบบอิงไฟล์ซิสเต็มใช้ Rocksdb สำหรับเก็บเมทาดาทา โดย Rocksdb เพิ่งเปลี่ยนจากรูปแบบที่แจกจ่าย fat jar ซึ่งรวมไบนารีของระบบปฏิบัติการหลักทั้งหมด มาเป็นรูปแบบที่ให้เลือก jar ที่ปรับแต่งตามแต่ละระบบปฏิบัติการผ่าน classifier โดยตรง
ดังนั้น หากต้องการใช้สตอเรจแบบอิงไฟล์ซิสเต็ม คุณจะต้องเพิ่ม dependency ของ rocksdb ด้วยตนเอง
ตัวอย่าง
gradle
dependencies {
implementation("io.durablestreams:durable-streams-server-core:<version>")
runtimeOnly("org.rocksdb:rocksdbjni:10.4.2:linux64") // or win64/osx
}
maven
<dependency>
<groupId>org.rocksdb</groupId>
<artifactId>rocksdbjni</artifactId>
<version>10.4.2</version>
<classifier>linux64</classifier>
<scope>runtime</scope>
</dependency>
ยังไม่มีความคิดเห็น