缓存技术方案改造思考

简介:

这是我对一个正在进行的重构项目,缓存技术方案改造点之一的一个想法:
rc现有的实时缓存(其实也是准实时,失效时间的存在)设计:
1
存在的问题:现有的实时缓存方案(也并非真正意义上的实时,缓存失效时间的存在),与上游核心系统耦合度较高,核心系统强依赖下游欠核心系统,而且目前的查询服务性能也存在问题,比如区域销售豆腐块接口返回的数据量大,并且从tair->rc,rc->delivery需要经过两次网络传输,这之间网络传输及序列化、反序列化消耗大,而且出现问题时,由于排查链路和时间周期都长;

升级方案的的思考:解耦上游核心系统(如delivery)与资源中心的HSF服务,rc维护数据库数据与tair(ldb)集群数据的一致性(准实时),外部系统的查询直连tair(ldb),不走rc的HSF服务,实现rc系统的读写分离,初步设计如下:
2
这里之所以选择ldb是因为它tair持久化的存储引擎,使用ssd盘存储数据,保证了数据的安全不丢失,并且读写性能远远高于db;
借助TTD中间件指定一台机器运行定时任务,定时任务将db中上一次定时任务结束到这一定时任务开始前变化的数据,从数据库中筛选出来,根据这些数据匹配列表ldb对应中key,针对每一个value值变化的key都去db中捞出key对应的新value值,然后invalid 目前ldb中的value,然后将新value put到ldb中,这样就维护了,数据库与ldb数据的一致性;
rc的读client(如delivery)需要前置mdb缓存从ldb中拿到的数据(访问量巨大的话,如不做mdb缓存,ldb压力很大),查询的时候首先去查询mdb,若有数据,则直接返回,若没有再去查询ldb,在这个设计中,读client不需要调用任何rc的查询服务,rc应用只是负责db与ldb数据的一致性,实现了读client与rc的解耦,上游的如delivery这样核心系统不再需要依赖下游的欠核心的rc系统,交易链路精简;
这个设计存在的问题:还没法做到完全的实时(定时间隔的存在),选择一个较为合理的定时间隔,平衡系统解耦的好处与实时查询的牺牲,实现准实时的系统解耦,还是值得的;
各位看到此文章的大牛,请帮忙评估一下此改造方案的可行性及改造方案的优缺点,期待各位给出宝贵的建议,谢谢大家!

目录
相关文章
欧拉筛(最优的方法,对于找质数,细节讲解)
欧拉筛(最优的方法,对于找质数,细节讲解)
302 0
|
消息中间件 负载均衡 监控
Kafka消费者:监听模式VS主动拉取,哪种更适合你?
Kafka消费者:监听模式VS主动拉取,哪种更适合你?
676 0
|
存储 监控 安全
重构项目的十大注意事项
重构项目的十大注意事项
|
搜索推荐 Java
堆排序(超详细图解 java版)
l) 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为0(nlogn),它也是不稳定排序。
堆排序(超详细图解 java版)
|
BI vr&ar 网络架构
二维插值-MATLAB
二维插值-MATLAB
|
关系型数据库 MySQL
你不能不知道的脏写,脏读,不可重复读,幻读超级详细解读
你不能不知道的脏写,脏读,不可重复读,幻读超级详细解读
你不能不知道的脏写,脏读,不可重复读,幻读超级详细解读
|
关系型数据库 MySQL BI
mysql中left join的误解及笛卡尔积解释
mysql中left join的误解及笛卡尔积解释
771 0
mysql中left join的误解及笛卡尔积解释
两个线程按顺序打印1~100的几种实现
两个线程按顺序打印1~100的几种实现
353 0
|
Python
python自动化系列之使用python-docx操作word文档
python自动化系列之使用python-docx操作word文档
551 0
python自动化系列之使用python-docx操作word文档
|
网络协议 前端开发 Java
Springboot整合Websocket案例(后端向前端主动推送消息)
在手机上相信都有来自服务器的推送消息,比如一些及时的新闻信息,这篇文章主要就是实现这个功能,只演示一个基本的案例。使用的是websocket技术。
1429 0
Springboot整合Websocket案例(后端向前端主动推送消息)

热门文章

最新文章