构建大型网站和大型企业系统架构的关键在于系统分布式和服务化,系统大容量、灵活性、弹性及自治是非常大的挑战。近年来,越来越多的网站需要同时提供WEB、移动App、OpenAPI多种服务方式。微服务是近年来最热的技术之一,微服务框架具备服务注册中心、服务调用、服务路由、服务发布/灰度发布等。随着DevOps及Docker容器技术发展,微服务架构逐渐流行。
单体架构的问题
- 代码重复率高,公共业务层多次重复开发,导致研发成本上升,代码质量下降
- 需求变更困难,无法有效拆分系统影响大,需求交付周期长
- 学习成本高,协作效率低,业务流程长,代码冗长,形成功能孤岛
- RPC框架不统一,通信协议缺少异常封装处理,对开发技能要求高
- 系统稳定性变差,单节点引起雪崩效应,影响业务正常运行
- 部署效率低,编译打包时间长
分布式架构特性
- 基于配置中心的服务注册与发现机制,支持服务自动发现和健康状态检测
- 依赖解耦,配置化、应用侵入低
- 服务治理,服务降级、服务链路跟踪
- 高可用、高性能、可伸缩扩展、自动运维
RPC框架
RPC(Remote Procedure Call)框架目标是让远程服务调用简单、透明,屏蔽底层传输协议和序列化方式,开发者不用关心底层通信细节和调用过程,象调用本地服务一样简单。RPC框架由服务提供者、服务发布者、服务代理三部分组成。单凭RPC框架无法解决服务治理问题,面向大规模服务化需要服务治理完成。
SOA架构
SOA(Service-Oriented Architecture,面向服务的架构)是粗粒度、松耦合服务架构,服务间通过简单、精确定义接口进行通讯,SOA以服务总线的形式对外提供服务,应用通过SOAP、REST、RPC调用服务,ESB 是实现 SOA 的主要技术之一,服务治理为集中式。
微服务架构
微服务架构是SOA的升华,核心思想是组件化、服务化、去中心化,实现高内聚、松耦合,局部自治。将单体业务系统拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
微服务与SOA区别
架构设计原则
- 避免单点故障
- 无状态设计
- 回滚设计
- 应用系统监控
- 数据中心多活
- 选择稳定版本
- 资源隔离设计
- 系统水平扩展
- 非核心功能选购成熟产品
- 快速迭代降低交付风险
传统垂直架构改造的核心是对应用做服务化改造,服务化改造的核心是分布式服务框架。通过业务公共能力抽象成原子服务,对复杂应用进行水平拆分和服务化,实现服务消费与提供者解耦。