微服务与 SOA

  • 注:文章来源:极客时间的专栏《从0开始学架构》
关于SOA和微服务的关系和区别,大概分为下面几个典型的观点
1、微服务是SOA的实现方式
  • 观点认为SOA是一种架构理念,而微服务是SOA理念的一种具体实现方法
  • 例如,“微服务就是使用HTTP RESTful协议来实现ESB的SOA” “使用SOA来构建单个系统就是微服务”和“微服务就是更细粒度的SOA”

2、微服务是去掉ESB后的SOA
  • 观点认为传统SOA架构最广为人诟病的就是庞大、复杂、低效的ESB,因此将ESB去掉,改为轻量级的HTTP实现,就是微服务

3、微服务是一种和SOA相似但本质上不同的架构理念
  • 相似点在于两者都关注“服务”,都是通过服务的拆分来解决可扩展性问题
  • 本质上不同的地方在于几个核心理念的差异:是否有ESB、服务的粒度、架构设计的目标

SOA和微服务的对比
1、服务粒度
  • SOA的服务粒度要粗一些,而微服务要细一些
  • 例如,对一个大型企业来说,“员工管理系统”就是一个SOA架构中的服务;而如果采用微服务架构,则“员工管理系统”会被拆分为更多的服务,比如“员工信息管理”“员工考勤管理”“员工假期管理”和“员工福利管理”等更多服务
2、服务通信
  • SOA采用了ESB作为服务间通信的关键组件,负责服务定义、服务路由、消息转换、消息传递,总体上是重量级的实现;微服务推荐使用统一的协议和格式,例如,RESTful协议、RPC协议,无须ESB这样的重量级实现
3、服务交付
  • SOA对服务的交付并没有特殊要求,因为SOA更多考虑的是兼容已有的系统;微服务的架构理念要求“快速交付”,相应地要求采取自动化测试、持续集成、自 动化部署等敏捷开发相关的最佳实践
4、应用场景
  • SOA更加适合于庞大、负责、异构的企业级系统,这类系统都发展多年,采用不同的企业级技术,有的是内部开发的,有的是外部购买的,无法完全推倒重来 或者进行大规模的优化和重构,由于成本和影响太大,只能采用兼容的方式进行处理,而承担兼容任务的就是ESB
  • 微服务更加适合于快速、轻量级、基于Web的互联网系统,这类系统业务变化快,需要快速尝试、快速交付;虽然开发技术可能差异很大(Java、C++、.NET等),但对外接口基本都是提供HTTP RESTful风格的接口,无须考虑在接口层进行类似SOA的ESB处理
SOA和微服务对比如下:

微服务的陷阱
1、服务划分过细,服务间关系复杂

2、服务数量太多,团队效率急剧下降
3、调用链太长,性能下降
4、调用链太长,问题定位困难

5、没有自动化支撑,无法快速交付
6、没有服务治理,微服务数量多了后管理混乱

注:有兴趣了解极客时间专栏的同学,可以查看极客时间专栏—可提供返现服务

转载于:https://juejin.im/post/5cb878466fb9a0688c039c06

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值