同步调用有哪些问题?异步通讯有哪些好处?什么是事件驱动设计?异步通讯的设计重点有哪些?幂等性设计是什么?
打卡Day10:今天学习了《42|弹力设计篇之“隔离设计”》,我的收获如下:
隔离设计 Bulkheads
源于造船上的隔板技术,也就是船体水密舱。
系统分离的方式:
- 按服务种类
- 按用户请求
按服务种类分离
使用不同的域名、服务器和数据库,做到从接入层到应用层再到数据层三层完全隔离。
完全隔离的问题:
- 跨业务板块调用性能会降低(响应时间);
- 数据合并复杂度变高;
- 跨板块的服务交互变复杂;分布式事务问题。
按用户请求分离
同一个服务对于不同的用户进行冗余和隔离。
按服务种类和按用户请求分离可以融合,即多租户模式。三种做法:
- 完全独立;
- 独立的数据分区,共享的服务;
- 共享的服务,共享的数据分区。
通过虚拟化技术(Hypervior如KVM,或是Linux Container如Docker)来实现物理资源的共享和成本的节约,并且可以做到几乎完全隔离。
隔离设计的重点
- 定义好隔离业务的大小和粒度;
- 定义好要什么和不要什么(考虑系统的复杂度、成本、性能、资源使用);
- 跟高可用、重试、异步、消息中间件、流控、熔断等设计模式配套使用;
- 自动化运维工具;
- 能看到所有服务的监控系统。
找到一个合适的均衡方案,我们不可能做出一个什么都能满足的系统。