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

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

参与8

2 同行回答

dean25 dean25 课题专家组 软件架构设计师 民生银行
微服务并不是一定要使用队列和缓存,还是要看应用的性质和类型,一些对于消息丢失或者死信很敏感的应用,比如银行的核心交易系统,就需要对通常队列的使用方式做一定改造,死信也需要处理,因为这可能对应着一笔真正的交易。从我们的实际经验看来,管理类的,非交易类的应用比较适合使用...显示全部

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

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

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

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

收起
银行 · 2019-07-11
浏览2222

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2019-07-08
  • 关注会员:3 人
  • 问题浏览:4029
  • 最近回答:2019-07-11
  • X社区推广