概述
由于服务拆分之后,各服务之间只负责自己相关的业务领域,但是对于整体系统来说,总会遇到跨服务共享一些数据的需求,比如 Customer Service 想调用 Payment Service 客户最近5条订单数据
调用方式有如下几种
1. 直接访问对方DB
缺点是显而易见的,直接访问对方DB了,那还分什么服务呢?
2. Payment Service 开发HTTP接口供 Customer Service 调用
这种方式是很多人常规的想法,其实也无可厚非,在比较小规模的系统内也是可行的一种方案,但是有着一些缺点
1. 系统内部间调用,HTTP接口方案虽然通用,但效率不是最高
2. 接口缓存层面如果做在 Payment Service 上,那么在下单时还需要额外关注这个接口的缓存刷新,或者采用接口定时缓存失效的策略,但无论哪种策略都无法解决获取数量可能变化导致的缓存范围不可控的问题。随时有可能由获取5条数据变成10条
3. 扩展性不佳,当出现有多个 Payment Service 时,每个 Service 提供的接口可能并不一致,需要单独处理,并且也无法做到数据的合并和排序
3. 使用消息队列,当 Payment Service 有新数据是就发布,Customer Service 进行订阅,这样只需要在Customer Service中保留需要的前5条数据即可
原文:
https://www.ru-rocker.com/2020/08/23/a-food-for-thought-how-to-share-data-among-services-in-a-microservice-world-part-1/
https://www.ru-rocker.com/2020/08/23/a-food-for-thought-how-to-share-data-among-services-in-a-microservice-world-part-2/
最后
以上就是忧郁微笑为你收集整理的微服务之间如何共享数据的全部内容,希望文章能够帮你解决微服务之间如何共享数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复