Istio实战指南
上QQ阅读APP看书,第一时间看更新

1.2 微服务架构的痛点

微服务相对于单体应用而言是一个巨大的进步,它将系统切分成若干个服务,使系统的复杂度降低,不同业务之间解耦并提高了可扩展性。另外,单个服务的复杂度大幅降低,这些服务由各自的团队负责开发和维护,高度内聚互不干涉,使得开发过程也变得更轻松。图1-5展示了单体应用和微服务应用的对比。

图1-5 单体应用和微服务应用

但是,软件开发中从来就没有银弹。微服务在带来了一系列便利的同时,也伴随着新问题的出现。当一个大型的系统被拆分为几十个、上百个甚至更多的服务时,如何有效地管理服务,以及保证服务间的通信稳定可靠成为开发人员需要关注的新问题。

原本业务模块之间函数级别的调用方式变成了远程调用,单一的系统演变成了分布式系统。L Peter Deutsch等人提出的著名理论——分布式环境下的8个谬论,很好地总结了以微服务为代表的分布式系统在网络层面面临的问题。

· 网络是可靠的。

· 网络延迟是0。

· 带宽是无限的。

· 网络是安全的。

· 网络拓扑结构从不改变。

· 只有一个管理员。

· 传输成本是0。

· 网络是均匀而稳定的。

这些问题被定义为“谬论”,其本质是要告诫开发人员,在构建分布式系统的过程中不要忽视它们,应该想办法去解决问题。因此,稳定可靠的网络通信成为构建微服务系统的一大难题。试想一个大型的业务系统,需要对成百上千个微服务进行版本控制、监控和故障转移等一系列操作,并实现A/B测试、灰度发布、限流、熔断和访问控制等一系列与网络相关的功能,这是多么复杂的一件事情。开发和运维人员在转型到微服务架构时不得不面对这一新的挑战。