JunoDB:PayPal开源每日处理3500亿请求的键值存储引擎

PayPal开源JunoDB

PayPal最近开源了JunoDB,这是一个分布式键值存储数据库,使用RocksDB作为底层存储引擎。JunoDB是一个高可用且注重安全性的数据库,每天在PayPal处理3500亿次请求。

JunoDB的技术架构

JunoDB采用基于代理的架构,支持线性水平扩展。数据库使用一致性哈希来分区数据,并在集群扩展或缩小时最小化数据移动。为了实现零停机,JunoDB采用了数据中心内和跨数据中心的复制机制,并通过基于多数表决的协议和两阶段提交确保数据一致性。

JunoDB的主要组件

JunoDB包含三个主要组件:

  1. JunoDB客户端库:支持多种编程语言。
  2. JunoDB客户端代理:作为负载均衡器,与存储服务器连接并负责分片。
  3. JunoDB存储:由高性能嵌入式数据库RocksDB提供支持,支持内存和磁盘持久化存储。

JunoDB的特点

  1. 高可用性:在节点故障时,自动且即时的故障转移无需重新选举或数据重新分配。
  2. 数据安全:默认支持磁盘加密和传输层安全性(TLS)。
  3. 多核友好:JunoDB从最初的单线程C++程序重写为高度并发的Golang程序,充分利用了Golang的并发和多核能力。

应用场景

JunoDB适用于多种场景,包括:

  • 缓存
  • 存储用户偏好、账户详情和API响应
  • 幂等性处理,确保操作幂等并消除重复处理
  • 延迟桥接,解决地理分布式数据库的复制延迟问题

开发与社区反馈

JunoDB最初是一个单线程的C++程序,后来被重写为Golang程序,以支持高并发和多核处理。Mercado Libre的高级软件工程师Nahim Felicito Gomez指出,PayPal通过重写JunoDB充分利用了Golang的并发和多核能力。

在Hacker News上,用户们讨论了JunoDB的优势,并将其与其他数据库如FoundationDB和TiKV进行了比较。用户gregwebs提到,公告中缺乏性能数据,建议提供基准测试结果。

开源与未来计划

JunoDB已在GitHub上以Apache 2许可证开源。PayPal发布了服务器设置和客户端构建的教程视频,帮助开发者有效使用该数据库。未来计划包括开发Golang客户端和Kubernetes的JunoDB操作符。

阅读 61
0 条评论