- ESB:各个系统之间不同的接口进行互通。如json、xml、webservice等不同的接口,ESB去适配已经存在的各种异构系统,屏蔽异构系统对外提供各种不同的接口方式,以此来达到服务高效的,互联互通
松耦合:减少各个服务间的依赖和互相影响
SOA架构
- SOA架构比较高层级的架构设计理念,一般说SOA架构来构建了什么系统,不会说某个独立的系统采用了SOA架构
- SOA提出的背景是企业内部的IT系统重复建设切效率低下
- SOA解决了传统IT系统重复建设和拓展效率低的问题,但其本身也引入了更多的复杂性的ESB
- ESB设计也是无奈之举,因为各种系统已经存在很多年了,重写或者改造成本非常大,只能通过ESB去适配已经存在的各种异构系统
微服务
微服务与SOA的关系
- 服务是SOA的实现方式,服务就是更细粒度的SOA
- 微服务是去掉ESB后的SOA,改为轻量级的http RESTFul实现
- 微服务是一种和SOA相似,但本质上不同的架构理念
微服务并不是没有代价,而是会带来系统复杂度、运维复杂度、性能下降等问题
微服务陷阱
- 服务划分过细,服务间关系复杂
- 服务数量太多,团队效率急剧下降
- 调用链太长,性能下降
- 调用链太长,问题定位困难
- 没有自动化支撑,无法快速交付
对于小团队建议使用
三个火枪手,一个微服务三个人负责开发
服务拆分方法
- 基于业务逻辑拆分
- 基于可扩展拆分
- 基于可靠性拆分,带来的好处
- 避免非核心业务故障影响核心业务
- 核心服务高可用方案可以更简单
- 能够降低高可用成本
- 基于性能拆分
上四种拆分可以据实际情况自由排列组合
微服务基础设施
- 服务发现,两种实现方式,自己式,代理式
- 服务路由
- 服务容错,常见的服务容错请求重试,流控,服务隔离
- 服务监控
- 服务跟踪
- 服务安全
- 自动化测试
- 自动化部署
- 配置中心
- 接口框架
- API网关