PayPal が JunoDB DBMS コードをオープンしました

PayPalは、キーと値の形式でデータを操作するフォールトトレラントDBMS JunoDBのソースコードを公開した。 このシステムは当初、高いセキュリティ、水平方向のスケーラビリティ、フォールト トレランス、および予測可能な遅延を念頭に置いて数十万の同時接続を処理できる機能を備えて設計されました。 PayPal では、ユーザーのログインから金融取引の処理に至るまで、ほぼすべてのサービスが JunoDB に関連付けられています。 プロジェクト コードは Go (Java クライアント ライブラリ) で書かれており、Apache 2.0 ライセンスに基づいて配布されます。 今後の開発では、コミュニティからの修正、改善、変更が受け入れられます。

JunoDB のアーキテクチャは、クライアント アプリケーションからリクエストを受け取り、リクエストの実行時にストレージ サーバーのグループに同時にアクセスするプロキシ サーバー間でリクエストを分散するロード バランサーの使用に基づいています。 各プロキシ サーバーは、すべてのストレージ サーバーへの接続を一度に確立し、分散ストレージ システムの etcd 構成に保存されているパーティション インデックスに基づいてリクエストをストレージ サーバーのグループに転送します。

PayPal が JunoDB DBMS コードをオープンしました

データはパーティション化され、ハッシュを使用してストレージ ノードにリンクされます。これにより、クラスター内のノードの拡大または縮小に伴うデータの移動が削減されます。 フォールト トレランスを確保するために、各データは複数のストレージ ノードに複製されるため、個々のサーバーに障害が発生した場合でも情報を保存できます。 ノードのグループが異なるデータセンターに配置される、地理的に分散されたストレージの作成がサポートされています。

PayPal が JunoDB DBMS コードをオープンしました

データ ストレージ ノードでは、RocksDB ライブラリに基づいて RAM またはローカル ストレージに配置されます。 永続的に保存される場合、データは暗号化された形式で保存されます (暗号化キーはクライアントによって決定されるか、プロキシ レベルで設定できます)。

PayPal が JunoDB DBMS コードをオープンしました

アプリケーションからデータベースにアクセスするために、Java、Go、および C++ のアプリケーション用の API を提供するクライアント ライブラリが提供されます。 クライアント部分は可能な限り簡素化され、複雑なロジックや設定は可能な限り DBMS 側に転送されます。 クライアントとバランサーまたはプロキシ間の対話は、暗号化された通信チャネルを通じて実行されます。 リクエストを管理および送信するには、クライアント API のすべての機能を複製するコマンド ライン インターフェイスを使用できます。

このシステムは、予測可能な低レイテンシでリクエストを処理するように設計されています。たとえば、n1-highmem-32 環境 (32 個の Intel Xeon 2.30GHz CPU、214G RAM、および 450G SSD ベースのストレージ) で構成される 2.5 つのストレージ ノードと 95 つのプロキシからなるクラスターです。 16 の同時 TLS 接続と 99 秒あたり 200 のリクエストのフローを処理する場合 (同時接続が 15 で 3000 のリクエストのフローの場合)、80% のケースで 6 ミリ秒を超えない固定遅延、95% のケースで 15 ミリ秒を超えない固定遅延を提供できました。 99 秒あたりの遅延は、350% のケースで XNUMX ミリ秒を超えず、XNUMX% のケースで XNUMX ミリ秒を超えませんでした)。 PayPal では、JunoDB ベースのサービスが XNUMX 日あたり約 XNUMX 億のリクエストに対応しています。

PayPal が JunoDB DBMS コードをオープンしました


出所: オープンネット.ru

コメントを追加します