9 分布式架构

  • 9.1 客户端服务端架构
  • 9.2 多层架构
  • 9.3 代理(Broker)架构
  • 9.4 面向服务的架构

  • 中间件是分布式架构的基础结构。如图中间件

  • 分布式架构侧重于透明性、可靠性、可用性

  • 关于透明性

    • 访问:隐藏访问资源的方式和数据平台的差异
    • 位置:隐藏资源的位置
    • 技术:对用户隐藏不同的技术,比如编程语言,操作系统
    • 迁移/重定位:隐藏使用时可能被移动到另一个位置的资源
    • 重复:隐藏可能复制在其他地方的资源
    • 并发:隐藏可能与其他用户共享的资源
    • 错误:对用户隐藏资源的错误和复原
    • 一致性:隐藏资源或软件是在内存或磁盘
  • 优点:资源共享、开放性、并发、易扩展、容错性

  • 缺点:复杂度、安全性降低、不易管理、不可预测

9.1 客户端服务端架构

  • 如图客户端-服务端架构
  • 服务端提供服务,客户端使用这些服务
  • 服务端不需要知道客户端,客户端需要知道服务端的身份
  • 优点:分离用户接口展示和业务逻辑处理;服务组件复用,可能并发;简化设计和开发;易迁移或整合已有应用到分布式环境;多客户端访问一个高性能的服务可充分利用资源
  • 缺点:缺少异构架构处理需求改变;安全问题;服务的可用性和扩展性降低

9.2 多层架构

  • 如图多层架构
  • 一般分为三层:展示层、应用层(也叫业务逻辑层、逻辑层、中间层)和数据层
    • 如图三层架构
  • 优点:易管理、性能好;可复用,易扩展;多线程支持,降低网络负载;易维护,灵活性高
  • 缺点:不易测试,缺少测试工具;可靠性和可用性对服务要求更高

9.3 代理(Broker)架构

  • 中间件架构,在分布式计算中使用,协调注册的服务端和客户端之间的通信
  • 对象之间通信使用中间件系统,叫做对象请求代理(系统总线)
    • 客户端和服务端不会直接交互。它们各自直接连接自己的代理,和 mediator-broker 通信
    • 服务端通过注册和发布接口到 broker 提供服务,客户端可以通过 broker 静态或动态查找请求服务
    • 通用对象请求代理架构CORBA(CORBA, Common Object Request Broker Architecture)是一个实现的较好的例子
  • 组件包括
    • broker:负责协调通信,比如转发和分发结果和异常
    • 协商服务请求,定位一个合适的服务端并发送请求,发送回复给客户端
    • 维护服务端的注册信息,包括它们的功能、服务和定位信息
    • 给客户端发送请求和服务端发送回复提供 API
    • stub:静态编译阶段生成,部署在客户端,作为客户端的代理
    • 作为客户端和 broker 的协调者
    • 在协议层隐藏进程间通信(IPC, inter-process communication)
    • 整合参数值,分割服务端返回的结果
    • skeleton:服务端接口编译生成,部署在服务端,作为服务端的代理
    • 封装了底层特定系统的网络函数,提供高级的 API 来协调服务端和 broker
    • 接收请求,解包请求,分割方法参数,调用合适的服务,发送结果,发送给客户端
    • bridge:基于不同的通信协议连接两个不同的网络,协调不同的 broker
    • 可选组件,隐藏两个 broker 互相操作的实现细节
  • 如图代理架构
  • CORBA 是针对对象请求代理的国际化标准——一个管理分布式对象通信的中间件
    • 如图CORBA

9.4 面向服务的架构

  • 如图面向服务的架构
  • 面向服务的架构(SOA, service-oriented architecture)是一个客户端/服务端设计,支持业务驱动
    • 应用包含软件服务端和软件服务消费者
    • 服务之间的连接通过通用的基于消息的协议(比如 SOAP 网络服务协议),可以在服务之间发送请求和回复
  • 特点:分布式部署;可组合性;互用性;复用性
  • SOA 操作如图SOA 操作
  • 优点:
    • 低耦合,可以充分利用已有的服务资源,无关平台和技术限制
    • 无状态,每个服务组件和其他服务相互独立
    • 只要不改变接口,修改服务的实现不影响其他服务
    • 客户端和服务端可以访问其他服务,无关平台、技术、生产商、语言实现
    • 资产和服务的复用性,只要知道公共接口就可以使用
    • 在时间和花费上更有效
    • 提高了可扩展性,为系统提高标准连接
    • 易整合,改善了内部互操作性

相关