架构学习笔记:微服务架构与SOA架构
微服务与SOA架构
关于微服务与SOA的关系和区别,主要有以下几个观点:
1.微服务是SOA的实现方式
主要是认为SOA是一种架构理念,而微服务是SOA理念的一种具体实现方式。
2.微服务是去掉ESB后的SOA
认为传统SOA架构最广为人诟病的就是庞大、复杂、低效的ESB,因此讲ESB去掉,改为轻量级的HTTP实现,就是为服务。
3.微服务是一种和SOA相似但本质傻姑娘不同的架构理念
这种观点认为微服务和SOA只是有点类似,但本质上是不同的架构设计理念。相似点主要在于两者都关注“服务”,都是通过服务的拆分来解决可扩展性的问题。本质上不同的地方在于几个核心理念的差异:是否有ESB、服务的粒度、架构设计的目标等。
接下来对比下SOA和微服务的一些具体做法:
1.服务粒度
整体上来看,SOA的服务粒度要粗一些,而微服务的服务粒度要细一些。
2.服务通信
SOA采用ESB作为服务间通信的关键组建,负责服务定义、服务路由、消息转换、消息传递,总体上是重量级的实现。
微服务推荐使用统一的协议和格式,例如RESEful协议、RPC协议、无须ESB这样的重量级实现。
3.服务交付
SOA对服务的交付并没有特殊要求,因为SOA更多考虑的是兼容已有的系统;微服务的架构理念要求“快速交付”,相应的要求采取自动化测试、持续集成、自动化部署等敏捷开发相关的最佳实践。
4.应用场景
SOA适合于庞大、复杂、异构的企业级系统。
微服务更加适合于快速、轻量级、基于Web的互联网系统。