贝宝开通JunoDB DBMS代码

PayPal 已经开放了 JunoDB 的源代码,JunoDB 是一种以键值格式操作数据的容错 DBMS。 该系统最初的设计具有高安全性、水平可扩展性、容错能力以及处理数十万个同时连接的能力,并考虑到可预测的延迟。 在 PayPal 中,几乎所有服务,从用户登录到处理金融交易,都与 JunoDB 绑定。 项目代码是用 Go(Java 客户端库)编写的,并在 Apache 2.0 许可下分发。 在进一步的开发中,将接受来自社区的更正、改进和更改。

JunoDB 架构基于负载均衡器的使用,该负载均衡器接受来自客户端应用程序的请求并将它们分布在代理服务器之间,这些代理服务器在发出请求时同时访问一组存储服务器。 每个代理一次建立到所有存储服务器的连接,并根据存储在etcd配置的分布式存储系统中的分区索引将请求重定向到一组存储服务器。

贝宝开通JunoDB DBMS代码

数据被分区并使用散列绑定到存储节点,以减少集群中节点增长或收缩时的数据移动。 为确保容错性,每个部分的数据都被复制到多个存储节点上,这允许您在单个服务器发生故障时保存信息。 支持创建地理分布式存储,其中节点组位于不同的数据中心。

贝宝开通JunoDB DBMS代码

在存储节点上,数据放在内存中,或者基于 RocksDB 库放在本地存储中。 使用持久存储,数据以加密形式存储(加密密钥可以由客户端确定并在代理级别设置)。

贝宝开通JunoDB DBMS代码

为了从应用程序访问数据库,提供了一个客户端库,它为 Java、Go 和 C++ 中的应用程序提供 API。 客户端部分尽可能简化,复杂的逻辑和设置,如果可能的话,移到 DBMS 的一侧。 客户端与平衡器或代理之间的交互是通过加密的通信通道进行的。 您可以使用命令行界面来管理和发送请求,它模拟了客户端 API 的全部功能。

该系统旨在以可预测的低延迟处理请求,例如,由三个存储节点和一个代理组成的集群,由 n1-highmem-32 环境(32 个 Intel Xeon 2.30GHz CPU、214G RAM 和 450G SSD 存储)组成,在处理 2.5 万个并发 TLS 连接和每秒 95 万个请求流时(16 个并发连接和 99 万个请求流),能够在 200% 的情况下提供不超过 15 毫秒的固定延迟,在 3000% 的情况下提供不超过 80 毫秒的固定延迟每秒,延迟在 6% 的情况下不超过 95 毫秒,在 15% 的情况下不超过 99 毫秒)。 在 PayPal,基于 JunoDB 的服务每天处理大约 350 亿个请求。

贝宝开通JunoDB DBMS代码


来源: opennet.ru

添加评论