有一个A项目,一个B项目。
A项目里存储了项目信息与客户信息的数据,B项目中有一个请求会用到与A的项目信息与客户信息数据。
现在采用redis做。
在B中第一次调用A服务之后,把结果放入缓存,这样后继B项目再用到项目信息与客户信息数据不会再去进行服务调用而是去缓存中拿。
但是这样可能有一个缓存一致性的问题。
A项目中的数据如果有任意改动,那么B项目的缓存如果不及时删除就会有脏数据。
目前想到的几个方案:
1)跨库SQL,所有业务写在SQL里,B服务一次性把自己的数据和A库中的数据通过关联关系全部查出来,但是会涉及到跨库,服务调用性能不详
2)A项目中有任意一个项目信息被修改时,前端能否拿到这个项目的修改后信息,再次调用B服务,把A返回的数据放在B的缓存中?这样实现少量的同步缓存
有没有什么比较好的做法呢?
你是否有a项目的权限,如果有的话你可以让a服务通知b服务把缓存删除,如果没有,你可以当更新时调用a的修改接口和b的删除缓存的接口