使用缓存和队列,微服务如何拆分和设计?

我们觉得微服务拆分和设计最重要的是实现微服务自治,如果使用缓存和队列,来解决调用性能、异步调用、服务响应时间不一等问题是个不错的主意,但该在哪个层次使用缓存?哪里使用队列(采用队列增加了层级和链路,也就增加了延时)?服务熔断如何保证其他服务不受影响?……在使用这些措施...显示全部

我们觉得微服务拆分和设计最重要的是实现微服务自治,如果使用缓存和队列,来解决调用性能、异步调用、服务响应时间不一等问题是个不错的主意,但该在哪个层次使用缓存?哪里使用队列(采用队列增加了层级和链路,也就增加了延时)?服务熔断如何保证其他服务不受影响?……在使用这些措施时,对微服务的拆分和设计又有哪些要求?数据一致性如何保证?……

收起
参与8

查看其它 1 个回答尘世随缘的回答

尘世随缘尘世随缘技术总监上海某互联网金融公司

在高并发的场景下,缓存、队列,异步是必备的技术手段,在哪里使用缓存,这个没有一个标准的方案,但是有个约定的前提,谁提供谁负责(谁提供的服务,谁来保障服务的高可用)。这里给下我的建议:

1、一切皆缓存,所有的地方都可以用缓存,如果担心因为缓存更新策略问题带来的数据不一致,那么可以使用版本号来控制数据的新鲜度。

2、哪里使用队列:用户提交一个请求后,不需要立刻返回接口给客户端,就可以使用队列来增加吞吐量,比如用户注册后送积分,没有必要立刻增加积分,而是通过队列来实现异步

3、服务熔断:是按事先约定的接口返回值来应答(非核心接口),所以不存在影响其他服务。

互联网服务 · 2019-07-08

回答者

尘世随缘
技术总监上海某互联网金融公司
擅长领域: 云计算云原生微服务

尘世随缘 最近回答过的问题

回答状态

  • 发布时间:2019-07-08
  • 关注会员:3 人
  • 回答浏览:2270
  • X社区推广