AMDC分布式缓存,Redis的无缝替换者原创
金蝶云社区-operamasks
operamasks
2人赞赏了该文章 521次浏览 未经作者许可,禁止转载编辑于2021年11月22日 15:03:40

一、产品简介

金蝶Apusic分布式缓存(Apusic In-Memory Data Cache,简称:AMDC)是一款高性能、高可用、可扩展的分布式缓存软件,提供数据缓存、缓存监控、智能部署等功能,为企业数据缓存能力发挥最大助力,并兼容Redis协议与持久化数据文件,实现简单快捷平稳替换Redis

二、功能&特色

  • 数据缓存

AMDC最核心的能力,是整个产品的中心,其他功能都是建立在数据缓存业务之上。AMDC把数据直接存到内存中,没有磁盘读写,并利用多线程读写分离,实现高效存储;支持丰富的数据类型,满足不同类型的数据存储需求,快捷开发,减少类型转换;更有多种数据删除策略,合理利用内存空间。数据缓存为高并发系统读取数据提供强大的并发访问能力,有效防止数据库因并发访问而崩溃的问题。

  • 持久化

通常来说,将数据放在内存中是不安全的,一旦发生断电或者机器故障,内存中的数据就会丢失,因此AMDC提供了两种持久化方式:RDBAOF,即可以用两种策略将内存的数据保存到硬盘中这样就保证了数据的可持久化,防止因故障而导致大量数据丢失。并在后续版本中提供持久化到数据库功能。

  • 高可用

AMDC提供了复制功能,实现了多个相同数据的AMDC副本,提高容错率;使用去中心化的集群管理架构,数据节点之间通过gossip协议通讯,用户访问集群中的任意数据节,请求都能路由到正确的节点;并且集群节点支持自动发现、故障探测、自动故障切换、数据搬迁等能力,极大降低运维成本。

  • 故障处理

AMDC集群能够实现故障探测,在某个节点下线后,通知整个集群的所有节点,并选出替补节点并进行切换,保证集群可用;自动发现重新上线的节点,将其置为备用节点;数据同样支持手动移动,执行相应的命令就可以将数据批量迁移至其他节点上,保证数据不丢失的同时也极大的简化了运维的工作。

  • 兼容Redis

AMDC兼容Redis协议,支持Redis的客户端语言也能够被AMDC所使用,几乎涵盖了主流的编程语言,例如JavaPHPPythonCC++Nodejs等。采用与Redis相同RDBAOF作为持久化文件,使AMDC能够同步Redis数据然后平稳替换。

  • 国产适配

AMDC适配基于国产兆芯、飞腾、鲲鹏等芯片的服务器和中标麒麟操作系统等。

  • 管控台

AMDC提供图形化管控界面,支持群组管理、集群监控、多渠道告警以及一键部署等。

三、应用场景

(一)缓存

这是AMDC使用最多的场景。AMDC能够替代Memcached。使用AMDC,不需要每次都重新生成数据,而且它的缓存速度和查询速度比较快,使用也比较方便。比如,实现数据查询、缓存新闻消息内容、缓存商品内容或购物车等。

(二)分布式锁

这个也是AMDC使用较多的场景。使用setnx setex两条命令的连用,可以依赖AMDC命令的原子性,实现分布式锁。

(三)计数器

AMDC的命令具有原子性,它提供了INCRDECRGETSETINCRBY等相关命令来构建计数器系统。可以使用 AMDC 来记录一个热门帖子的转发数、评论数。通过AMDC的原子递增,可以实现在任何时候封锁一个IP地址等。

(四)消息队列系统

AMDC 运行稳定,速度快,支持模式匹配,也可以实现消息订阅发布。AMDC还有阻塞队列的命令,能够让一个程序在执行时被另一个程序添加到队列中。比如,实现秒杀、抢购等。

(五)实时系统、消息系统

可以利用AMDCset功能做实时系统,来查看某个用户是否进行了某项操作,对其行为进行统计对比。也可以利用AMDCPub/Sub 构建消息系统,如在线聊天系统。

(六)实现排行榜应用

排行榜的实现利用了 AMDC 的有序集合。比如,对上百万个用户的排名,采用其他数据库来实现是非常困难的,而利用 AMDC ZADDZREVRANGEZRANK等命令可以轻松实现排名并获取排名的用户。

(七)数据过期处理

我们可以将sorted setscore值设置成过期时间的时间戳,然后通过过期时间排序,找出过期的数据进行删除。可以采用过期属性来确认一个关键字在什么时候应该被删除。也可以利用 UNIX 时间作为关键字,将列表按时间排序。对currenttimetimeto_live进行检索,查询出过期的数据,进而删除。

(八)分布式集群架构中的session分离

采用分布式集群部署,可以满足一个Web应用系统被大规模访问的需要。而要实现分布式集群部署,就要解决session统一的问题。通常可以采用AMDC来实现session共享机制,以达到session统一的目的。

日志收集

多点将日志信息写入AMDC队列后统一将所有日志写到磁盘。




赞 2