服务化之后本地和远程缓存的应用

经过服务化之后,拆分出的用户中心,经过一段时间的监控,发现几个问题:
1.每天的调用次数大约在2-3亿之间
2.60%的调用集中在TOP100个接口之中
3.用户中心的memcached压力在用户中心的线程排在第一个
4.个别接口成为了服务化过程中的瓶颈
5.memcached使用过程中监控到数据每天有几千次的超时调用,导致服务最大单次耗时被拉长
6.网络开销
7.序列化与反序列化,在缓存中的开销

通过分析针对现有缓存模型进行了重构,加入一层本地缓存
解决思路:减少dubbo请求,把一些不易改变且访问量巨大的数据缓存在本地,通过多级缓存的模式,从而提升系统性能。

在分布式集群的环境下,要解决上述的问题把问题拆分成:
1)如何管理本地缓存数据
2)如何同步各节点间的数据
3)如何监控本地缓存使用情况,最终反应的数据我们需要重新采集和分析。 1.引用本地缓存Ehcahe,简单快速,很好的继承现有的spring,速度比memcached快非常的多。
2.改造现有应用,由于现有接口都是保持不变,只要增加新的模板即可解决,对于省平台的重构将会非常小,并且是可控的
3.为了解决节点间的同步:
1)刚开始我们采取的策略是通过zookeeper的特性,进行节点监听,然后master做分发,但是使用后发现问题(什么问题 你懂的)
2)为此我们引入了activemq,省平台已经集成了这个中间件,所以基本上增加一些配置就能为我们所有,这里最重要的也是本次改造的一个关键,通过mq的订阅模式(区别于我们一直使用队列模式),来解决节点的分发 4.最后我们需要动态的对线上的节点进行监控,我们选择zookeeper的特性,通过写入监控数据,然后统一采集,来分析我们线上缓存的一个使用情况,比如:命中率,调用次数,缓存堆大小等

技术交流群: 534368042

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值