微服务与SOA的区别
微服务与 SOA 到底有什么区别,各自的应用场景是什么?
- 到底在什么样的情况才适合使用微服务架构?
如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化,微服务是SOA的一种轻量级的解决方案,其本质还是SOA,只是更容易落地而以。微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。每个小应用从前端webui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。
微服务的特点
- 技术的异构性:各个微服务的技术栈从前到后可以自成一体
- 弹性:某个服务出现故障,会极小的影响其他服务,相对于SOA一个服务处故障可能整个SOA不可用,微服务影响范围小,且可以通过熔断,限流,降级等策略来极小化影响范围,并且由于服务的微小可以快速解决快速部署。
- 扩展:庞大的服务只能作为一个整体进行扩展,微服务可以从很小的角度去扩展,从而节约成本和时间。
- 简化部署:部署的频次更高,还可以结合灰度部署降低线上事故风险
- 与组织结构相匹配:一个小的团队负责一个微服务或者几个微服务的全生命周期
- 可组合性:面对外部不同的调用者如web,mobile等,微服务可以组合式的提供服务
- 可替代性:对于某个微服务可以快速重写替换。
微服务架构的不足
- 微服务把原有的项目拆分成多个独立工程,增加了代码管理、集成测试、运维、监控等的复杂度。
- 微服务架构需要保证不同服务之间的数据一致性,引入了分布式事务和异步补偿机制,为设计和开发带来一定挑战。