SOA和微服务架构的区别

  • 首先,可以肯定的是SOA和微服务的确是一脉相承的.
  • SOA:面向服务的架构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.
  • 以一个公司为例:有基层员工 有管理层 有老板,最初大家都听老板指挥,谁干什么,根据需要,你可能今天干A事情,明天干B事情,后来人越来越多了,事情也越来越多了,做事情的效率越来越低,管理也很混乱;
  1. 现在开始做部门划分(服务化),不同部门做不同事情,IT部门只做研发,人事部门只做招聘;
  2. 这个时候就无法避免的发生跨部门协作(服务器调用);
  3. 但是你怎么知道有这样一个部门可以做这个事情呢?这就要依赖行政部门(注册中心);
  4. 新成立的部门要在行政那里做一个备案(服务注册);
  5. 然后公布一下,让其他部门知道(服务发布),大家就可以在新的工作秩序里面嗨皮的上班了,这个时候依然是在公司的组织架构中运转;
  6. 上述就是我理解的SOA的概念.
  • 微服务:微服务有一定SOA的概念在里面,只是在粒度中,微服务更加细一点;
  1. 比如说用户业务服务:登录 注册 个人中心 包含3个业务,SOA中都由userService提供的;
  2. 但是在微服务中,登录会被独立出来一个微服务,注册也会被独立出来微服务,他们可能采用不同的语言开发,相对SOA的粒度更细,业务场景耦合更低;
  3. 另外微服务强调一个去中心化,上述的公司的组织架构会被打散,没有老板,没有管理层,每一个人都是一个服务,做着自己的事情;
  • 还是以公司举例:
  1. 工资计算是会计的事情,但我把会计部门独立出来一个公司(微服务),他们不仅能计算自己公司的财务情况,还能帮别的公司计算账务情况;
  2. IT部门只做研发,但我把IT部门独立出来一个公司(微服务),他们不仅能给自己公司开发项目,也能接别的公司的项目;
  3. 同理,HR也能客串一把猎头.

转载但有许多修改,转载地址