什么是微服务
微服务架构是目前开发中的技术热点,出镜率非常高,但是很少人能够完整的理解微服务的定义,以至于现在很多人都在说书技术热点炒作,今天,我就带你们进入微服务的世界,告诉你们,什么是真正的微服务,微服务有哪些特点,为什么这么多人在讲微服务。
01
单体应用的缺陷
说到单体应用,大家比较熟悉,毕竟写个helloworld,放到tomcat上,跑起来就是一个简单的单体应用程序,更严格的意义来说呢,单体服务就是一个归档包包含所有功能的应用程序,这就叫做单体服务,那么,单体服务有什么缺陷呢?
1、单体服务复杂性太高,一个单体服务要去完成那么多的功能,肯定是特别复杂的,整体来说,代码间的依赖关系混乱,一个单体应用多人开发,代码质量肯定参差不齐的
2、技术维护代价高,一个单体应用前期肯定是简单的,但是随着功能不断增加,应用肯定越来越大,代码越来越多,维护起来肯定很费劲。
3、部署频率低,代码量大了,部署起来肯定很慢,而且有一点问题,就会导致重新部署,全量部署肯定风险比较高,所以,为了节省时间,会集中一部分更新在部署,导致部署频率变低
4、扩展能力弱,这个就不用说了,作为一个整体,牵一发而动全身,无法根据业务进行伸缩,肯定影响整个系统的扩展性
5、新技术难以应用,因为只有一个服务,所以想添加或更改一个大的技术变动时,会变得特别麻烦。
02
微服务横空出世
说了那么多单体应用的不好,我们来说说微服务框架,上面单体服务的缺陷,可以说,微服务架构很好的避免了,但是同时也产生新的问题,没有最好的技术,只有最合适的技术。
其实到目前为止,微服务没有人能给出一个合理的定义,大家对微服务的理解都是不同的,下面我说一下我对微服务的理解,
微服务就是将一个单体应用拆分成多个服务,根据技术分也好,根据业务分也好,总之不能再跟以前一样,把所有的技术跟业务放到一起了,每个服务都运行在自己的容器或者进程中,他们之间可以通过轻量级通信机制进行通信(通常用http资源进行),这些服务围绕业务全自动独立部署,然后将这些小应用用一个集中式的管理,服务可用不同的语言开发,使用不同的数据库,上面我已经把微服务的有点说的差不多了。优点如下:
1、独立运行
2、专注一个功能点
3、不同的技术相互搭配
4、全自动部署,集中式管理
当然缺点肯定是有的,比如:
1、分布式造成系统复杂性上升
2、接口调用成本上升,一部分资源用于通信
3、重复率变大,很多服务用一个功能,可能每一个微服务系统中都有该功能的代码。
03
微服务的技术选择
技术选型是很重要的,选对技术,就可以避免很多麻烦,现在有很多微服务架构可供选择,我们就聊一种比较火的spring cloud。
选择spring cloud的理由:
1、具有开箱即用的特点。
2、文档丰富
3、spring cloud 为微服务架构提供了完整的解决方案
04
结束语
微服务可以说代表了一定的技术趋势,有想学习的朋友可以加入微信群,公众号菜单栏有版主微信。添加拉你进群。