免责声明
我希望我不要踩任何人的脚趾或冒犯任何一个概念的狂热者
背景
我一直在寻找面向服务的体系结构和微服务之间的真正区别,而没有找到明确的答案。
我读到以下内容:
- SOA的副作用
- SOA是反模式
- 微服务来修复SOA的故障
- ESB并不是真正的ESB,而是EAI
- 对消息中介的过度依赖
- 供应商正在滥用SOA的概念并试图出售其产品
- SOA不受控制地增长
但是,仍然没有明确定义面向服务的体系结构(作为一个概念)和微服务(作为一个概念)之间的体系结构差异
据我了解,它们都具有:
- 服务提供商,只做一件事
- 服务网关/ ESB将这些服务提供给消费者
- 服务使用者,通过ESB /服务网关访问服务
题
那么,除了将SOA重新标记为微服务之外,还有什么不同吗?限制微服务成为宏的技术约束吗?
注意:我不是在寻找观点,只是在寻找事实,希望在要点中
参考文献
- 软件工程问题
- 马丁·福勒(Martin Fowler)的网站(我认为他讨厌这段时间)
- 信息世界
- 迈克尔·富瑟斯的网站
- 堆栈溢出问题
更新资料
似乎在Stack溢出问题中也发生了类似的辩论,无论是否区分微服务都是变相的面向服务架构。
SO问题的结论:
- MS是SOA 的特例
- MS支持较小规模的应用程序托管服务
- MS取决于技术(使用HTTP而非开放协议选项)
- MS依靠技术来加强纪律(服务的自动部署)
- MS考虑使用ESB(邪恶),但使用API网关,IMHO是ESB的一种
如果满足以下条件,那么可以得出结论,MS是SOA:
- MS是否支持编排概念?一个或多个主流程管理工作流程
- MS中是否有消息代理层?一组适配器,将消息格式从服务生产者的消息空间转换为服务使用者
- 微服务可以从整体企业应用程序读取数据吗?可以是单片应用程序的API吗?还是必须是能够独立运行的独立的自包含应用程序?
如果最后一个问题的答案为否,那么微服务将无法处理复杂的工作流程系统,例如信用卡管理系统或对帐系统
如今,分布式计算的方式是小型的,松散耦合的,分散的,容错的“代理”或“模块”,它们具有明确的特定职责,并通过简单,直接的通信协议连接在一起。SOA与所有这些相反。您正在观察表面相似之处的阴谋,而忽视差异之山。
—
罗伯特·哈维
SOA是否也应该实现小的松耦合组件?我知道在SOA的后端,是多功能的应用中,主要是描述为“最佳”到其他的应用程序和其他应用程序的使用服务提供服务,使用任何消息格式,协议,适用于它的媒体接入
—
甲.Rashad
它应该,但是正如您刚刚指出的那样,通常不是。
—
罗伯特·哈维
Martin Fowler's Site (I think he hates it big time)
当我去巴塞罗那参加他的演讲时,那不是我的感觉。他知道折衷方案,以及人们如何盲目地转移到此体系结构,而没有考虑到MS并不适合每个人。
微服务是一堆营销。没有区别。人们在几年前就在这样做,现在有人给它起了个名字,现在又有了新的名字。您是正确的,MS是SOA的(非特殊)情况。请停止尝试从中做出一些事情。
—
凯尔·约翰逊