微服务架构


微服务架构

文章插图
微服务架构是由很多小而自治的微服务组合而成,每个服务都提供一套独立自洽的业务能力 。从应用的层面,我们首先对业务进行建模,业务域定义的边界也自然而然作为每个微服务的职能边界 。
微服务架构

文章插图
什么是微服务?【微服务架构】微服务的定义比较直白,但只有理解它的设计理念和原则,才能真正用好它 。从单个服务/服务间关系来看,有以下特征:
  • 微服务通常很小、提供很少但独立的功能,服务间耦合度很低 。一个很小的研发团队就可以开发和维护一个微服务 。
  • 每个服务都是一个单独的代码库,可以由一个很小的研发团队来管理 。
  • 服务可以独立部署,而不需要重新构建和部署整个应用 。
  • 每个服务负责维护自己的数据和状态,数据所有权归本服务所有,其他服务必须通过该服务访问数据和状态 。
  • 服务之间通过定义好的API进行通信,对外隐藏API的内部实现细节 。
  • 支持多语言编程,不同服务可以使用独立的技术栈进行开发,自由选择编程语言、框架和库 。
如果从更全局的视角来看,微服务架构还必须下面几个组件:
  • 服务管理和编排 。该组件负责把服务部署在物理机/虚拟机节点上、做失败检查、在多个节点上负责对服务的多个实例做负载均衡等 。我们通常可以使用现成的开源技术来充当这个组件,比如k8s 。
  • API Gateway 。API Gateway给所有Client提供了访问入口 。Client通常不会直接访问提供业务支持的服务,而是调用API Gateway,由Gateway负责把请求转发给后端对应的服务 。
使用 API Gateway 有很多优势:
  • 解耦Client和服务,我们可以单独对服务进行更新或重构,client端可能不需要更新甚至不需要感知 。
  • 服务间通信可以使用更灵活的方式,比如不走HTTP协议,而是走rpc等二进制协议、消息队列等,某些超大数据量的场景甚至会走p2p协议 。
  • API Gateway可以承担一些跨业务的职能,比如权限认证、日志、SSL校验、负载均衡等 。
  • API Gateway一般会提供一些开箱即用的能力,比如限流、缓存、请求篡改、权限校验等 。
架构优势