PayPal开源JunoDB
PayPal最近开源了JunoDB,这是一个分布式键值存储数据库,使用RocksDB作为底层存储引擎。JunoDB是一个高可用且注重安全性的数据库,每天在PayPal处理3500亿次请求。
JunoDB的技术架构
JunoDB采用基于代理的架构,支持线性水平扩展。数据库使用一致性哈希来分区数据,并在集群扩展或缩小时最小化数据移动。为了实现零停机,JunoDB采用了数据中心内和跨数据中心的复制机制,并通过基于多数表决的协议和两阶段提交确保数据一致性。
JunoDB的主要组件
JunoDB包含三个主要组件:
- JunoDB客户端库:支持多种编程语言。
- JunoDB客户端代理:作为负载均衡器,与存储服务器连接并负责分片。
- JunoDB存储:由高性能嵌入式数据库RocksDB提供支持,支持内存和磁盘持久化存储。
JunoDB的特点
- 高可用性:在节点故障时,自动且即时的故障转移无需重新选举或数据重新分配。
- 数据安全:默认支持磁盘加密和传输层安全性(TLS)。
- 多核友好: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操作符。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。