Dubbo 之一架构演进

单一应用架构

all-in-one

  • 优点
    1. 简单实用、便于维护,开发成本较低
  • 缺点
    1. 部署麻烦,添加、修改个别模块功能,需要重新将所有模块的代码部署到各个服务器
    2. 单台服务器的性能有限,不适合对外提供所有模块功能
    3. 存在单点故障问题
  • 关键点
    1. 数据访问框架(ORM)

垂直应用架构

vertical-application

  • 优点
    1. 性能扩展比较容易
    2. 协同开发比较容易,每个独立的模块由对应的开发人员负责
  • 缺点
    1. 每个模块都包含了 MVC 三层的所有代码
    2. 不适用页面经常修改的场景,如果单个模块对应的页面修改了,需要重新部署该模块的所有代码到服务器
    3. 各个模块之间不可能完全独立,大量应用之间需要相互交互,调用关系相对复杂
  • 关键点
    1. 用于加速前端页面开发的 Web 框架(MVC)

分布式服务架构

distributed-service

  • 优点
    1. 垂直和横向扩展都比较容易
    2. 前端页面可以快速迭代开发
    3. 提高了系统整体的高可用、高性能、高并发方面的能力
  • 缺点
    1. 系统的复杂性提高了很多,包括开发与运维方面,
  • 关键点
    1. 分布式服务框架 (RPC)
    2. 如何拆分业务与提高业务的复用程度

流动计算架构(SOA)

SOA
分布式架构中的服务越来越多,导致交互越发复杂,不可避免会出现资源浪费的情况。如何才能更好地管理复杂的调用关系、提高资源利用率、对整个服务集群进行动态控制呢?服务治理被引入来解决此问题。
服务治理一般包括以下内容:
1)通过注册中心管理所有服务(即服务注册与发现)
2)路由选择、负载均衡及容错处理
3)服务升、降级,熔断,权重调整
4)服务过滤(黑名单、白名单)
5)服务状态检测、监测
6)服务权限控制
7)服务依赖关系
8)监控与统计
9)资源隔离

Dubbo 官方的架构演进图

dubbo-framework