什么是微服务?与 SOA 有什么区别?
微服务,英文为 Microservices,最早由 Martin Fowler 与 James Lewis 于 2014 年共同提出的。先来看看维基百科(Wikipedia)对微服务的定义。
微服务一种软件开发技术,面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供更优质的业务价值。
微服务是一种软件架构风格,复杂的应用程序由语言无关的 API、相互通信的小型独立服务进程组成。这些服务是小型构建模块,高度解耦,专注于完成一项小任务,是一种便捷的模块化系统构建方法。
从概念上来说,有专家曾经质疑微服务就是 SOA,也有一种说法,把微服务叫成轻型通道(Lightway)的 SOA。不过如今,被广泛接受的看法是,微服务是 SOA 的一种传承。
Martin Flower 将微服务架构的服务通信理念称为“强服务个体和弱通信”(Smart endpoints anddumb pipes)。微服务的本质是分布式的、去中心化的和去 ESB 的,把所有的“思考”逻辑包括路由、消息解析等放在服务内部(Smart endpoints),去掉一个大一统的 ESB,服务间轻(dumb pipes)通信,是比 SOA 更彻底的拆分。
为方便大家理解,编者拆解一下 Martin Fowler 与 James Lewis 两位对微服务的定义如下:
1,微服务指的就是独立的、微小的服务;
2,希望将单个应用拆分成多个独立的、微小的服务;
3,每个微服务程序运行在独立的进程中,互不干扰;
4,每个微服务之间通过轻量协议通信,如 HTTP 协议;
5,每个微服务互相协作配合,为用户提供业务价值;
6,每个微服务都通过全自动部署机制独立部署;
7,每个微服务可以采用不同的语言、框架、工具 独立开发、测试、部署、存储及运维等。
评论