对于微服务架构,一直有一种说法,认为它是 SOA 架构的一种变体,或者是 SOA 的子集。关于这个问题,我们不去讨论他的对错(其实也没有对错之分),我们直接从这两 者的区别入手来理解到底什么是微服务: 通信手段、数据等的不同只是表象,其本质区别还是由于两者诞生于不同历史时期,需 要解决的问题域不同。SOA 解决的核心问题是复用,而微服务解决的核心问题是扩展。 关于什么是微服务,Martin Fowler 有如下的定义(更多 MartinFowler 关于微服务 的内容,可以参考链接):
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.?
这里提到几个重要的概念: 一套小服务
独立进程
轻量级通信协议
可独立部署
多语言&不同储技术
这个定义对微服务做了一个比较具象化较为易于理解的描述,通常来说我们看到的为服 务架构如下图所示:
但是事实上,在实际生产环境中,微服务的架构要考虑的问题远比上面的示意图复杂的 多,主要包括但不限于如下问题: 通过服务实现组件化 根据业务组织系统 做产品而不是做项目 简单高效的通信协议 自动化基础设施 面向失败的设计 具备进化能力的设计 纵然有 Martin Fowler 这样的大神在前面引路,但是我们依然认为“微服务”不是一 个被设计出来的架构,而是在不断是尝试中总结出的一套适合在互联网行业使用的架构模 式。以下的是微服务较为完整的架构图 今天我们所说的“微服务”是一个庞大且复杂的概念集合,它既是一种架构模式,也是 实现这种架构模式时所使用的技术方案的集合。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。