企业应用框架的演进
- 过去的10年是云计算高速发展的10年。企业从自建传统的IDC机房的阶段,过渡到了通过云服务厂商租用的方式。
- 同时随着基础设施部署方式的变化,企业级应用的软件架构也不断的进行着演进。经历了从单体应用到初步服务化(SOA)再到微服务化的过程
早期企业应用架构-单体应用
特点
- 单一开发语言,单一应用,集中部署
- 数月甚至数年的时间的迭代流程。
- 开发,QA,运维人员分离。
缺点
- 沟通成本高,迭代速度慢。
- 应用耦合度高,难于扩容和扩展。
- 稳定性差,牵一发而动全身。
初步服务化应用架构—SOA
随着软件规模的扩大和架构的演进,2000年左右开始出现了初步的分布式服务化软件架构及SOA( Service-Oriented Architecture ) 。
特点
- 模块解耦,便于扩展,稳定性提高
- 架构清晰灵活,开发语言的选择不受限制
- 兼容旧系统。平滑过渡。
缺点
- 存在明显单点,高并发受限,一损俱损。
- 转发模式效率不高,无法支持高性能
- 缺乏配套的服务治理能力
微服务架构与微服务框架
微服务架构的出现
2012年:微服务架构的先驱者Fred George在Agile India上分享了他的经验。他和所在的团队是如何将100万行的传统J2EE程序。通过解耦、自动化验证等实践,逐渐分解成20多个5K行代码的小服务,又分解成200多个500行代码的微服务的过程
2014年:随着服务化的深入,两位软件架构的大牛Martin Fowler与James Lewis在SOA的基础上,提出了一种新的微服务软件架构。
微服务去中心化服务调用方式
- 微服务在SOA架构下做了进一步的改进,相比较于SOA架构下所有服务之间的调用都通过ESB总线转发。
- 微服务组件只需要通过注册中心实注册和获得列表。
- 中间的调用过程即可直接联络,不再需要第三者。降低了对中心的依赖,提高了调用效率。
微服务之间的调用时序图
- 服务提供者上线时,向注册中心注册自己。
- 服务调用者向注册中心查询提供者信息。
- 注册中心返回最适合的服务提供者。
- 服务调用者直接向提供者发起请求。
- 提供者返回请求结果
初步微服务化改造后引发的新问题
开发团队在实施微服务的过程中,除了服务发现之外,还面面临了诸多的挑战,包括负载均衡、熔断降级、灰度发布、故障切换、分布式跟踪等,这对开发团队提出了非常高的技术要求。
微服务治理框架和常见的开源实现
2014年由Netfilx开源产品封装而成的Spring Cloud是一套微服务系统架构的一站式解决方案,提供了如服务发现注册、配置中心、微服务网关、负载均衡、断路器、数据监控等功能组件。
微服务架构内部组件的关系
微服务架构的优劣总结
微服务架构优点
- 每个微服务可以单独的设计,开发,测试,部署上线。
- 每个微服务功能较小,可以进行更加全面的测试
- 系统整体健壮性提高,单个服务错误不会导致全部功能不可用
微服务架构缺点
- 微服务拆分力度,和服务划分方式需要经验
- 微服务的核心支持组件和自动化部署工具需要精心维护
- 分布式调用一旦出BUG比较难定位,事务处理的复杂度也大大提高
下一代微服务框架ServerMesh
- 在Service Mesh架构中,给每一个微服务实例部署一个Sidecar Proxy。
- 该Sidecar Proxy负责接管对应服务的入流量和出流量,并将微服务架构中的服务订阅、服务发现、熔断、限流、降级、分布式跟踪等功能从服务中抽离到该Proxy中。
SideCar的主要功能
- 流量管理
- 可观察性策略执行
- 服务身份和安全平台支持
- 集成和定制
阿里微服务框架
2007年10月之前阿里的技术架构
特点
- 技术团队规模500人左右
- 基于传统应用开发架构,单一War应用。
- 业务每年翻倍增长
问题
- 项目团队协同代价高
- 后端数据库连接到达上限。
- 应用紧密耦合,错误难以隔离
淘宝基于新框架的服务化改造
Spring Cloud Alibaba全家桶形成微服务领域最佳实践
Spring Cloud Alibaba
- 提供分布式应用服务开发的一站式解决方案。
- 项目包含开发分布式应用服务的必需组件
- 方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务
阿里巴巴开源的微服务产品
- 服务注册发现:Nacos
- 分布式配置:Nacos
- RPC调用:Dubbo
- 消息驱动: RocketMQ
- 分布式事务:Seata
- 在线调试:Arthas
- 限流&熔断: Sentinel
- 混沌测试:ChaosBlade
- 消息队列: RocketMQ
基于RocketMQ的消息产品家族
RocketMQ
- 阿里巴巴在2012年开源的第三代分布式消息中间件,并在2017年正式成为Apache顶级开源项目
- 承载着阿里巴巴所有核心链路的消息流转,历经多年双11万亿级消息洪峰的严苛考验
阿里前端全面拥抱云原生Serverless
- 淘系、飞猪、高德、CBU、ICBU、优酷、考拉等十数BU,落地了以Node.js FaaS在线服务架构为核心的云端一体研发模式,交付平均提效38.89%。
- 日常弹性下也较以往减少30%计算成本。