ระบบกระจายที่ยอดเยี่ยม
พื้นที่เก็บข้อมูลนี้ประกอบด้วยรายการโครงการระบบแบบกระจายที่มีโค้ดโอเพ่นซอร์สในภาษาการเขียนโปรแกรมต่างๆ ซึ่งอาจมีประโยชน์ในการทำความเข้าใจวิธีสร้างบริการแบบกระจายได้ดียิ่งขึ้น
ฐานข้อมูล
- (Golang) Jocko - บริการบันทึกการกระทำของ Kafka / แบบกระจายใน Go [เซิร์ฟ + แพ]
- (Golang) oklog - ระบบการจัดการบันทึกแบบกระจายและไม่มีการประสานงานสำหรับคลัสเตอร์ ol ขนาดใหญ่ [เก็บถาวร]
- (Golang) elasticell - ฐานข้อมูล NoSQL ที่เข้ากันได้กับ HA Redis แบบกระจาย โดยมีความสม่ำเสมอและความน่าเชื่อถือสูง
- (Erlang) CouchDB - ฐานข้อมูลเอกสารที่มีความพร้อมใช้งานสูง ทนทานต่อพาร์ติชั่น และสอดคล้องกันในที่สุด รองรับการตั้งค่ามาสเตอร์-มาสเตอร์พร้อมการตรวจจับข้อขัดแย้งอัตโนมัติ
- (Java) Apache HBase - ฐานข้อมูล Hadoop ซึ่งเป็นที่เก็บข้อมูลขนาดใหญ่แบบกระจายและปรับขนาดได้ มีประโยชน์เมื่อจำเป็นต้องเข้าถึงข้อมูลขนาดใหญ่แบบอ่าน/เขียนแบบเรียลไทม์แบบสุ่ม
- (Golang) Tair - บริการจัดเก็บข้อมูลแบบกระจายความเร็วสูง (MDB)/ถาวร (LDB) ประสิทธิภาพสูงและพร้อมใช้งานสูง
- (Golang) immudb - ฐานข้อมูลที่ไม่เปลี่ยนรูปโดยอิงจากความน่าเชื่อถือเป็นศูนย์, คีย์/ค่า & SQL, ป้องกันการปลอมแปลง, ประวัติการเปลี่ยนแปลงข้อมูล
- (สนิม) toydb - ฐานข้อมูล SQL แบบกระจายใน Rust เขียนเป็นโครงการการเรียนรู้
- (สนิม) เครือข่าย DB3 - ทางเลือก firestore ของ firebase แบบกระจายอำนาจ
- (Python) ZODB - ฐานข้อมูลเชิงวัตถุของธุรกรรม ACID
- (Golang) requiemdb - พื้นที่เก็บข้อมูลถาวรสำหรับข้อมูล OTEL
ฐานข้อมูลคีย์-ค่า
- (C) memcached - ที่เก็บแคชคีย์/ค่าตามเหตุการณ์แบบมัลติเธรดประสิทธิภาพสูงที่มีจุดประสงค์เพื่อใช้ในระบบแบบกระจาย
- (C) redis - ฐานข้อมูลในหน่วยความจำที่มีประเภทค่าต่างๆ ที่คงอยู่บนดิสก์
- (สนิม) TiKV - ฐานข้อมูลคีย์-ค่าของธุรกรรมแบบกระจาย ซึ่งเดิมสร้างขึ้นเพื่อเสริม TiDB
- (C++) leveldb - ไลบรารีการจัดเก็บคีย์-ค่าที่รวดเร็วที่เขียนโดย Google ที่ให้การแมปที่เรียงลำดับจากคีย์สตริงไปจนถึงค่าสตริง
- (Golang) goleveldb - LevelDB ที่ใช้งานใน Golang
- (Golang) Summitdb - ฐานข้อมูลคีย์/ค่า NoSQL ในหน่วยความจำ มันยังคงอยู่ในดิสก์ ใช้อัลกอริธึมฉันทามติ Raft เป็นไปตามมาตรฐาน ACID และสร้างขึ้นบนโมเดลการทำธุรกรรมและสอดคล้องกันอย่างมาก รองรับดัชนีที่กำหนดเอง ข้อมูลเชิงพื้นที่ เอกสาร JSON และสคริปต์ JS ที่ผู้ใช้กำหนด
- (Python) pupdb - ฐานข้อมูลคีย์-ค่าแบบไฟล์อย่างง่าย
- (Python) Pickledb - ที่เก็บคีย์-ค่าโอเพ่นซอร์สโดยใช้โมดูล json ของ Python
- (C++) KeyDB - ทางเลือกแบบมัลติเธรดแบบดรอปอินที่เร็วกว่าสำหรับ Redis
- (C++) Dragonfly - ที่เก็บข้อมูลในหน่วยความจำที่เข้ากันได้กับ Redis และ Memcache อย่างสมบูรณ์ และออกแบบโดยใช้อัลกอริธึมสมัยใหม่
- (Golang) BadgerDB - ฐานข้อมูลคีย์-ค่า (KV) แบบฝังถาวรและรวดเร็วที่เขียนด้วย Pure Go
- (Golang) BuntDB - ที่เก็บคีย์/ค่าในหน่วยความจำระดับต่ำใน Pure Go ยังคงอยู่ในดิสก์ เป็นไปตามมาตรฐาน ACID และใช้การล็อคสำหรับเครื่องอ่านหลายเครื่องและตัวเขียนเพียงตัวเดียว รองรับดัชนีที่กำหนดเองและข้อมูลเชิงพื้นที่
- (สนิม) ConstDB - ที่เก็บแคชที่มีลักษณะคล้าย Redis ที่ใช้ CRDT และการจำลองแบบที่ใช้งานอยู่
- (Golang) GhostDB - ที่เก็บข้อมูลคีย์-ค่าวัตถุประสงค์ทั่วไปในหน่วยความจำแบบกระจายที่ให้ประสิทธิภาพระดับไมโครวินาทีในทุกขนาด
- (Dart) Hive - ฐานข้อมูลคีย์-ค่าที่รวดเร็วและมีน้ำหนักเบาซึ่งเขียนด้วย Dart ล้วนๆ แรงบันดาลใจจาก Bitcask
- (Golang) rosedb - ฐานข้อมูล NoSQL ที่รวดเร็ว เสถียร และฝังอยู่บนพื้นฐานของ bitcask รองรับโครงสร้างข้อมูลที่หลากหลาย เช่น สตริง รายการ แฮช ชุด และชุดที่เรียงลำดับ
- (สนิม) PumpkinDB - โปรแกรมฐานข้อมูลคีย์-ค่าที่สั่งซื้อไม่เปลี่ยนรูป
- (Golang) FlashDB - ที่เก็บคีย์/ค่าที่เรียบง่ายในหน่วยความจำใน Pure Go ยังคงอยู่ในดิสก์ เป็นไปตามมาตรฐาน ACID และใช้การล็อคสำหรับเครื่องอ่านหลายเครื่องและตัวเขียนเพียงตัวเดียว รองรับการดำเนินการเหมือนกับ Redis สำหรับโครงสร้างข้อมูล เช่น SET, SORTED SET, HASH และ STRING
- (PHP) Lazer - ฐานข้อมูลไฟล์ PHP แบบแฟลตที่ใช้ไฟล์ JSON
- (Golang) Scribble - ฐานข้อมูล JSON ขนาดเล็กใน Golang
- (Golang) FlyDB - เอ็นจิ้นการจัดเก็บ KV ประสิทธิภาพสูงที่ใช้กระดาษ bitcask รองรับโปรโตคอล redis และโครงสร้างข้อมูลที่สอดคล้องกัน
- (สนิม) Engula - ที่เก็บคีย์-ค่าแบบกระจาย ใช้เป็นแคช ฐานข้อมูล และเครื่องมือจัดเก็บข้อมูล
- (Golang) Dice - ร้านค้า KV ในหน่วยความจำที่ใช้ Golang ที่เรียบง่ายอย่างยิ่งซึ่งพูดภาษา Redis
ฐานข้อมูลเชิงสัมพันธ์, SQL, NewSQL
- (Golang) CockroachDB - ฐานข้อมูล SQL ที่ทนต่อข้อผิดพลาดแบบกระจายซึ่งสร้างขึ้นบนที่เก็บคีย์-ค่าของธุรกรรมและสอดคล้องกันอย่างมาก
- (Golang) YugabyteDB - ฐานข้อมูล SQL แบบกระจายบนคลาวด์สำหรับแอปพลิเคชันที่มีภารกิจสำคัญ
- (Golang) RQLite - ฐานข้อมูลเชิงสัมพันธ์แบบกระจายน้ำหนักเบา ซึ่งใช้ SQLite เป็นเครื่องมือจัดเก็บข้อมูล
- (Golang) Kingbus - ร้านค้า binlog MySQL แบบกระจายโดยใช้แพ [Raft]
- (C++) YDB เป็นฐานข้อมูล SQL แบบโอเพนซอร์สแบบกระจายที่ผสมผสานความพร้อมใช้งานสูงและความสามารถในการปรับขนาดเข้ากับความสอดคล้องที่เข้มงวดและธุรกรรม ACID
- (Golang) RadonDB - ฐานข้อมูล MySQL แบบโอเพ่นซอร์สบนคลาวด์สำหรับความสามารถในการปรับขนาดและประสิทธิภาพที่ไม่จำกัด
NoSQL, ฐานข้อมูลเอกสาร
- (C++) MongoDB - ฐานข้อมูลเอกสารที่ออกแบบมาเพื่อความสะดวกในการพัฒนาและปรับขนาด
- (Golang) FerretDB - พร็อกซีแปลงแบบสอบถามโปรโตคอล MongoDB 6.0+ เป็น SQL - โดยใช้ PostgreSQL เป็นเครื่องมือฐานข้อมูล
- (C#) LiteDB - ที่เก็บเอกสาร NoSQL ในไฟล์ข้อมูลเดียว
- (Python) Tinydb - ฐานข้อมูลเชิงเอกสารน้ำหนักเบาที่เขียนด้วย Python ล้วนๆ
- (PHP) SleekDB - ไฟล์แบนธรรมดา NoSQL เช่นฐานข้อมูลที่ใช้งานใน PHP โดยไม่ต้องพึ่งพาบุคคลที่สามที่จัดเก็บข้อมูลในไฟล์ JSON ธรรมดา
- (สนิม) BonsaiDB - ACID, KV ของธุรกรรมหรือฐานข้อมูลที่เป็นมิตรกับการพัฒนาเอกสารพร้อมการจัดเก็บข้อมูลบนดิสก์ล่าช้าที่กำหนดค่าได้
- (Golang) CloverDB - ฐานข้อมูล NoSQL เชิงเอกสารน้ำหนักเบาที่เขียนด้วย Golang ล้วนๆ
ฐานข้อมูลกราฟ
- (Java) neo4j - ฐานข้อมูลกราฟ
- (Python) edgedb - ฐานข้อมูลเชิงกราฟ
- (C++) เนบิวลา - ฐานข้อมูลกราฟโอเพ่นซอร์สแบบกระจายและรวดเร็วที่มีความสามารถในการปรับขนาดแนวนอนและความพร้อมใช้งานสูง
- (Golang) EliasDB - ฐานข้อมูลน้ำหนักเบาแบบกราฟ
อนุกรมเวลา
- (Golang) VictoriaMetrics - โซลูชันการตรวจสอบที่รวดเร็วและคุ้มค่าและฐานข้อมูลอนุกรมเวลา
- (Golang) influxdb - พื้นที่เก็บข้อมูลที่ปรับขนาดได้สำหรับหน่วยวัด เหตุการณ์ และการวิเคราะห์แบบเรียลไทม์
- (Java) trino - เอ็นจิ้นการสืบค้น SQL แบบกระจายที่รวดเร็วสำหรับการวิเคราะห์ข้อมูลขนาดใหญ่
- (Java) Apache Doris - ฐานข้อมูลการวิเคราะห์แบบครบวงจรที่ใช้งานง่าย ประสิทธิภาพสูงและเป็นหนึ่งเดียว
- (Scala) FiloDB - กระจาย, เข้ากันได้กับ Prometheus, แบบเรียลไทม์, ในหน่วยความจำ, ปรับขนาดได้จำนวนมาก, อนุกรมเวลา / เหตุการณ์ / ฐานข้อมูลการดำเนินงานแบบหลายสคีมา
- (สนิม) ceresdb - ฐานข้อมูลอนุกรมเวลาแบบเนทิฟบนคลาวด์ประสิทธิภาพสูง แบบกระจาย ไม่มีสคีมา ที่สามารถรองรับทั้งปริมาณงานอนุกรมเวลาและการวิเคราะห์
- พื้นที่เก็บข้อมูล (Golang) เป็นเครื่องมือจัดเก็บข้อมูลบนดิสก์แบบโลคัลน้ำหนักเบาสำหรับข้อมูลอนุกรมเวลาด้วย API ที่ตรงไปตรงมา
- (สนิม) CnosDB เป็นฐานข้อมูลอนุกรมเวลาแบบโอเพ่นซอร์สที่กระจายประสิทธิภาพสูง มีการบีบอัดสูงและใช้งานง่าย ใช้ในด้านต่างๆ เช่น IoT, อินเทอร์เน็ตเชิงอุตสาหกรรม, รถยนต์ที่เชื่อมต่อ และการดำเนินงานด้านไอที
- (Golang) LinDB - ฐานข้อมูลอนุกรมเวลาแบบกระจายที่ปรับขนาดได้ ประสิทธิภาพสูง และมีความพร้อมใช้งานสูง
- (Scala) FiloDB - ฐานข้อมูลอนุกรมเวลา / เหตุการณ์ / การดำเนินงานแบบหลายสคีมาแบบกระจาย เข้ากันได้กับโพรมีธีอุส แบบเรียลไทม์ ในหน่วยความจำ ปรับขนาดได้จำนวนมาก
- (สนิม) CeresDB - ฐานข้อมูลอนุกรมเวลาแบบเนทิฟบนคลาวด์ประสิทธิภาพสูงแบบกระจาย
ฐานข้อมูลคอลัมน์
- (Java) Apache Cassandra - ที่เก็บแถวแบบแบ่งพาร์ติชันที่ปรับขนาดได้สูง แถวจะถูกจัดระเบียบเป็นตารางโดยมีคีย์หลักที่จำเป็น
- (C++) scylladb - ฐานข้อมูลขนาดใหญ่แบบเรียลไทม์ที่เข้ากันได้กับ API กับ Apache Cassandra และ Amazon DynamoDB
- (Golang) FrostDB - ฐานข้อมูลเรียงเป็นแนวคอลัมน์กว้างแบบฝังที่เขียนด้วยภาษา Go
ฐานข้อมูลการอนุญาต
- (Golang) SpiceDB - ระบบฐานข้อมูลที่ได้รับแรงบันดาลใจจาก Google Zanzibar สำหรับการสร้างและจัดการการอนุญาตแอปพลิเคชันที่มีความสำคัญต่อความปลอดภัย
- (Golang) Keto - ฐานข้อมูลโอเพ่นซอร์สที่ได้รับแรงบันดาลใจจาก Google Zanzibar, gRPC, REST APIs, newSQL และภาษาการอนุญาตที่ง่ายและละเอียด รองรับ ACL, RBAC
ฐานข้อมูลเชิงวิเคราะห์
- (C++) BaikalDB เป็นฐานข้อมูลที่เข้ากันได้กับ HTAP MySQL แบบกระจาย ซึ่งออกแบบมาสำหรับขนาดเพตะไบต์
- (Golang) AresDB - พื้นที่เก็บข้อมูลการวิเคราะห์แบบเรียลไทม์และกลไกสืบค้นที่ขับเคลื่อนด้วย GPU
เวกเตอร์
- (สนิม) Qdrant - เครื่องมือค้นหาความคล้ายคลึงของเวกเตอร์และฐานข้อมูลเวกเตอร์
- (Golang) milvus - ฐานข้อมูลเวกเตอร์โอเพ่นซอร์สที่สร้างขึ้นเพื่อขับเคลื่อนการค้นหาความคล้ายคลึงและแอปพลิเคชัน AI
- (Golang) Weaviate - ฐานข้อมูลเวกเตอร์โอเพ่นซอร์สที่เก็บทั้งวัตถุและเวกเตอร์
- (Golang) tobias-mayer/vector-db - ฐานข้อมูลเวกเตอร์อย่างง่ายที่สามารถใช้ค้นหาเวกเตอร์ที่คล้ายกันในเวลาลอการิทึม
- (สนิม) DANNY - ฐานข้อมูลเวกเตอร์แบบกระจายอำนาจสำหรับการสร้างแอปพลิเคชันการค้นหาเวกเตอร์
เกตเวย์
- (Golang) Glide - เกตเวย์ LLM/โมเดลที่รวดเร็วและเชื่อถือได้แบบเปิดสำหรับการพัฒนาแอป GenAI อย่างรวดเร็ว
- (Golang) Traefik - พร็อกซีแอปบนคลาวด์
- (Lua) Kong - เกตเวย์ API ที่มีคุณสมบัติหลากหลายบนคลาวด์
- (Golang) Skipper - เราเตอร์ HTTP และพร็อกซีย้อนกลับสำหรับองค์ประกอบบริการ
- (Golang) janus - เกตเวย์ API แบบน้ำหนักเบาและแพลตฟอร์มการจัดการ
- (Golang) Lura - เกตเวย์ API ประสิทธิภาพสูงพร้อมมิดเดิลแวร์
- (Python) MLFlow Gateway - พร็อกซี LLM
การล็อค
- (Golang) ฯลฯ - กระจายการจัดเก็บคีย์-ค่าที่เชื่อถือได้สำหรับข้อมูลที่สำคัญที่สุดของระบบแบบกระจาย [Raft + gRPC]
- (Java) Apache Zookeeper - การประสานงานแบบกระจายที่เชื่อถือได้สูง
- (Golang) chubby - การใช้งาน Chubby ซึ่งเป็นบริการล็อคแบบกระจายของ Google (แบบง่ายมาก)
สตรีมมิ่ง
- (Java) Kafka - แพลตฟอร์มสตรีมเหตุการณ์แบบกระจาย ปรับขนาดได้สูง ยืดหยุ่น ทนทานต่อข้อผิดพลาด และปลอดภัย
- (Python) faust - ไลบรารีการประมวลผลสตรีมแบบกระจายที่พอร์ตแนวคิดจาก Kafka Streams ไปยัง Python
- (Golang) Liftbridge - สตรีมข้อความน้ำหนักเบาและทนทานต่อข้อผิดพลาดโดยการใช้การเพิ่มสตรีมที่คงทนสำหรับระบบส่งข้อความ NATS
- (Rust) RisingWave - ฐานข้อมูล SQL แบบกระจายสำหรับการประมวลผลสตรีม ออกแบบมาเพื่อลดความซับซ้อนและต้นทุนในการสร้างแอปพลิเคชันแบบเรียลไทม์
ผู้วางกำหนดการ
- (Golang) dkron - ระบบการจัดตารางเวลางานแบบกระจายและทนทานต่อข้อผิดพลาดสำหรับสภาพแวดล้อมแบบคลาวด์เนทีฟ
- (Python) Celery - คิวงานแบบกระจาย
- (Python) Apache Airflow - แพลตฟอร์มสำหรับเขียน กำหนดเวลา และติดตามเวิร์กโฟลว์โดยทางโปรแกรม
คิว
- (Golang) nsq - แพลตฟอร์มการส่งข้อความแบบกระจายที่ทนต่อข้อผิดพลาดแบบเรียลไทม์ซึ่งออกแบบมาเพื่อทำงานในระดับขนาดใหญ่ จัดการข้อความนับพันล้านข้อความต่อวัน [Raft + gRPC]
- (Golang) Sandglass - คิวข้อความแบบกระจาย, ปรับขนาดแนวนอน, ต่อเนื่อง, เรียงลำดับเวลา
- (Golang) dnpipes - เวอร์ชันกระจายของ Unix ที่มีชื่อไปป์เทียบได้กับ AWS SQS
- (PHP) GatewayWorker - เฟรมเวิร์กการส่งข้อความแบบเรียลไทม์แบบกระจายตามคนงาน
- (C++) ZeroMQ - การสร้างคิวข้อความแบบอะซิงโครนัส รูปแบบการส่งข้อความหลายรูปแบบ การกรองข้อความ (การสมัครรับข้อมูล) การเข้าถึงโปรโตคอลการขนส่งหลายรายการอย่างราบรื่น และอื่นๆ
- (Java) Apache Pulsar - แพลตฟอร์มการส่งข้อความ pub-sub แบบกระจายพร้อมโมเดลการส่งข้อความที่ยืดหยุ่นมากและ API ไคลเอนต์ที่ใช้งานง่าย
- (Java) Apache ActiveMQ - ตัวรับส่งข้อความที่ได้รับลิขสิทธิ์ Apache 2.0 ประสิทธิภาพสูง
เครื่องมือค้นหา
- (Java) ElasticSearch - เอ็นจิ้นการค้นหาและการวิเคราะห์แบบกระจายและสงบ
- (Java) Apache Lucene - ไลบรารี่เครื่องมือค้นหาข้อความที่มีคุณสมบัติครบถ้วนและมีประสิทธิภาพสูง
- (สนิม) MeiliSearch - เครื่องมือค้นหาที่เร็วปานสายฟ้า มีความเกี่ยวข้องเป็นพิเศษ และทนต่อการพิมพ์ผิด
- (JS) FlexSearch - ไลบรารีการค้นหาข้อความแบบเต็มที่ยืดหยุ่นในหน่วยความจำ
- (Golang) RiotSearch - เครื่องมือค้นหาข้อความแบบเต็มแบบกระจาย เรียบง่าย และมีประสิทธิภาพ
- (C++) Typesense - เครื่องมือค้นหาที่รวดเร็ว ทนทานต่อการพิมพ์ผิด และคลุมเครือ
- (สนิม) Sonic - แบ็กเอนด์การค้นหาที่รวดเร็ว น้ำหนักเบา และไม่มีสคีมา ทางเลือกอื่นของ Elasticsearch ที่ทำงานบน RAM ไม่กี่ MB
ระบบไฟล์
- (Golang) JuiceFS - ระบบไฟล์ POSIX ประสิทธิภาพสูงที่เข้ากันได้กับ AWS S3 ที่เข้ากันได้กับ Hadoop
- (Golang) SeaweedFS - ระบบไฟล์แบบกระจายที่ปรับขนาดได้สูงที่เข้ากันได้กับ Hadoop ที่เข้ากันได้กับ AWS S3
- (C) GlusterFS - พื้นที่จัดเก็บข้อมูลแบบกระจายที่สามารถขยายขนาดได้หลายเพตะไบต์
- (C++) GlusterFS - ระบบไฟล์แบบกระจายที่เชื่อถือได้สูง ปรับขนาดได้ และมีประสิทธิภาพ โดยจะกระจายข้อมูลไปยังเซิร์ฟเวอร์จริงจำนวนหนึ่ง ทำให้ผู้ใช้ปลายทางมองเห็นได้ในระบบไฟล์เดียว
การค้นพบบริการ
- นักสืบ (Golang) - การค้นพบอัตโนมัติแบบ peer-to-peer แบบไม่ต้องเชี่ยวชาญและ RPC ระหว่างบริการ HTTP ที่อยู่บนเครือข่ายเดียวกัน
การประมวลผลข้อมูล
- (Scala) Apache Spark - เครื่องมือวิเคราะห์แบบครบวงจรสำหรับการประมวลผลข้อมูลขนาดใหญ่
ปลายทางDB
- (Prolog) terminusdb - ฐานข้อมูลแบบกระจายพร้อมโมเดลการทำงานร่วมกัน
ระบบปฏิบัติการ
- (C) HarveyOS - ระบบปฏิบัติการแบบกระจาย
กรอบงาน
- (Golang) ฯลฯ - กรอบงานสำหรับการพัฒนาระบบแบบกระจาย จัดเตรียมข้อกำหนดหลักสำหรับการพัฒนาระบบแบบกระจาย รวมถึง RPC และการสื่อสารที่ขับเคลื่อนด้วยเหตุการณ์
- (Golang) ergo - ท่าเรือ Erlang/OTP เข้าใกล้ใน Golang
- (Golang) gosiris - กรอบนักแสดงสำหรับ Golang
- (Python) cotyledon - กรอบงานสำหรับกำหนดบริการระยะยาว โดยให้การจัดการสัญญาณ Unix, การวางไข่ของคนงาน, การควบคุมดูแลกระบวนการลูก, การโหลด daemon ใหม่, การแจ้งเตือนแบบ SD, การจำกัดอัตราการวางไข่ของคนงาน และอื่นๆ
- (Java) atomix - เฟรมเวิร์กที่มีคุณลักษณะครบถ้วนสำหรับการสร้างระบบแบบกระจายที่ทนทานต่อข้อผิดพลาด [REST + Raft]
- (Kotlin) orbit - กรอบงานนักแสดงเสมือนสำหรับการสร้างระบบแบบกระจาย
- (JS) hemera - ชุดเครื่องมือไมโครเซอร์วิส Node.js สำหรับระบบส่งข้อความ NATS [RPC]
- (Python) Tooz - การรวมศูนย์ดั้งเดิมแบบกระจายที่พบบ่อยที่สุด เช่น โปรโตคอลการเป็นสมาชิกกลุ่ม บริการล็อค และการเลือกตั้งผู้นำ โดยการจัดหา API การประสานงานที่ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันแบบกระจาย
- (C++) Nebula - เฟรมเวิร์กอันทรงพลังสำหรับการสร้างแอปพลิเคชันที่ขับเคลื่อนด้วยข้อความพร้อมกัน กระจาย และยืดหยุ่นสูง
- (GoLang) Service Weaver - เฟรมเวิร์กที่อนุญาตให้เขียนแอปพลิเคชันเป็นไบนารี่แบบโมดูลาร์และปรับใช้เป็นชุดไมโครเซอร์วิส
- (GoLang) Dapr - รันไทม์แบบพกพา ไร้เซิร์ฟเวอร์ ขับเคลื่อนด้วยเหตุการณ์ ซึ่งทำงานเป็นผู้ช่วยและทำให้นักพัฒนาสามารถสร้างไมโครเซอร์วิสที่ยืดหยุ่น ไร้สถานะ และเก็บสถานะได้ง่าย
ส่วนประกอบ
- (Golang) Dragonboat - ไลบรารีฉันทามติ Raft หลายกลุ่มที่มีประสิทธิภาพสูงใน Go ล้วนๆ
- (Golang) Golimit - ตัวจำกัดอัตราแบบกระจายและกระจายอำนาจตาม Ringpop ของ Uber
- (Python) Tenacity - ไลบรารี่สำหรับการลองซ้ำทั่วไป
- (Elixir) ex_hash_ring - การใช้แฮชริงที่สอดคล้องกันของ Elixir บริสุทธิ์โดยอิงจาก C hash-ring lib ที่ยอดเยี่ยม
- (Elixir) แพ - แพฉันทามติดำเนินการ
- (C++) NuRaft - การใช้งานแพที่ได้มาจากโครงการหลักสำคัญ
- (Python) Hyx - พื้นฐานการทนทานต่อข้อผิดพลาดแบบน้ำหนักเบาสำหรับไมโครเซอร์วิส Python ที่ยืดหยุ่นและทันสมัยของคุณ
- (Python) Migdalor - การค้นพบเพียร์ดั้งเดิมของ Kubernetes สำหรับโหนด Python asyncio
- (Golang) skiklist - การใช้งาน Golang ของโครงสร้างข้อมูล skilllist
- (Java) Waltz - บันทึกการเขียนล่วงหน้าแบบกระจายตามองค์ประชุมสำหรับการจำลองธุรกรรม
แหล่งข้อมูลอื่นๆ
- ความสามารถในการปรับขนาดที่ยอดเยี่ยม - รายการเรื่องรออ่านเพื่อแสดงรูปแบบของระบบขนาดใหญ่ที่สามารถปรับขนาดได้ เชื่อถือได้ และมีประสิทธิภาพ
- Awesome-distributed-systems - รายการที่รวบรวมไว้เกี่ยวกับเนื้อหาที่ยอดเยี่ยมบนระบบแบบกระจาย
- Awesome-Database-Learning - รายการสื่อการเรียนรู้เพื่อทำความเข้าใจฐานข้อมูลภายใน
- (C/C++)(หนังสือ) สร้าง Redis ของคุณเองด้วย C/C++
- (C) (บทความ) การเขียนโคลน sqlite ตั้งแต่เริ่มต้นใน C
- Berkley CS186: ข้อมูลเบื้องต้นเกี่ยวกับระบบฐานข้อมูล
- MIT 6.830: ระบบฐานข้อมูล