QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

PayPal 开源 JunoDB,支持 3500 亿次日请求的键值存储

  • 2023-06-24
    北京
  • 本文字数:1172 字

    阅读完需:约 4 分钟

PayPal开源JunoDB,支持3500亿次日请求的键值存储

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

 

JunoDB是用 Golang 编写的,采用了基于代理的设计,支持连接的线性横向扩展。它使用一致性哈希算法对数据进行分区,最大限度地减少了集群扩展或收缩时的数据移动。为了实现零停机,JunoDB 使用了数据中心内和跨数据中心复制,并通过基于仲裁的协议和两阶段提交确保数据一致性。PayPal 首席 MTS Yaping Shi写道:


实际上,PayPal 的每一个核心后端服务都依赖于 JunoDB,从登录到风险再到最终的交易处理。使用 JunoDB,应用程序可以有效地存储和缓存数据,以便在关系数据库和其他服务上快速访问以及降低负载。



图片来源:https://medium.com/paypal-tech/unlocking-the-power-of-junodb-paypals-key-value-store-goes-open-source-ee85f935bdc1

 

该数据库主要包含三个组件:JunoDB 客户端库(有面向不同语言的版本)、JunoDB 客户端代理(一个连接存储服务器并负责分片的负载平衡器),以及 JunoDB 存储(基于高性能嵌入式数据库RockDB,同时提供了内存和磁盘持久化存储)。

 

如果出现节点故障,那么它提供的自动化即时故障转移功能避免了集群领导的重新选举或数据的重新分配。

 

对于这个新的 NoSQL 解决方案,其建议的应用场景包括缓存、存储用户首选项、帐户详情和 API 响应等信息、幂等性(确保操作幂等并消除任何重复处理)和延迟桥接(帮助解决由跨区域的分布式数据库所造成的复制延迟)。Shi 介绍了该项目在 PayPal 内部的演进情况:


它最初是一个单线程的 C++程序,但后来,为了实现高并发和多核友好性,我们用 Golang 进行了重写。JunoDB 还从一个短 TTL(生存时间)的内存数据存储演变为一个支持长 TTL 的持久数据存储。默认情况下,它通过磁盘加密和 TLS 传输来提升数据的安全性。

 

Mercado Libre 高级软件工程师 Nahim Felicito Gomez评论道:


使用 Golang 重写 JunoDB,PayPal 充分利用了该语言的并发性和多核能力,那也是 Golang 成为构建 JunoDB 客户端库的理想选择的原因。

 

Hacker News上,许多用户讨论了该项目及键值存储的好处,并将 JunoDB 与FoundationDB等其他数据库进行了比较,而用户 gregwebs 则质疑公告中缺乏数据:


如果能看到一些基准测试,或者只是提供一些数据,那就太好了。TiKV是 CNCF 捐赠的项目,具有大致相同的架构,并已部署在超过 200 个节点的大型集群中。

 

JunoDB 是GitHub上的一个开源项目,遵循 Apache 2 许可。为了帮助开发人员有效地使用该数据库,PayPal 发布了服务器设置客户端构建视频教程。该项目的路线图上还包括 Golang 客户端和 Kubernetes JunoDB 操作符。

 

原文链接:

https://www.infoq.com/news/2023/06/paypal-junodb-kv-store/


相关阅读:

Skyscanner 数据文化的改进之道

DevSecOps,将安全性集成到软件开发的每一个阶段

零拷贝技术升级,V6D 让数据传输更高效

2023-06-24 08:004637

评论 1 条评论

发布
用户头像
如果已经存储10亿条数据在内了,一天存取3500亿还是可以的,如果本身10条数据,任何一个循环存储本地map对象都比这个快。。。。。
2023-08-01 21:36 · 广东
回复
没有更多了
发现更多内容

Week 4学习总结

balsamspear

极客大学架构师训练营

如何基于消息中间件实现分布式事务?我想说的都在这儿了!!

冰河

分布式事务 微服务 分布式数据库 数据一致性 海量数据

架构师训练营第 2 期第一周作业

井中人

架构师训练营第2期-第一周-学习总结

井中人

一致性 hash

garlic

极客大学架构师训练营

听说你会缓存?

架构师修行之路

redis 缓存 微服务

数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库

华为云开发者联盟

安全 数据 加密

Java中String占用空间的评估标准

陈德伟

Java jdk 源码剖析

关于编码

西贝

Java 编码

Java中的String到底占用多大的内存空间?你所了解的可能都是错误的!!

冰河

Java 内存泄露 string 性能调优 内存溢出

在K8S Volume中使用 subPath

东风微鸣

Kubernetes 最佳实践

终于,SM2国密算法被Linux内核社区接受了!

阿里云基础软件团队

大明湖畔昇腾绽放,趵突泉里智能奔涌

脑极体

容器化应用系统上生产的最佳实践

东风微鸣

Kubernetes 最佳实践 生产

食堂就餐卡系统设计

Griffenliu

epoll服务器解析

菜鸟小sailor 🐕

Vidyo产品给用户方带来了什么直接的便利

dwqcmo

音视频 集成架构 解决方案 智能硬件

商用密码与区块链共推数字经济发展

CECBC

网络安全 数字经济

区块链赋能供应链金融|应用优势与四类常见模式

CECBC

区块链

谁说AI看不懂视频?

华为云开发者联盟

视频 剪辑

小熊派开发实践丨漫谈LiteOS之传感器移植

华为云开发者联盟

开发 IoT stm32

设计数据库集群读写分离并非易事

架构师修行之路

分布式 微服务

Week 4命题作业

balsamspear

极客大学架构师训练营

socket编程

菜鸟小sailor 🐕

websocket

为什么Java容器推荐使用ExitOnOutOfMemoryError而非HeapDumpOnOutOfMemoryError?

东风微鸣

Kubernetes 最佳实践 jvm调优

如果只推荐一本 Python 书,我要 Pick 它!

Python猫

Python 学习 编程 程序员 码农

一文读懂线程池的工作原理(故事白话文)

捡田螺的小男孩

Java 面试 线程池 线程池工作原理

容器开发运维人员的Linux操作机配置优化建议

东风微鸣

Kubernetes 最佳实践 k8s入门

微服务的理想与现实

京东科技开发者

云原生

mongodb源码实现、调优、最佳实践系列-Mongodb网络模块源码实现及性能调优(一)

杨亚洲(专注MongoDB及高性能中间件)

MySQL mongodb 中间件 架构师 分布式数据库mongodb

二十一、深入Python强大的装饰器

刘润森

Python

PayPal开源JunoDB,支持3500亿次日请求的键值存储_数据库_Renato Losio_InfoQ精选文章