文章目录加载中

可扩展:SOA和微服务

# SOA:面向服务的架构

SOA 有 3 个关键概念:

  • 服务:所有业务功能都是服务,可以对外提供
  • ESB(企业服务总线):类似于计算机总线,用于将各个系统“串”在一起
  • 松耦合

SOA 解决了传统 IT 功能“重复建设”的问题,但是 ESB 复杂度较高。它要实现各个服务之间协议转换、数据转换、动态路由等功能。

SOA 多用于某些服务运行多年,无法改造重写,包括数据协议等方面。此时借助 SOA 架构,为 ESB 接入老服务的数据协议,让其他服务可以调用。

# 微服务:面向服务的架构

微服务适用于快速、轻量的互联网系统。通常来说,数据传输协议均支持 http,接口规范遵循 RESTful 风格。所以不用向 SOA,需要 ESB 来处理异构系统。

微服务的难点在于:

  • 服务划分过细,依赖复杂
  • 调用链长,性能下降
  • 问题定位困难
  • 需要服务治理

微服务和 SOA 区别

微服务是把单个系统拆分,SOA 是把系统整合,方向刚好相反。

# 微服务的基础设施

  • 自动化:测试(单测、e2e)、部署(CI)
  • 配置中心:统一下发,方便管理
  • 数据协议:传输协议(http)、接口规范(restful)、编码格式(json)
  • API 网关:提供外部系统访问的接口,处理鉴权(能否接入)、权限控制(针对服务接口)、路由、频控、安全加密、负载均衡等问题
  • 服务发现:服务注册、请求转发、负载均衡等,分为自理式和代理式。常用自理式,对服务的请求,不经过“中心”
  • 服务监控
  • 服务跟踪:跟踪请求在服务中的完整链路
本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog