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

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

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

收起
参与8

查看其它 1 个回答dean25的回答

dean25dean25课题专家组软件架构设计师民生银行

微服务并不是一定要使用队列和缓存,还是要看应用的性质和类型,一些对于消息丢失或者死信很敏感的应用,比如银行的核心交易系统,就需要对通常队列的使用方式做一定改造,死信也需要处理,因为这可能对应着一笔真正的交易。

从我们的实际经验看来,管理类的,非交易类的应用比较适合使用采用消息队列。实时交易类的用RPC或者Rest API可能会更好。

一个服务熔断了,依赖这个服务的其它服务肯定会受影响,但是没有依赖关系的服务应该不受影响。这也是熔断的意义所在,避免问题蔓延。

在拆分时,建议不要为了拆分而拆分,还是应该遵循高内聚、低耦合的原则。只要确实需要拆分,才做拆分。否则,微服务太多,会带来很大的管理开销。

银行 · 2019-07-11

回答者

dean25
软件架构设计师民生银行
擅长领域: 云计算容器容器云

dean25 最近回答过的问题

回答状态

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