微服务之间如何共享数据

由于服务拆分之后,各服务之间只负责自己相关的业务领域,但是对于整体系统来说,总会遇到跨服务共享一些数据的需求,比如 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/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值