PayPal如何通过JunoDB处理每天3500亿个请求

PayPal如何通过JunoDB处理每天3500亿个请求

💡 原文英文,约2400词,阅读约需9分钟。
📝

内容提要

JunoDB是PayPal用于各种应用程序的分布式键值存储。它提供可扩展性、高可用性、性能和安全性。JunoDB设计用于处理数十万个连接,并在PayPal每天提供近3500亿个请求。它用于缓存、幂等性、计数器和延迟桥接。JunoDB通过加密和TLS确保数据安全。它提供快速响应时间,并能够以6个九的可用性运行。

🔎

延伸解读

从C++到Go:多核支持的技术抉择

JunoDB最初是单线程C++程序,但PayPal需要多核支持以处理高并发连接。由于Redis等内存数据库无法充分利用多核,PayPal将JunoDB重写为Go,以发挥多核优势。这一转变使JunoDB能高效处理数十万连接,并支撑每天3500亿请求。技术选型需权衡性能与需求,Go的并发模型适合此类场景。

代理架构:简化客户端与避免单点故障

JunoDB采用代理架构,客户端通过代理与存储服务器交互,代理负责路由请求并感知分片映射。这简化了客户端库的复杂性,但代理可能成为单点故障。为此,代理部署多个实例并通过负载均衡分发请求,确保高可用性。这种设计在分布式系统中常见,但需注意代理层的扩展性和延迟影响。

法定人数协议:平衡一致性与可用性

JunoDB使用法定人数协议实现数据复制,要求读法定人数和写法定人数之和大于区域数,且写法定人数超过半数,以避免脏读和写冲突。生产环境中配置5个区域、读写法定人数均为3,确保强一致性。这种机制在分布式数据库中至关重要,但可能增加延迟,需根据业务需求调整。

安全设计:传输与静态加密

JunoDB通过TLS加密传输数据,并在客户端或代理层进行负载加密,存储服务器也加密所有数据。密钥管理模块负责证书和密钥轮换。这种端到端安全设计适合支付场景,但加密操作可能增加CPU负载,需在性能与安全间取得平衡。

❓

Q&A

JunoDB是什么类型的数据库?

JunoDB是PayPal的分布式键值存储。

JunoDB每天处理多少个请求?

JunoDB每天处理近3500亿个请求。

JunoDB如何确保数据安全?

JunoDB通过TLS加密和在存储过程中的数据加密确保数据安全。

JunoDB的可用性有多高?

JunoDB的可用性高达六个九(99.9999%),每天仅有86.40毫秒的停机时间。

JunoDB的主要用例有哪些?

JunoDB的主要用例包括缓存、幂等性、计数器和延迟桥接。

JunoDB是如何实现高可用性的?

JunoDB通过复制和故障转移策略来实现高可用性。

🏷️

标签

➡️

继续阅读