PayPal đã mở mã JunoDB DBMS

PayPal đã mở mã nguồn cho JunoDB, một DBMS chịu lỗi để thao tác dữ liệu ở định dạng khóa-giá trị. Hệ thống ban đầu được thiết kế với tính bảo mật cao, khả năng mở rộng theo chiều ngang, khả năng chịu lỗi và khả năng xử lý hàng trăm nghìn kết nối đồng thời với độ trễ có thể dự đoán trước. Trong PayPal, hầu hết tất cả các dịch vụ, từ đăng nhập của người dùng đến xử lý các giao dịch tài chính, đều được gắn với JunoDB. Mã dự án được viết bằng Go (thư viện máy khách Java) và được phân phối theo giấy phép Apache 2.0. Trong quá trình phát triển hơn nữa, những chỉnh sửa, cải tiến và thay đổi từ cộng đồng sẽ được chấp nhận.

Kiến trúc JunoDB dựa trên việc sử dụng bộ cân bằng tải chấp nhận yêu cầu từ ứng dụng khách và phân phối chúng giữa các máy chủ proxy truy cập đồng thời vào một nhóm máy chủ lưu trữ khi có yêu cầu. Mỗi proxy thiết lập kết nối đến tất cả các máy chủ lưu trữ cùng một lúc và chuyển hướng yêu cầu đến một nhóm máy chủ lưu trữ dựa trên chỉ mục phân vùng được lưu trữ trong hệ thống lưu trữ phân tán của cấu hình etcd.

PayPal đã mở mã JunoDB DBMS

Dữ liệu được phân vùng và liên kết với các nút lưu trữ bằng cách sử dụng hàm băm để giảm chuyển động dữ liệu khi các nút phát triển hoặc thu nhỏ trong một cụm. Để đảm bảo khả năng chịu lỗi, mỗi phần dữ liệu được sao chép trên một số nút lưu trữ, cho phép bạn lưu thông tin khi các máy chủ riêng lẻ bị lỗi. Việc tạo các kho lưu trữ phân tán theo địa lý được hỗ trợ, trong đó các nhóm nút được đặt ở các trung tâm dữ liệu khác nhau.

PayPal đã mở mã JunoDB DBMS

Trên các nút lưu trữ, dữ liệu được đặt trong RAM hoặc trong bộ nhớ cục bộ dựa trên thư viện RocksDB. Với lưu trữ liên tục, dữ liệu được lưu trữ ở dạng mã hóa (khóa mã hóa có thể được xác định bởi cả máy khách và được đặt ở cấp độ proxy).

PayPal đã mở mã JunoDB DBMS

Để truy cập cơ sở dữ liệu từ các ứng dụng, một thư viện máy khách được cung cấp cung cấp API cho các ứng dụng trong Java, Go và C++. Phần máy khách được đơn giản hóa hết mức có thể, logic và cài đặt phức tạp, nếu có thể, được chuyển sang một bên của DBMS. Sự tương tác giữa máy khách và bộ cân bằng hoặc proxy được thực hiện thông qua một kênh liên lạc được mã hóa. Bạn có thể sử dụng giao diện dòng lệnh để quản lý và gửi yêu cầu, bắt chước toàn bộ chức năng của API máy khách.

Hệ thống được thiết kế để xử lý các yêu cầu với độ trễ thấp có thể dự đoán được, ví dụ: một cụm gồm ba nút lưu trữ và một proxy, được hình thành từ môi trường n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, RAM 214G và bộ lưu trữ dựa trên SSD 450G), có thể cung cấp độ trễ cố định không vượt quá 2.5 mili giây trong 95% trường hợp và 16 mili giây trong 99% khi xử lý 200 nghìn kết nối TLS đồng thời và luồng 15 nghìn yêu cầu mỗi giây (với 3000 kết nối đồng thời và luồng 80 nghìn yêu cầu mỗi giây, độ trễ không vượt quá 6 ms trong 95% trường hợp và 15 ms trong 99%). Tại PayPal, các dịch vụ dựa trên JunoDB phục vụ khoảng 350 tỷ yêu cầu mỗi ngày.

PayPal đã mở mã JunoDB DBMS


Nguồn: opennet.ru

Thêm một lời nhận xét