正如敏捷之父MartinFowler所说的那样,单体架构和微服务并不是简单的二选一,两者都是模糊的定义,这就意味着大多数系统都将在一个模糊的边界区域。很多开发团队已经认识到微服务架构比单体架构更优越,但是也有其他团队感觉到这是一种消弱生产力的负担,就像任何软件架构,微服务架构同样有利弊。为了能做出一个明智的选择,你必须了解这些应用并将它们运用到你特定的环境中。
微服务的“定义”
如果需要准确的给微服务下一个定义,抱歉,笔者找了很长时间,也没有一个准确的定义,最接近微服务的定义来自维基百科,全文如下:
In computing, microservices is a softwarearchitecture style in which complex applications are composedof small, independent processes communicating witheach other using language-agnostic APIs.These services are small,highlydecoupled and focus ondoing a small task, facilitatinga modular approach to system-building.
敏捷之父Martin Fowler的《Microservices》一文中给出的定义是这样的:
In short, the microservice architectural style is an approach todeveloping a single application as a suite of small services, each running inits own process and communicating with lightweight mechanisms, often an HTTPresource API. These services are built around business capabilities andindependently deployable by fully automated deployment machinery. There is abare minimum of centralized management of these services, which may be writtenin different programming languages and use different data storage technologies.
综上,概括来说, 微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,通过轻量的通讯机制联系,经常是基于HTTP资源API,这些服务基于业务能力构建,能够通过自动化部署方式独立部署,这些服务自己有一些小型集中化管理,可以是使用不同的编程语言编写,正如不同的数据存储技术一样。
微服务的历史
“微服务”一词最早被威尼斯附近的一个软件架构师小组于2011年5月首次提及,当时他们用这个词汇来描述自己近期研究项目当中所涉及的通用性架构机制。2012年5月,该小组作出最终决议,认为“微服务”是最适合的架构名称。2012年3月,James在《微服务-Java以及Unix方式》当中就此发表了一篇案例研究报告,而Fred George也几乎在同一时间进行了相同的工作。Netflix公司的Adrian Cockcroft将微服务架构称为“细化SOA”,并认为这是一套在Web规模下具备开创意义的架构类型。Joe Walnes、Dan North、Evan Botcher以及Graham Tackley也分别在这篇文章中对此作出了评论。
微服务的特点
知名微服务架构使用者
目前据统计,知名的微服务架构使用者包括:
在此需要说的是,咱们好雨云在微服务领域也有很多领先和独到的地方,在以后的【微服务干货系列】中,我们会慢慢分享给大家,敬请关注。
Docker在微服务系统中所扮演的角色
谈到微服务,不得不提到Docker,微服务要运行,首先需要一套执行的环境。这套环境不能对外部有依赖性。同时,执行环境的粒度又必须足够的小,这样才能称之为”微“,否则必然是对资源的巨大浪费。Docker出现以后,我们看到了微服务的一个非常完美的运行环境。
微服务领域的大牛
这里仅仅提两位,一位是Martin Fowler,Martin Fowler是国际著名的面向对象分析设计、UML、模式等方面的专家,敏捷开发方法的创始人之一,现为ThoughtWorks公司的首席科学家。他改变了人类开发软件的模式,他被开发者们尊为“教父”,他的《Microservice》一文影响了很多人。
另外一位是《Building Microservice》作者Sam Newman,他也是ThoughtWorks的技术专家,他的这本著作可以说是学习微服务开发者必读之物。
学习微服务资料整理
上文提到的Martin Fowle 《Microservices》一文,国内已经有很多翻译了,具体可以点击下面链接:
http://blog.csdn.net/wurenhai/article/details/37659335
在Docker上运行微服务
http://www.infoq.com/cn/news/2015/06/qiniu-best531?utm_campaign=infoq_content&
微服务架构在云端的应用
http://www.csdn.net/article/2015-11-16/2826222
再谈Docker,微服务的场景化应用
http://www.d1net.com/cloud/tech/360510.html
Martin Folwer谈微服务的优缺点
http://www.wtoutiao.com/p/i648ov.html
Sam Newman 《Building Microservice》下载地址
http://download.csdn.net/detail/ramissue/8441997