微服务架构的优点:
- 1.服务的独立部署,耦合性低。 每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
- 2.各个服务可以快速启动。 拆分之后服务启动的速度必然要比拆分之前快很多,因为依赖的库少了,代码量也少了。
- 3.服务可以动态按需扩容。 当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
微服务架构的缺点:
- 1.分布式部署,调用的复杂性高。 单体应用的时候,所有模块之前的调用都是在本地进行的,在微服务中,每个模块都是独立部署的,通过 HTTP 来进行通信,这当中会产生很多问题,比如网络问题、容错问题、调用关系等。
- 2.独立的数据库,分布式事务的挑战。 每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这种模式的优点在于不同的服务,可以选择适合自身业务的数据,比如订单服务可以用 MySQL、评论服务可以用 Mongodb、商品搜索服务可以用 Elasticsearch。
- 测试难度提升。 服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的。这样的服务依赖测试时需要启动多个服务。
- 运维难度的提升。在采用传统的单体应用时,我们可能只需要关注一个 Tomcat 的集群、一个 MySQL 的集群就可以了,但这在微服务架构下是行不通的。当业务增加时,服务也将越来越多,服务的部署、监控将变得非常复杂,这个时候对于运维的要求就高了