1、什么是微服务?
微服务可谓是这几年比较热门的技术,从2017开始逐渐爆火,逐渐大大小小的公司纷纷将微服务技术引入并在实际业务中落地。
微服务的概念最早是在2014年由Martin Fowler和James Lewis共同提出:微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API通讯。同时,服务会使用最小规模的集中管理 (例如Docker)技术,服务可以用不同的编程语言与数据库等。
1.1、单体应用之痛
为什么要用微服务?微服务真的那么好吗?
在认识这些之前,得了解单体架构的弊端。
以MVC架构为例,业务通常是通过部署一个WAR包到Tomcat中,然后启动Tomcat,监听某个端口即可对外提供服务。早期在业务规模不大、开发团队人员规模较小的时候,采用单体应用架构,团队的开发和运维成本都可控。
然而随着业务规模的不断扩大,团队开发人员的不断扩张,单体应用架构就会开始出现问题。大致有以下几个方面:
-
部署效率低下
-
团队协作开发成本高
-
系统高可用性差
-
线上发布变慢
1.2、面向服务(SOA)
面向服务就是把传统的单机应用中通过JAR包依赖产生的本地方法调用,改造成通过RPC接口产生的远程方法调用。
1.3、微服务
微服务可以理解为面向服务的进一步发展。
在SOA的基础上,微服务主要有了