同步调用有哪些问题?异步通讯有哪些好处?什么是事件驱动设计?异步通讯的设计重点有哪些?幂等性设计是什么?

打卡Day10:今天学习了《42|弹力设计篇之“隔离设计”》,我的收获如下:

隔离设计 Bulkheads

源于造船上的隔板技术,也就是船体水密舱。

系统分离的方式:

  • 按服务种类
  • 按用户请求

按服务种类分离

使用不同的域名、服务器和数据库,做到从接入层到应用层再到数据层三层完全隔离。

完全隔离的问题:

  • 跨业务板块调用性能会降低(响应时间);
  • 数据合并复杂度变高;
  • 跨板块的服务交互变复杂;分布式事务问题。

按用户请求分离

同一个服务对于不同的用户进行冗余和隔离。

按服务种类和按用户请求分离可以融合,即多租户模式。三种做法:

  1. 完全独立;
  2. 独立的数据分区,共享的服务;
  3. 共享的服务,共享的数据分区。

通过虚拟化技术(Hypervior如KVM,或是Linux Container如Docker)来实现物理资源的共享和成本的节约,并且可以做到几乎完全隔离。

隔离设计的重点

  • 定义好隔离业务的大小和粒度;
  • 定义好要什么和不要什么(考虑系统的复杂度、成本、性能、资源使用);
  • 跟高可用、重试、异步、消息中间件、流控、熔断等设计模式配套使用;
  • 自动化运维工具;
  • 能看到所有服务的监控系统。

找到一个合适的均衡方案,我们不可能做出一个什么都能满足的系统。

左耳朵耗子带你重学《左耳听风》

https://time.geekbang.org/column/article/3917