rabbitmq在OS后端系统缓存更新之中的应用



  • OS后端架构主要分为业务层、数据层、存储层
    0_1546933196701_图片.png
    rabbitmq主要是用来在platform和api应用之间发送更新投放缓存的消息,由于系统的投放接口,单条数据比较大,如果每一次访问都通过redis,会导致redis负载会很高,同时会有很多重复的请求,所以设置了系统的本地缓存。
    redis的缓存更新,可以通过platform中,投放计划变更的时候,实时进行更新,但是本地缓存的更新存在于每个api应用的机器内存之中,所以更新只能通过platform通知api集群,进行更新各自的缓存,主要采用了rabbitmq的广播模式中的fanout模式。
    每个api的应用,都会自动生成一个queue进行监听exchange,queue的生成与集群机器的host绑定,确保了queue的名称不会重复,同时方便排查具体的queue所在机器,缓存默认的过期时长是5分钟,这个值,应用的该系统的公司或个人,可以根据实际的应用场景,来调整这个参数,不宜过短,过短容易失去本地缓存的价值。
    0_1546933220088_消息流程.jpg
    本地缓存采用的是Caffeine,该组件实现的缓存,效率上超过了guavacache,因此spingboot在后面的新版本里面不再对guava进行支持,但是spring封装了Caffeine后的接口与guava的接口非常相近,习惯使用guava的同学看这块代码的时候,相信也很容易理解,此处不再对该技术进行详述。