欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

「微服务系列 01」什么是微服务,微服务的思考和认知

程序员文章站 2023-02-07 13:53:41
近期看了杨波老师讲的《微服务》课程,深有感触,准备做下记录和学习笔记,希望能寻找到更多的一些方法论和思想进行微服务架构上的指引。 谈到微服务,有必要谈到两个人,这两个人对微服务架构的定义产生非常深远的影响,一个是马丁福勒,一个是netflix架构总监Adrian Cockcroft,netflix公 ......

近期看了杨波老师讲的《微服务》课程,深有感触,准备做下记录和学习笔记,希望能寻找到更多的一些方法论和思想进行微服务架构上的指引。

 

「微服务系列 01」什么是微服务,微服务的思考和认知

 

谈到微服务,有必要谈到两个人,这两个人对微服务架构的定义产生非常深远的影响,一个是马丁福勒,一个是netflix架构总监adrian cockcroft,netflix公司对整个微服务架构推进起到决定性的推进作用。其中马丁福勒在一篇博文中说了几个微服务定义的核心点,这里把它罗列出来。

 

「微服务系列 01」什么是微服务,微服务的思考和认知

 

第一个人马丁福勒认为微服务架构是一种架构风格,此架构风格包含了上图的六个特点

一组小的服务

原来的单块服务都是业务能力大而全的打包在一个单块中,微服务主张把这些单块服务进行拆分,形成一个个小的独立的服务。这里有个最大的特点是“小”,那么纠结要小到什么程度才为之小,很多同学都会纠结这个小的点,因为这个小并没有特别和明确的规定,所以这也就引申出了现在很多ddd领域驱动设计来指引微服务的拆分,但基本上一个微服务能让一个开发人员能够独立的理解,基本上就称为一个微服务,具体有多少行代码并不是很关键。

独立的进程

微服务是运行在独立的进程当中,例如java程序部署在tomcat,也可以部署在容器docker中,容易本身也是一种进程,所以微服务可以以进程的方式去扩展。

轻量级的通讯

微服务主张使用轻量级去构建通讯机制,例如http,固定消息格式和减少消息格式,服务之间不耦合,让通讯尽量轻量。

基于业务能力

微服务是基于业务能力进行构建,例如有用户服务,登陆服务,商品服务,基于这些业务能力去构建这些微服务。

独立部署

微服务被拆分开后,每个团队独立维护自己的微服务,开发,迭代自己的微服务,是可以独立的去部署,团队之间是不需要特别的去协调,这些对业务开发维护可以做到更加的敏捷,轻量,快速。

无集中式管理

原来单体服务是需要整个技术团队是需要独立的架构团队去管理,统一架构,统一技术栈,统一存储,微服务就不太一样,微服务主张每个团队根据自己的技术需要,选择自己最熟悉,最高效解决问题的技术栈,甚至选择不同存储方式。

说到第二个人netflix架构总监 adrian cockcroft,他给微服务下了一个定义 : "loosely coupled service oriented architecture with bounded context"

  • 首先第一点:服务之间应该是松散耦合,不能对周边有强依赖,如果一个团队的开发对周边有强依赖性,则不能认为松散耦合
  • 其实第二点:服务面向的架构,微服务还是在本质上无法脱离soa的理念,本身来说还是一种soa,只是更加细化落地。
  • 第三点:有界上下文,每个团队可以维护自己的数据源,不是集中式的数据源,每个团队可以自己独立去演化自己的数据源,对业务的支持会更加敏捷

思考点:

微服务可以独立部署,独立部署给业务带来什么的好处? 微服务是基于有界上下文,每个团队是可以拥有自己独立的数据源,但在分布式系统中每个团队拥有了独立的数据源会带什么挑战?