系统架构师(九)软件架构设计(一)

软件架构的研究内容主要涉及软件架构描述、软件架构设计、软件架构风格、软件架构评价和软件架构的形成方法等。
软件设计人员学习软件架构知识旨在站在较高的层面上整体地解决好软件的设计、复用、质量和维护等方面的实际问题。

软件架构概念

定义 :软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见属性及它们之间的关系组成。

软件系统架构是关于软件系统的结构、行为和属性的高级抽象。

  • 在描述阶段,主要描述直接构成系统的抽象组件以及各个组件之间的连接规则,特别是相对细致地描述组件的交互关系。
  • 在实现阶段,这些抽象组件被细化为实际的组件,比如具体类或者对象。

软件系统架构不仅指定了软件系统的组织和拓扑结构,而且显示了系统需求和组件之间的对应关系,包括设计决策的基本方法和基本原理。

重要性:

  1. 项目关系人之间交流的平台。
  2. 早期设计决策。
  3. 在较高层面上实现软件复用
  4. 架构对开发的指导与规范意义不容忽略

软件架构的建立应位于概要设计之前,需求分析之后

架构的模型: 将 5 种模型有机地统一在一起刻画软件架构

  1. 结构模型:以架构的构件、连接件和其他概念来刻画结构
  2. 框架模型:以一些特殊的问题为目标建立只针对和适应该问题的结构
  3. 动态模型:研究系统“大颗粒”的行为性质
  4. 过程模型:研究构造系统的步骤和过程
  5. 功能模型:架构由一组功能构件按层次组成

“4+1”的视图模型

在采用 Web Service 作为 SOA 的实现技术时,应用系统大致可以分为六个层次,分别是底层传输层、服务通信协议层、服务描述层、 服务层、业务流程层和服务注册层。

  1. 底层传输层:主要负责消息的传输机制,HTTP、JMS(Java MessagingService,Java 消息服务)和 SMTP 都可以作为服务的消息传输协议,其中 HTTP 使用最广。
  2. 服务通信协议层:主要功能是描述并定义服务之间进行消息传递所需的技术标准,常用的标准是 SOAP 和 REST 协议。
  3. 服务描述层:主要以一种统一的方式描述服务的接口与消息交换方式,相关的标准是 WSDL。
  4. 服务层:主要功能是将遗留系统进行包装,并通过发布的 WSDL 接口描述被定位和调用。
  5. 业务流程层:主要功能是支持服务发现,服务调用和点到点的服务调用,并将业务流程从服务的底层调用抽象出来。
  6. 服务注册层:主要功能是使服务提供者能够通过 WSDL 发布服务定义,并支持服务请求者查找所需的服务信息。相关的标准是 UDDI。

2. 服务注册表:

提供一个策略执行点(Policy Enforcement Point,PEP),在这个点上,服务可以在 SOA 中注册,从而可以被发现和使用。

  1. 服务注册:指服务提供者向服务注册表发布服务的功能(服务合约),包括服务身份、位置、方法、绑定、配置、方案和策略等描述性属性。
  2. 服务位置:指服务使用者,帮助它们查询已注册的服务,寻找符合自身要求的服务。这种查找主要是通过检索服务合约来实现的
  3. 服务绑定:服务使用者利用查找到的服务合约来开发代码,开发的代码将与注册的服务进行绑定,调用注册的服务,以及与它们实现互动。

3. 企业服务总线:

ESB 是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。

ESB 是由中间件技术实现并支持 SOA 的一组基础架构,与 是传统中间件技术与 XML、Web Service 等技术结合的产物 ,是在整个企业集成架构下的面向服务的企业应用集成机制。

