分布式服务架构

构建大型网站和大型企业系统架构的关键在于系统分布式和服务化,系统大容量、灵活性、弹性及自治是非常大的挑战。近年来,越来越多的网站需要同时提供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区别

架构设计原则

  • 避免单点故障
  • 无状态设计
  • 回滚设计
  • 应用系统监控
  • 数据中心多活
  • 选择稳定版本
  • 资源隔离设计
  • 系统水平扩展
  • 非核心功能选购成熟产品
  • 快速迭代降低交付风险

传统垂直架构改造的核心是对应用做服务化改造,服务化改造的核心是分布式服务框架。通过业务公共能力抽象成原子服务,对复杂应用进行水平拆分和服务化,实现服务消费与提供者解耦。

Rust for Linux进展--Rust即将出现在Linux内核中 中台和平台有什么区别
微信公众号