Press "Enter" to skip to content

Paypal 开源 JunoDB 分布式键值存储

Paypal 开源 JunoDB 分布式键值存储 AI 新闻 第1张Paypal 开源 JunoDB 分布式键值存储 AI 新闻 第2张

Paypal最近开源了JunoDB,这是一个建立在RocksDB之上的分布式键值存储。每天,PayPal的高可用性和安全性数据库JunoDB处理着3500亿个请求。

PayPal的各种应用程序严重依赖于JunoDB这个分布式键值存储。JunoDB被用于PayPal的几乎所有关键后端服务,包括身份验证、风险评估和交易结算。使用JunoDB可以缓存数据,并快速访问应用程序,减轻后端服务和关系型数据库的压力。但是,JunoDB并不是一个普通的NoSQL数据库。它是为了满足PayPal的特定要求而开发的。因此,它可以同时处理许多并发用户和连接,而不会降速。最初是使用单线程C++构建的,现已重写为Golang,以利用并行处理和多核。

JunoDB的架构是一个可靠且可扩展的系统,优先考虑易用性、可扩展性、安全性和灵活性。基于代理的设计通过从应用程序中抽象出复杂的逻辑和设置,使开发变得简单,并允许线性水平连接扩展。在扩展或收缩集群时,JunoDB使用一致性哈希来分割数据,并减少必须移动的数据量。JunoDB使用基于法定人数的协议和两阶段提交来保证数据一致性,并确保数据库永远不会停机。

保护信息在传输和静止时是高优先级的。因此,JunoDB实现了TLS支持和有效载荷加密。最后,JunoDB的灵活性和适应性通过其可插拔的存储引擎设计得到保证,这使得它可以轻松地转换到新的存储技术。

JunoDB的核心由三个相互依赖的部分组成:

  1. JunoDB代理通过提供的JunoDB客户端库的API,允许应用程序数据轻松地存储、检索和更新。 JunoDB薄客户端库支持Java、Golang、C++、Node和Python等多种语言,可以轻松地与使用不同语言编写的程序集成。
  2. 负载均衡器控制的JunoDB代理实例处理来自远程站点的客户端查询和复制流量。每个代理与所有JunoDB存储服务器实例建立连接,并根据存储映射存储在ETCD中的碎片路由请求到一组存储服务器实例。
  3. 当接收到代理的操作请求时,JunoDB使用RocksDB将数据存储在内存或持久存储器中。

JunoDB在支持许多客户端连接的同时保持高可用性和系统响应能力。此外,它还管理数据扩展,并在数据量和访问率上升时保持高读写吞吐量。为了实现六个9的系统可用性,JunoDB使用了多种解决方案,包括数据复制在数据中心内外和故障转移机制。

JunoDB在规模上提供了出色的性能,即使在最密集的工作负载下也能以毫秒级的响应时间管理,而不会影响用户体验。此外,JunoDB提供高吞吐量和低延迟,使应用程序能够在不影响性能的情况下线性扩展。

用户可以在GitHub上获取JunoDB的源代码,该源代码已在Apache 2许可下发布。PayPal制作了服务器配置和客户端开发教程视频,以帮助开发人员使用数据库。该团队计划在未来包括一个Golang客户端和一个Kubernetes的JunoDB操作员。

Leave a Reply

Your email address will not be published. Required fields are marked *