技术概念大揭秘-什么是微服务

作为一个产品人,听不懂技术小哥的“黑话”怎么能行呢?今天我们先来揭秘下技术小哥的口中常常提起的“微服务”。

要说清楚什么是“微服务”,我们还是得回溯以往,看看从单体架构到SOA架构,再到微服务架构的演化过程。

单体架构

如常见的ERP/HRM软件,所有的系统功能都在一个项目中,团队中任意成员修改一段代码,都需要重启整个系统进行部署。随着功能的升级,整个研发、发布、定位问题,扩展,升级这样一个“怪物”系统会变得越来越困难。

SOA架构

SOA(Service-oriented architecture,面向服务架构),1996年,Gartner最早提出SOA,2000年后业界普遍认识到SOA思想的重要性。

SOA出现的背景是企业内部的IT系统重复建设且效率低下,比如说订单系统、财务系统都要用到HRM中的员工信息,如果分别开发接口,则出现了重复建设。所以ESB(Enterprise Service Bus,中文翻译为“企业服务总线”)应运而生,所有系统都在ESB发布接口,提供服务。就像上面这个例子,HRM就只要在ESB发布员工信息这一个服务,订单系统、财务系统就都可以都调用此项服务。

ESB虽然功能强大,但现实中的协议有很多种,如JMS、 WS、 HTTP、 RPC等,数据格式也有很多种,如XML、 JSON、二进制、 HTML等。 ESB要完成这么多协议和数据格式的互相转换,工作量和复杂度都很大,而且这种转换是需要耗费大量计算性能的,当ESB承载的消息太多时, ESB本身会成为整个系统的性能瓶颈。

微服务架构

James Lewis和Martin Fowler合写了关于微服务的一篇学术性的文章,详细阐述了微服务:

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilitiesand independently deployable by fully automated deployment machinery。

上述英文的三个关键词分别是: small、 lightweight、 automated,基本上浓缩了微服务的精华,也是微服务与SOA的本质区别所在。

     -Samll,服务的粒度小,一个服务专注于莫一模块。

     -Lightweight ,通过HTTP/REST API等轻量级接口协议进行通信。

     -Automated,通过自动化的服务部署、服务治理体系对微服务进行管理。

虽然微服务架构具有解耦,高可用,可拓展性高的优点,但是并不是“银弹”。容易采坑有以下两点:

1.微服务划分的粒度过小导致开发人员无法应付 ;

2.基础设施不完备导致微服务管理困难,复杂度提高,效率降低。


微服务基础设施


各架构对比


架构对比

推荐阅读:
《漫画:什么是微服务》

《什么是微服务》




参考资料:

《从0开始学架构》-李运华

《从0开始学微服务》-胡忠想

你可能感兴趣的:(技术概念大揭秘-什么是微服务)