(1)java Spring Cloud+Spring boot+mybatis企业快速开发架构之微服务是什么?它的优缺点有哪些?

2021年09月15日 阅读数:1
这篇文章主要向大家介绍(1)java Spring Cloud+Spring boot+mybatis企业快速开发架构之微服务是什么?它的优缺点有哪些?,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

 “微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操做。html

在笔者看来,微服务架构的演变动像是一个公司的发展过程,从最开始的小公司,到后来的大集团。大集团可拆分出多个子公司,每一个子公司的都有本身独立的业务、员工,各自发展,互不影响,合起来则是威力无穷。数据库

臃肿的系统、重复的代码、超长的启动时间带给开发人员的只有无限的埋怨,丝毫没有那种很舒服的、很流畅的写代码的感受。他们把大部分时间都花在解决问题和项目启动上面了。网络

微服务架构的优点
使用微服务架构可以为咱们带来以下好处:架构

1)服务的独立部署
每一个服务都是一个独立的项目,能够独立部署,不依赖于其余服务,耦合性低。app

2)服务的快速启动
拆分以后服务启动的速度必然要比拆分以前快不少,由于依赖的库少了,代码量也少了。运维

3)更加适合敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、按部就班的方法进行。服务拆分能够快速发布新版本,修改哪一个服务只须要发布对应的服务便可,不用总体从新发布。分布式

4)职责专注,由专门的团队负责专门的服务
业务发展迅速时,研发人员也会愈来愈多,每一个团队能够负责对应的业务线,服务的拆分有利于团队之间的分工。微服务

5)服务能够动态按需扩容
当某个服务的访问量较大时,咱们只须要将这个服务扩容便可。测试

6)代码的复用
每一个服务都提供 REST API,全部的基础服务都必须抽出来,不少的底层实现均可以以接口方式提供。url

微服务架构的劣势
微服务实际上是一把双刃剑,既然有利必然也会有弊。下面咱们来谈谈微服务有哪些弊端,以及能采起什么办法避免。

1)分布式部署,调用的复杂性高
单体应用的时候,全部模块以前的调用都是在本地进行的,在微服务中,每一个模块都是独立部署的,经过 HTTP 来进行通讯,这当中会产生不少问题,好比网络问题、容错问题、调用关系等。

2)独立的数据库,分布式事务的挑战
每一个微服务都有本身的数据库,这就是所谓的去中心化的数据管理。这种模式的优势在于不一样的服务,能够选择适合自身业务的数据,好比订单服务能够用 MySQL、评论服务能够用 Mongodb、商品搜索服务能够用 Elasticsearch。

缺点就是事务的问题了,目前最理想的解决方案就是柔性事务中的最终一致性,后面的章节会给你们作具体介绍。

3)测试的难度提高
服务和服务之间经过接口来交互,当接口有改变的时候,对全部的调用方都是有影响的,这时自动化测试就显得很是重要了,若是要靠人工一个个接口去测试,那工做量就太大了。这里要强调一点,就是 API 文档的管理尤其重要。

4)运维难度的提高
在采用传统的单体应用时,咱们可能只须要关注一个 Tomcat 的集群、一个 MySQL 的集群就能够了,但这在微服务架构下是行不通的。当业务增长时,服务也将愈来愈多,服务的部署、监控将变得很是复杂,这个时候对于运维的要求就高了。
 


推荐分布式架构源码