微服务架构
微服务架构使用一套小服务来开发单个应用,每个服务基于单一业务功能构建,运行在自己的进程中,使用轻量级通信机制,通常采用 HTTP RESTful API(RESTful API 是利用 HTTP 请求访问或使用数据的应用程序接口),能够通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言实现,以适应不同的数据存储技术,并保持最低限度的集中式管理。
网关(Gateway)通常是一个服务器,是系统的唯一入口,为每个客户端提供一个定制的 API。 API 网关的核心是所有的客户端和服务器都通过统一的网关接入微服务,在网关实现所有的非业务功能。它还可以具有其他职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理等。通常,网关提供 RESTful HTTP 的方式访问服务,而服务器通过注册中心进行服务注册和管理。
微服务的特点如下。
单一职责:微服务中每一个服务都对应唯一的业务功能,做到单一职责。
微:微服务的服务拆分粒度很小,例如用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
面向服务:面向服务是指每个服务都要对外暴露 RESTful 接口 API,不关心服务的技术实现,做到与平台和语言无关,也不限定用什么技术实现,只要提供 REST 的接口即可。
自治:自治是指服务间互相独立、互不干扰、耦合度低。团队独立是指每个服务都有一个独立的开发团队,人数不能过多;技术独立是指因为是面向服务,提供 REST 接口,使用什么技术没有别人干涉;前后端分离是指采用前后端分离开发,提供统一 REST 接口,后端不用再为 PC、移动端开发不同的接口;数据库分离是指每个服务都使用自己的数据源,部署独立,服务间虽然有调用,但能做到一个服务重启不影响其他服务,有利于持续集成和持续交付。每个服务都是独立的组件,可复用、可替换和易维护。
微服务架构与 SOA 都是对系统进行拆分;微服务架构基于 SOA 思想,把微服务当作去除了 ESB 的 SOA。ESB 是 SOA 中的中心总线,设计图形应该是星形的,而微服务架构是去中心化的分布式软件架构。
微服务架构的优点和缺点如下。
优点:通过服务的原子化拆分,以及微服务的独立打包、部署和升级,小团队的交付周期将缩短,运维成本也将大幅度下降;微服务遵循单一原则,微服务之间采用 RESTful 等轻量协议传输。
缺点:微服务过多,服务治理成本高,不利于系统维护;分布式系统开发的技术成本高(容错、分布式事务等)。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/da289a4286a7af8c0e0d99e7a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论