1.1 服务架构演变
1.1.1 单体架构
单体架构:将业务的所有功能在一个项目里开发,打包部署。
优点:
-
架构简单
-
部署成本低(将项目打包,部署到一台 Tomcat 上,将来为了应对并发,多搞几台机器,形成负载均衡的集群就行了)
-
耦合度高(升级、拓展困难、大型项目一定会作分布式架构)
1.1.2 分布式架构
分布式架构:根据业务的功能模块对系统作拆分,每个模块独立开发,称为一个服务。
- 优点:耦合度低(服务升级和拓展方便、单独模块进行技术升级对其他模块也没有影响)
服务治理
分布式架构虽然降低了服务耦合,但是也有几个问题需要考虑:
- 服务拆分粒度。(怎么拆?哪几个服务作为独立模块呢?哪几个业务在一起呢?)
- 服务集群地址如何维护?(比如一个模块有上百台机器,将来我要调用你,我怎么知道你上百台机器的地址?肯定不可能写死,万一上线的时候,一部署地址变了,我再改?肯定不行,这个地址是要方便维护的)
- 服务之间如何实现远程调用?(单体项目:订单需要用到商品信息,直接调用 Service 就行了,因为部署在一个项目里,大家可以互相调。作了拆分,变成了2个服务,部署在独立的机器上,那就不能随便调用了,只能通过一个服务向另一个服务发请求,这个过程叫远程调用)
- 服务健康状态如何感知?(我要调用你的服务,我怎么知道你的服务的健康状态?万一你挂了,我调用你,我也阻塞了,这叫级联失败)
1.1.3 微服务
微服务是一种经过良好架构设计的分布式架构方案。