入门篇-01什么是微服务?

01 | 单体应用

1、应用技术栈

1)早期为:LAMP(Linux+Apache+MySQL+PHP)和 MVC(Spring+iBatis/Hibernate+Tomcat)。

2、优点

1)学习成本低,开发上手快,测试、部署、运维方便

3、缺点:当业务规模和团队开发人员不断扩张时

1)部署效率低下
2)团队协作开发成本高:多人合并分支、打包部署会存在问题。
3)系统高可用性差:所有功能都部署在一个war包,一个功能出现问题,其他的都受影响。
4)线上发布变慢:特别对于Java应用,一旦代码膨胀,服务启动时间就会变长。

02 | 什么是服务化?

1、通俗的理解

1)服务化就是把传统的单机应用中通过JAR包依赖产生的本地方法调用,改造成通过RPC接口产生的远程方法调用。
2)对于业务代码中一些通用的业务逻辑,把它抽象并独立成为专门的模块,这对于代码复用和业务理解大有裨益。。
3)通过服务化,可以解决单体应用膨胀、团队开发耦合度高、协作效率低下的问题。

03 | 什么是微服务?

1、微服务和服务化的不同之处

1. 服务拆分粒度更细
	微服务可以说是更细维度的服务化,小到一个模块,只要该模块依赖的资源与其他模块都没有关系,那么就可以拆分为一个微服务。
2. 服务独立部署
	每个微服务都严格遵循独立打包部署的准则,互不影响。
3. 服务独立维护
	每个微服务都可以交由一个小团队甚至个人来开发、测试、发布和运维,并对整个生命周期负责。
4. 服务治理能力要求高
	拆分为微服务之后,服务的数量变多,需要有统一的服务治理平台来对各个服务进行管理。

04 | 总结

1、微服务的发展历程

1)由单体应用进化到服务化拆分部署
2)随着互联网规模的不断扩大,敏捷开发、持续交付、DevOps理论的发展和实践,以及基于Docker容器化技术的成熟,微服务架构逐渐成为应用架构的演进方向。

2、微服务架构小结

1)将复杂臃肿的单体应用进行细粒度的服务化拆分
2)每个拆分出来的服务各自独立打包部署,并交由小团队进行开发和运维
3)可以极大地提高应用交付的效率

参考文献:

[1]胡忠想. 从0开始学微服务[M]. 极客时间, 2018.