微服务架构

什么是微服务架构

  1. 简而言之,微服务架构风格的开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。
  2. 其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API轻量的机制来相互通信
  3. 这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。
  4. 这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。
  5. 对这些微服务仅做最低限度的集中管理。

微服务架构示例图(参见图)

微服务架构的特性

  1. 每个微服务可独立运行在自己的进程里
  2. 一系列独立运行的微服务共同构建起整个系统
  3. 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,如订单管理、用户管理等
  4. 微服务之间通过一些轻量的通信机制进行通信,如REST API接口进行调用
  5. 可以使用不同的语言与存储技术
  6. 全自动的部署机制

微服务架构的优势

1.易于开发和维护 1. 一个微服务只关注一个特定的业务功能,所以它的业务清晰代码量较少。 2. 开发和维护单个微服务相对比较简单,整个应用是由若干个微服务构建而成,所以整个应用也会维持在可控状态; 2.单个微服务启动较快 单个微服务代码量较少,所以启动会比较快; 3.局部修改容易部署 单体应用只要有修改,就要重新部署整个应用,微服务解决了这样的问题。 一般来说,对某个微服务进行修改,只需要重新部署这个服务即可; 4.技术栈不受限 在微服务中,可以结合项目业务及团队的特点,合理地选择技术栈 5.按需伸缩 细化后的服务更容易增减

微服务架构的挑战

1.运维要求较高 更多的服务意味着更多的运维投入。 在单体架构中只需要保证一个应用的正常运行;而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,带来了巨大的挑战; 2.分布式固有的复杂性 使用微服务构建的是分布式系统。 对于一个分布式系统,系统容错网络延迟分布式事务等都带来了巨大的挑战; 3.接口调整成本高 微服务之间通过接口进行通信。 如果修改某个微服务的API,可能所有使用了该接口的微服务都需要做调整; 4.重复劳动 很多服务可能都会使用到相同的功能。而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,导致代码重复。

微服务设计原则

  1. 单一职责原则
  2. 服务自治原则
  3. 轻量级通信原则
  4. 接口明确原则

微服务和SOA的区别

  1. 微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化
  2. 微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。