(1)支持异构环境中的服务、消息和基于事件的交互,并且具有适当的服务级别和可管理性。
(2)通过使用 ESB,可以在几乎不更改代码的情况下,以一种无缝的非侵入方式使现有系统具有全新的服务接口,并能够在部署环境中支持任何标准。
(3)充当缓冲器的 ESB(负责在诸多服务之间转换业务逻辑和数据格式)与服务逻辑相分离,从而使不同的系统可以同时使用同一个服务,不用在系统或数据发生变化时,改动服务代码。
(4)在更高的层次,ESB 还提供诸如服务代理和协议转换等功能。允许在多种形式下通过像 HTTP、SOAP 和 JMS 总线的多种传输方式,主要是以 络服务的形式,为发表、注册、发现和使用企业服务或界面提供基础设施。
(5)提供可配置的消息转换翻译机制和基于消息内容的消息路由服务,传输消息到不同的目的地。
(6)提供安全和拥有者机制,以保证消息和服务使用的认证、授权和完整性。

ESB 优势:

(1)扩展的、基于标准的连接。ESB 形成一个基于标准的信息骨架,使得在系统内部和整个价值链中可以容易地进行异步或同步数据交换。

(2)灵活的、服务导向的应用组合。基于 SOA,ESB 使复杂的分布式系统(包括跨多个应用、系统和防火墙的集成方案),使系统具有高度可扩展性。

(3)提高复用率,降低成本。

(4)减少市场反应时间,提高生产率。ESB 通过构件和服务复用,按照 SOA 的思想简化应用组合,基于标准的通信、转换和连接来实现这些优点。

微服务

微服务的核心特点为:小, 且专注于做?件事情、轻量级的通信机制、松耦合、独立部署。

微服务的优势:

  • 技术异构性:每个服务都是一个相对独立的个体,都可以选择适合于自身的技术来实现。可以混合使用多种编程语言、开发框架以及数据存储技术
  • 扩展:单块系统中,我们要做扩展,往往是整体进行扩展。而在微服务架构中,可以针对单个服务进行扩展。
  • 简化部署:简单的服务更容易部署, 每个服务的部署都是独立的, 单个服务出问题不会导致整个系统的故障.
  • 与组织结构相匹配:为服务强调模块化的结构, 可以将架构与组织结构相匹配,避免出现过大的代码库,从而获得理想的团队大小及生产力。
  • 可组合性:系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构建应用
  • 对可替代性的优化:可以在需要时轻易地重写服务,或者删除不再使用的服务。

微服务面临的挑战:

  • 分布式系统的复杂度:通过 络通信,性能、可靠性、数据一致性受影响
  • 运维成本:每个服务都需要独立的 配置、部署 、监控、日志收集等,因此运维成本呈指数级增长。
  • 部署自动化:每个服务的修改都需要独立部署。很难有效地构建自动化部署流水线,降低部署成本、提高部署频率。
  • DevOps 与组织结构:微服务不仅表现出一种架构模型,同样也表现出一种组织模型。这种新型的组织模型意味着开发人员和运维的角色发生了变化,开发者将承担起服务整个生命周期的责任,包括部署和监控,而运维也越来越多地表现出一种顾问式的角色,尽早考虑服务如何部署。
  • 服务间依赖测试:
  • 服务间依赖管理:如何清晰有效地展示服务之间的依赖关系

客户机/服务器系统开发时可以采用不同的分布式计算架构:

  • 分布式表示架构是将表示层和表示逻辑层迁移到客户机,应用逻辑层、数据处理层和数据层仍保留在服务器上;
  • 分布式数据架构是将数据层和数据处理层放置于服务器,应用逻辑层、表示逻辑层和表示层放置于客户机;
  • 分布式数据和应用架构是将数据层和数据处理层放置在数据服务器上,应用逻辑层放置在应用服务器上,表示逻辑层和表示层放置在客户机上。

分布式系统开发分为5个逻辑计算层:

  • 表示层实现用户界面;
  • 应用逻辑层包括为支持实际业务应用和规则所需的应用逻辑和处理过程,如信用检查、数据计算和分析等;
  • 数据处理层包括存储和访问数据库中的数据所需的应用逻辑和命令,如查询语句和存储过程等:
  • 数据层是数据库中实际存储的业务数据。

微服务与SOA对比:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月13日
下一篇 2022年8月13日

相关推荐