【创新项目探索】openAMDC一种高性能的分布式缓存软件

文摘   2024-10-10 19:50   广东  

openAMDC介绍

openAMDC(open Advance Memory Data Cache)是深圳市金蝶天燕云计算股份有限公司开发的高性能的分布式缓存软件,目前已在OpenAtom openEuler,简称“openEuler”社区开源。该软件主要用于在内存中存储、缓存数据,起到消息代理、内存数据库的作用。openAMDC提供丰富的缓存失效策略,支持Strings、Lists、Hashes、Sets和Ordered Sets等数据类型,支持Java、PHP、Python、C、C++和Nodejs等客户端,内置高性能Key-value数据库,支持发布/订阅,支持数据持久化,支持去中心化的集群,集群节点支持自动发现、故障探测、自动故障切换、数据搬迁等能力。

架构特点

1. 多线程架构
通过使用SO_REUSEPORT选项与多线程结合,允许多个线程绑定相同的端口号,充分利用CPU多核资源,提高系统的整体性能,解决了同类软件的共享listen socket的资源争抢的问题,同时实现了并发和数据一致性、worker线程中的不同类型定时任务合理划分。
2. 冷热数据交换
在多线程架构的基础上扩展多级数据存储和交换功能,实现openAMDC数据冷热多级存储,并利用外部的数据库扩展存储空间,在近乎不影响性能的前提下,大幅降低缓存的综合使用成本。

性能对比

openAMDC兼容RESPv2/v3协议,支持所有Redis操作指令以及数据结构,可平滑替换Redis。
  • 在多线程基准测试下相比Redis 6.0性能提高2~3倍
  • 平均响应延迟最高降低至30%

使用场景

1.  金融交易系统时交易数据缓存
在金融交易系统中,对交易数据的实时性要求非常高。可以使用缓存交易数据,如股票价格、交易订单、账户余额等。
2.  社交网络平台在线状态跟踪
在社交网络中,用户的在线状态是一个重要的信息。例如,可以使用缓存的集合(Set)数据结构来存储在线用户的 ID,当用户登录或退出时,相应地添加或移除用户ID到集合中。
3.  设备状态监测
在物联网应用中,需要实时监测大量设备的状态。可以使用缓存来存储设备的状态信息,如传感器数据、设备连接状态、运行参数等。

后续规划

本项目已开源在openEuler社区Bigdata SIG,计划中的开发:
  • 实现OpenAMDC与rocksDB之间的SWAP机制
  • 与rocksDB之间的SWAP机制覆盖所有类型数据
  • 完善管理端能力
欢迎访问和使用:
https://gitee.com/openeuler/openAMDC

OpenAtom openEuler
openEuler是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目。 openEuler 面向数字基础设施的操作系统。
 最新文章