什么是微服务?

首个提出微服务的人不一定是Martin Fowler,但是说起微服务,必须得介绍一下Martin Fowler。

一个大胡子的故事

图片

如上图所示,Martin是一个大胡子,一个来自于英格兰的英国大胡子。曾经有小伙伴看了我的计算机类图书后得出了一个结论:他是威哥的Mentor。这个问题我倒是没想过,不过小伙伴一说我发现:手头常备翻阅时间最长的图书就是Martin Fowler的重构、Analysis Pattern、POEAA(企业应用架构模式)三本。我了解得似懂非懂却四处吹嘘的DDD/微服务这些目前大火的概念中,也都有Martin的身影。

图片

图片

所以说,我认为Martin.大胡子.Fowler的第一个身份是计算机行业的『热词制造者』,制造热词的能力堪比热搜。他所研究提及过的微服务(Micro Service)、重构(Refactoring)、分析模式(Analysis Pattern)、领域驱动(Domain Driven)、NoSQL、UML这些词,但凡和技术沾点边,没看过也大多听过。

Martin的还是Thoughtworks的首席科学家,演说家(俺们程序员圈内称为布道者)。曾经看过他的一次演讲,极其放松且有趣。

闲话少说书归正传。为什么要介绍一下Martin呢?

是因为俺稀罕他!!!

哈哈,开玩笑的!我已经对大胡子的男人没兴趣了。这么说是因为Martin最早给出了正式的关于微服务的描述。

什么是微服务?

让我们来看看Martin对于微服务的定义。(需要说明一点,尽管威哥认为不是定义哦。威哥认为对于很多架构命题来讲,定义从某种程度上是不可能的

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 capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

翻译如下:

简单来说,微服务架构风格是一种方法。什么方法呢?是一种将单个应用开发为一组小型服务的方法。这些服务每个都运行在自己的进程中,并且通过轻量级的通讯机制通讯(通常是HTTP Resource API)。这些服务围绕业务能力构建,并且可以通过完全自动化的部署机制进行独立部署。这些服务几乎没有集中管理,可以使用不同的编程语言实现,并且使用不同的数据存储技术。

摘自:James Lewis & Martin Fowler:A firm definition for zhe microservices style

现实生活中,和一些老板聊天时,经常被问到一个问题:给我讲讲啥是微服务呗?

上面基本上给出了老板们要求的一句话定义,但是每次我说完老板们都不满意,因为有一个非常显著的问题。

什么问题呢?

那就是很多老板顾名思义,在提问的时候就有一个先入为主的念头:『微服务』这个词所代表的是一种『微小』级别的服务。对于微服务是什么,也应该要解释清楚什么样的服务是微服务。

就如我在几年前接触到微服务的时候的第一反应是一样的。

这么理解就偏了。『微服务』这个名词所代表的是一套架构风格(Architectural Style),而不是研究什么样的服务是微服务。在讨论微服务时,无论任何场景下,我们都必须意识到,微服务(Micro Services)这个词,所代表的是(Micro Services Architectural Style)。只是讨论的人经常忽略了后面的架构风格而已。

好的纠错完成,回归主题。

那么什么样的架构风格是微服务架构风格呢?

Martin和 James Lewis在 James Lewis & Martin Fowler:A firm definition for zhe microservices style 中给出了定义之外,也给出了这个架构风格所具有的八大特性,具体包括:

通过服务组件化、面向产品而不是项目、智能端点以及哑管道、去中心化治理、去中心化的数据管理、全自动化的基础设施、为容错而设计、进化性设计。

需要特别提一提的是,Martin所提出的关于微服务架构风格(Micro Services Architectural Style)的特性定义,有很浓重的对标SOA的痕迹。这是很正常的。因为Martin一直认为SOA是个伪命题,他曾经专门写过一篇文章文章来嘲笑/抨击这种架构理念,文章叫《面向歧义的服务(Service Oriented Ambiguity)》,感兴趣的朋友可以仔细阅读一遍。

那么好了,既然抨击SOA并且定义了微服务架构风格,SOA又是啥?SOA到底面临哪些问题?Martin所定义的微服务到底有没有解决SOA所面临的问题?所谓的八大特性是什么鬼呢?微服务本身又有哪些优缺点?微服务是技术架构的未来吗?

容威哥买个关子,且听后文分解。

参考链接

1. A firm definition for zhe microservices style[James Lewis & Martin Fowler,2014]

2. Service Oriented Ambiguity[Martin Fowler 2005]

  • 33
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威哥Wego

欢迎打赏,用于撸串~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值