阿里技术大牛:一份架构师成神路线图( 九 )


③如何做到单元化:先看下图传统的服务架构 , 服务是分层的 , 每一层使用不同的分区算法 , 每一层都有不同数量的节点 , 上层节点随机选择下层节点 。
 

阿里技术大牛:一份架构师成神路线图

文章插图
 
 
再看下图单元化架构 , 其为性能和隔离性而设计 , 上层节点访问指定下层节点 。
 
阿里技术大牛:一份架构师成神路线图

文章插图
 
 
在单元化架构下 , 服务虽然分层划分 , 但每个单元自成一体 。按照层次来讲的话 , 所有层使用相同的分区算法 , 每一层都有相同数量的节点 , 上层节点也会访问指定的下层节点 。
SOA 架构
SOA(Service-Oriented Architecture , 面向服务的架构)是一个组件模型 , 它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来 。
接口是采用中立的方式进行定义的 , 它应该独立于实现服务的硬件平台、操作系统和编程语言 。
这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互 。
面向服务架构 , 它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用 。
服务层是 SOA 的基础 , 可以直接被应用调用 , 从而有效控制系统中与软件代理交互的人为依赖性 。
SOA 的实施具有几个鲜明的基本特征 。实施 SOA 的关键目标是实现企业 IT 资产的最大化作用 。
要实现这一目标 , 就要在实施 SOA 的过程中牢记以下特征:
  • 可从企业外部访问
  • 随时可用
  • 粗粒度的服务接口分级
  • 松散耦合
  • 可重用的服务
  • 服务接口设计管理
  • 标准化的服务接口
  • 支持各种消息模式
  • 精确定义的服务契约
为了实现 SOA , 企业需要一个服务架构 , 下图显示了一个例子:
 
阿里技术大牛:一份架构师成神路线图

文章插图
 
 
在上图中 ,  服务消费者(service consumer)可以通过发送消息来调用服务 。这些消息由一个服务总线(service bus)转换后发送给适当的服务实现 。
这种服务架构可以提供一个业务规则引擎(business rules engine) , 该引擎容许业务规则被合并在一个服务里或多个服务里 。
这种架构也提供了一个服务管理基础(service management infrastructure) , 用来管理服务 , 类似审核 , 列表(billing) , 日志等功能 。
此外 , 该架构给企业提供了灵活的业务流程 , 更好地处理控制请求(regulatory requirement) , 例如 Sarbanes Oxley(SOX) , 并且可以在不影响其他服务的情况下更改某项服务 。
微服务架构
先来看看传统的 Web 开发方式 , 通过对比比较容易理解什么是 Microservice Architecture 。
和 Microservice 相对应的 , 这种方式一般被称为 Monolithic(单体式开发) 。
所有的功能打包在一个 WAR 包里 , 基本没有外部依赖(除了容器) , 部署在一个 JEE 容器(Tomcat , JBoss , WebLogic)里 , 包含了 DO/DAO , Service , UI 等所有逻辑 。
 
阿里技术大牛:一份架构师成神路线图

文章插图
 
 
优点:
  • 开发简单 , 集中式管理 。
  • 基本不会重复开发 。
  • 功能都在本地 , 没有分布式的管理和调用消耗 。
缺点:
  • 效率低:开发都在同一个项目改代码 , 相互等待 , 冲突不断 。
  • 维护难:代码功能耦合在一起 , 新人不知道从何下手 。
  • 不灵活:构建时间长 , 任何小修改都要重构整个项目 , 耗时 。
  • 稳定性差:一个微小的问题 , 都可能导致整个应用挂掉 。
  • 扩展性不够:无法满足高并发下的业务需求 。
常见的系统架构遵循的三个标准和业务驱动力: