系统架构师《架构图汇总》

信息系统架构案例分析

  1. 在航空业中,Ramp Coordination是指飞机从降落到起飞过程中所需要进行的各种业务活动的协调过程。需要协调的业务活动有:检查机位环境是否安全,以及卸货、装货和补充燃料是否方便和安全等。
  2. 三种类型航班:short turn around航班是降落后不久就起飞的航班、Arrival0nly航班指降落后需要隔夜才起飞的,Departure 0nly 航班是指每天一早第一班飞机。
  3. 每种细分的航班类型的Ramp Coordination 的流程都是略有不同。如此多的流程之间共享着一个业务活动的集合,如此多种类型的流程都是这些业务活动的不同组装方式。以服务为中心的企业集成中流程服务就是通过将这些流程间共享的业务活动抽象为可重用的服务,并通过流程服务提供的流程编排的能力将它们组成各种大同小异的流程类型,来降低流程集成成本,加快流程集成开发效率的。以服务为中心的企业集成,通过服务建模过程发现这些可重用的服务,并通过流程模型将这些服务组装在一起。
  4. Ramp Coordination相关的服务模型和Ramp Coordination流程相关的有两个业务组件:

①Ramp Control负责Ramp Control相关各种业务活动的组件;

②FLight Management负责航班相关信息的管理,包括航班日程,乘客信息等。

  1. 这两个业务组件分别输出如下服务。
  1. Retrieve Flight B0:由Flight Management 输出,主要用于提取和航班相关的数据信息(2)Ramp Coordination:由Ramp Control 输出,主要用于Ramp Coordination 流程的编排。(3)CheckSpot:由Ramp Control输出,用于检测机位安全信息。
  1. Check Unloading:由Ramp Control输出,用于检查卸货状况

(5)Check Loading:由Ramp Control输出,用于检查装货状况。

(6)Check Push Back:由Ramp Control输出,用于检查关门动作。

  1. 目前,Ramp Coordination流程需要4种类型的外围应用交互。

(1)从乘务人员管理系统提取航班乘务员的信息,

(2)从订票系统中提取乘客信息。

(3)从机务人员管理系统中提取机务人员信息。

(4)接收来自航班调度系统的航班到达事件。

表现层框架设计

  1. 软件层次式体系结构是最通用的架构,也被叫作N 层架构模式。大部分的应用会分成表现层(或称为展示层)、中间层(或称为业务层)、数据访问层(或称为持久层)和数据层。
  2. 使用XML设计表现层。
  3. UIP 提供了一个扩展的框架,用于简化用户界面与商业逻辑代码的分离的方法,可以用它来写复杂的用户界面导航和工作流处理,并且它能够复用在不同的场景、并可以随着应用的增加而进行扩展
  4. 使用UIP框架的应用程序把表现层分为了以下几层
    1. UserInterface Components:这个组件就是原来的表现层,用户看到的和进行交互都是这个组件它负责获取用户的数据并且返回结果
    2. User Interface Process Components:这个组件用于协调用户界面的各部分,使其配合后台的活动,例如导航和工作流控制,以及状态和视图的管理。用户看不到这一组件,但是这些组件为serInterface Components提供了重要的支持功能。
  5. 表现层动态生成设计:基于XML的界面管理技术可实现灵活的界面配置(静态)、界面动态生成和界面定制(动态)。其思路是用XML生成配置文件及界面所需的元数据,按不同需求生成界面元素及软件界面

中间层架构设计

  1. 组件设计:业务逻辑组件分为接口和实现类两个部分。接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法是整个系统运行的核心。增加业务逻辑组件的接口,是为了提供更好的解控制器无须与具体的业务逻辑组件耦合,而是面向接口编程
  2. 工作流设计:工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。工作流参考模型见图其包含6个基本模块,分别是工作流执行服务、工作流引擎、流程定义工具、客户端应用、 调用应用和管理监控工具

  1. interface1:过程定义导入/导出接口。这个接口的特点是:转换格式和A PI调用,从而支持过程定义信息间的互相转换。
  2. interface 2:客户端应用程序接口。通过这个接口工作流机可以与任务表处理器交互,代表用(2)interface 2:户资源来组织任务。然后由任务表处理器负责,从任务表中选择、推进任务项。由任务表处理器或者终端用户来控制应用工具的活动。
  3. interface 3:应用程序调用接口。允许工作流机直接激活一个应用工具,来执行一个活动。典型的是调用以后台服务为主的应用程序,没有用户接口。当执行活动要用到的工具,需要与终端用户交互,通常是使用客户端应用程序接口来调用那个工具,这样可以为用户安排任务时间表提供更多的灵活性。
  4. interface 4:工作流机协作接口。其目标是定义相关标准,以使不同开发商的工作流系统产品相互间能够进行无缝的任务项传递。
  5. interface 5:管理和监视接口。提供的功能包括用户管理、角色管理、审查管理、资源控制、过程管理和过程状态处理器等。

  1. 实体设计:业务逻辑层实体提供对业务数据及相关功能(在某些设计中)的状态编程访问。业务逻辑层实体可以使用具有复杂架构的数据来构建,这种数据通常来自数据库中的多个相关表。
  2. 在应用程序中表示业务逻辑层实体的方法有很多(从以数据为中心的模型到更加面向对象的表示法)如XML、通用DataSet、有类型的DataSet等。
  3. 如下左图是业务实体用XML表示,右图所示为用于0rder业务逻辑层实体的通用DataSet对象。此DataSet 对象具有两个Data Table 对象,分别保存订单信息和订单详细信息。每个DataTable 具有一个对应的UniqueConstraint 对象,用于标识表中的主键。此外,该DataSet 还有一个Relation对象,用于将订单详细信息与订单相关联。

  1. 业务框架位于系统架构的中间层,是实现系统功能的核心组件。采用容器的形式,便于系统功能的开发、代码重用和管理。下图便是在吸收了SOA思想之后的一个三层体系结构的简图
  2. 业务层采用业务容器的方式存在于整个系统当中采用此方式可以大大降低业务层和相邻各层的耦合表示层代码只需要将业务参数传递给业务容器,而不需要业务层多余的干预。如此一来,可以有效地防止业务层代码渗透到表示层。
  3. 在业务容器中,业务逻辑是按照Domain Model-Service-Control 思想来实现的。

(1)Domain Model是领域层业务对象,它仅仅包含业务相关的属性

(2)Service 是业务过程实现的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。

(3)Control服务控制器,是服务之间的纽带,不同服务之间的切换就是通过它来实现的。

数据访问层设计

  1. 工厂模式在数据库访问层的应用

首先定义一个操纵数据库的接口DataAccess,然后根据数据库的不同,由类工厂决定实例化哪个类

  1. 因为DataAccess 的具体实现类有一些共同的方法,所以先从DataAccess实现一个抽象的

AbstractDataAccess类,包含一些公用方法。然后,分别为SQL Server、0racle 和0leDb数据库编写三个数据访问的具体实现类。

  1. 现在已经完成了所要的功能,下面需要创建一个Factory类,来实现自动数据库切换的管理。这个类很简单,主要的功能就是根据数据库类型,返回适当的数据库操纵类。
  2. 事务处理设计

JavaBean中使用JDBC方式进行事务处理:在JDBC中,打开一个连接对象Connection 时,默认是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动地得到事务确认。为了能将多个S QL语句组合成一个事务,要将auto-commit模式屏蔽掉。在auto-commit 模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到事务确认。在最近一次commit()方法调用之后的所有S QL会在方法commit()调用时得到确认。

层次式架构案例分析

  1. 电子商务网站(网上商店PetShop)

  1. 从图13-16中可以看到,并没有明显的数据访问层设计。这样的设计虽然提高了数据访问的性能但也同时导致了业务逻辑层与数据访问的职责混乱。
  2. PetShop 3.0纠正了此前层次不明的问题,将数据访问逻辑作为单独的一层独立出来
  3. PetShop 4.0基本上延续了3.0的结构, 但在性能上作了一定的改进,引入了缓存和异步处理机制,同时又充分利用了ASP.Net2.0的新功能MemberShip。
  4. 可以看到,在数据访问层中,完全采用了“面向接口编程”思想。抽象出来的IDAL模块,脱离了与具体数据库的依赖,从而使得整个数据访问层有利于数据库迁移。DALFactory模块专门管理DAL对象的创建,便于业务逻辑层访问。SQLServerDAL 和0racleDAL模块均实现IDAL模块的接口,其中包含的逻辑就是对数据库的Select、Insert、Update和Delete操作。因为数据库类型的不同对数据库的操作也有所不同,代码也会因此有所区别。

  1. 此外,抽象出来的ID AL模块,除了解除了向下的依赖之外,对于其上的业务逻辑层同样仅存在弱依赖关系,如图13-20所示。
  2. 图13-20中,BLL是业务逻辑层的核心模块,它包含了整个系统的核心业务。在业务逻辑层中不能直接访问数据库,而必须通过数据访问层。注意,图13-20中对数据访问业务的调用,是通过接口模块ID AL来完成的。既然与具体的数据访问逻辑无关,则层与层之间的关系就是松散耦合的。如果此时需要修改数据访问层的具体实现,只要不涉及IDAL 的接口定义,那么业务逻辑层就不会受到任何影响。毕竟,具体实现的SQLServerDAL和0racaIDAL根本就与业务逻辑层没有半点关系。

云原生架构内涵

  1. 主要架构模式
  1. 服务化架构模式:典型模式是微服务和小服务模式。通过服务化架构,把代码模块关系和部署关系进行分离,每个接口可以部署不同数量的实例,单独扩缩容,从而使得整体的部署更经济。
  2. Mesh化架构模式:把中间件框架(如RPC、缓存、异步消息等)从业务进程中分离,让中间件SDK与业务代码进一步解耦,从而使得中间件升级对业务进程没有影响。分离后在业务进程中只保留很“薄”的Client部分。
  3. Serverless模式:将“部署”这个动作从运维中“收走”,使开发者不用关心应用运行地点、操作系统、网络配置、CPU性能等,也就是把应用的整个运行都委托给云
  4. 存储计算分离模式:在云环境中,推荐把各类暂态数据(如session)、结构化和非结构化持久数据都采用云服务来保存,从而实现存储计算分离。
  5. 分布式事务模式:大颗粒度的业务需要访问多个微服务,必然带来分布式事务问题,否则数据就会出现不一致。架构师需要根据不同的场景选择合适的分布式事务模式。
  6. 可观测架构:可观测架构包括Logging、Tracing、Metrics 三个方面,其中Logging提供多个级别的详细信息跟踪,由应用开发者主动提供;Tracing提供一个请求从前端到后端的完整调用链路跟踪对于分布式场景尤其有用;Metrics则提供对系统量化的多维度度量。
  7. 事件驱动架构:本质上是一种应用/组件间的集成架构模式。可用于服务解耦、增强服务韧性、数据变化通知等场景中。

云原生架构相关技术

  1. 容器技术:容器作为标准化软件单元,它将应用及其所有依赖项打包,使应用不再受环境限制在不同计算环境间快速、可靠地运行
  2. 通过容器技术,企业可以充分发挥云计算弹性优势,降低运维成本。
  3. Kubernetes 已经成为容器编排的事实标准,被广泛用于自动部署,扩展和管理容器化应用。Kubernetes 提供了分布式应用管理的核心能力,包括:资源调度、应用部署与管理、自动修复、服务发现与负载均衡、弹性伸缩、声明式AP1、可扩展性架构、可移植性。
  4. 云原生微服务:微服务模式将后端单体应用拆分为松耦合的多个子应用,每个子应用负责一组子功能。这些子应用称为“微服务,多个“微服务”共同形成了一个物理独立但逻辑完整的分布式微服务体系。这些微服务相对独立,通过解耦研发、测试与部署流程,提高整体迭代效率。
  5. 微服务设计约束:
  1. 微服务个体约束:功能在业务域划分上应是相互独立的,低耦合、单一职责。
  2. 微服务与微服务之间的横向关系:主要从微服务的可发现性和可交互性处理服务间的横向关系一般需要服务注册中心。
  3. 微服务与数据层之间的纵向约束:在微服务领域,提供数据存储隔离原则,即数据是微服务的私有资产,对于该数据的访问都必须通过当前微服务提供的API来访问。
  4. 全局视角下的微服务分布式约束:故障发现时效性和根因精确性始终是开发运维人员的核心诉求。
  1. 无服务器技术(Serveress)因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现,而逐渐成为云原生主流技术之一。Serverless 计算包含以下特征:
  1. 全托管的计算服务,客户只需要编写代码构建应用,无需关注同质化的、负担繁重的基于服务器等基础设施的开发、运维、安全、高可用等工作;
  2. 通用性,结合云BaaSAPI的能力,能够支撑云上所有重要类型的应用;
  3. 自动弹性伸缩,让用户无需为资源使用提前进行容量规划;
  4. 按量计费,让企业使用成本得有效降低,无需为闲置资源付费,
  1. 函数计算(FaaS)是Serverless 中最具代表性的产品形态。通过把应用逻辑拆分多个函数,每个函数都通过事件驱动的方式触发执行。
  2. 无服务器技术关注点:计算资源弹性调度、负载均衡和流控、安全性
  3. 服务网格(ServiceMesh)分布式应用在微服务软件架构之上发展起来的新技术,旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。这个解耦意味着开发者无需关注微服务相关治理问题而聚焦于业务逻辑本身,提升应用开发效率并加速业务探索和创新。
  4. 在这张架构图中,服务A 调用服务B 的所有请求,都被其下的服务代理截获,代理服务A 完成到服务B 的服务发现、熔断、限流等策略,而这些策略的总控是在控制平面(ControIPlane)上配置。

云原生技术助力某汽车公司数字化转型实践

  1. 战略性构建容器云平台。通过平台实现对某云行App、二手车、在线支付、优惠券等核心互联网应用承载。以多租户的形式提供弹性计算、数据持久化、应用发布等面向敏捷业务服务,并实现高水平资源隔离。标准化交付部署,快速实现业务扩展,满足弹性要求。
  2. 数字混合云交付。采用私有云+公有云的混合交付模式,按照服务的敏态/稳态特性和管控要求划分部署,灵活调度公有云资源来满足临时突发或短期高TPS业务支撑的需求。
  3. 深度融合微服务治理体系,实现架构的革新和能力的沉淀,逐步形成支撑数字化应用的业务中台

SOA的参考架构

◆典型的以服务为中心的企业集成架构如下图所示,采用“关注点分离” 的方法规划企业集成中的各种架构元素,同时从服务视角规划每种架构元素提供的服务,以及服务如何被组合在一起完成某种类型的集成。可划分为六大类:

  1. 业务逻辑服务:包括用于实现业务逻辑的服务和执行业务逻辑的能力。
  2. 控制服务:包括实现人、流程和信息集成的服务,以及执行这些集成逻辑的能力。
  3. 连接服务:通过提供企业服务总线提供分布在各种架构元素中服务间的连接性。
  4. 业务创新和优化服务:用于监控业务系统运行时服务的业务性能,采取措施适应变化的市场
  5. 开发服务:贯彻整个软件开发生命周期的开发平台。
  6. IT服务管理:支持业务系统运行的各种基础设施管理能力或服务

1.连接服务-(企业服务总线:ESB的基本特征和能力包括

  1. 描述服务的元数据和服务注册管理;
  2. 在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模式等;
  3. 发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。
  4. 高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。

2.业务逻辑服务

1)整合已有应用-应用和信息访问服务:实现对已有应用和信息的集成,主要有两类访问服务可接入服务、事件发现服务。

2)整合新开发的应用--业务应用服务:实现新应用集成,主要有三类业务应用服务:组件服务(可重用)、核心服务(运行时)、接口服务。

3)整合客户和业务伙伴(B2C/B2B)--伙伴服务:提供与企业外部的B28的集成能力,包括:社区服务、文档服务、协议服务。

3.控制服务

1)数据整合--信息服务:提供集成数据的能力,目前主要包括如下集中信息服务:联邦服务(不同类型数据聚合)、复制服务(远程数据本地访问)、转换服务(格式转换)、搜索服务。

2)流程整合--流程服务:完成业务流程集成,包括:编排服务(预定义流程顺序)、事务服务(保证ACID)、人工服务(人工活动集成到流程中)。

3)用户访问整合--交互服务:实现用户访问集成,包括:交付服务(运行时交互框架)、体验服务、资源服务(运行时交互组件的管理)。

  1. 开发服务:开发环境和工具中为不同开发者的角色提供的功能被称为开发服务。根据开发过程中开发者角色和职责的不同,有如下4类服务:建模服务、设计服务、实现服务、测试服务。

  1. 业务创新和优化:以业务性能管理(BPM) 技术为核心提供业务事件发布、收集和关键业务指标监控能力。包括以下服务:
  1. 公共事件框架服务:通过一个公共事件框架提供IT和业务事件的激发、存储和分类等
  2. 采集服务通过基于策略的过滤和相关性分析检测感兴趣的服务。

(3)监控服务:通过事件与监控上下文间的映射,计算和管理业务流程的关键性能指标

6.IT 服务管理:为业务流程和服务提供安全、高效和健康的运行环境,包括:安全和目录服务、系统管理和虚拟化服务。

SOA主要协议和规范

  1. Web服务最基本的协议包括UDDI、WSDL和SOAP,通过它们,可以提供直接而又简单的Web Service支持,如图所示。
  2. UDDI(统一描述、发现和集成协议)计划是一个广泛的、开放的行业计划,它使得商业实体能够彼此发现;定义它们怎样在Internet上互相作用,并在一个全球的注册体系架构中共享信息。
  3. WSDL(Web 服务描述语言),是一个用来描述Web服务和说明如何与Web服务通信的XML语言。可描述三个基本属性:服务做些什么、如何访问服务、服务位于何处。
  4. SOAP是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。它包括4个部分S0AP封装,定义了一个描述消息中的内容是什么,是谁发送的,谁应当接收并处理它以及如何处理它们的框架: SOAP编码规则,用于表示应用程序需要使用的数据类型的实例;SOAP RPC表示是远程过程调用和应答的协定; SOAP绑定是使用底层协议交换信息。

SOA的设计模式

  1. 服务注册表模式,支持如下S0A治理功能:
  1. 服务注册:应用开发者,也叫服务提供者,向注册表公布他们的功能
  2. 服务位置:也就是服务应用开发者,帮助他们查询注册服务,寻找符合自身要求的服务
  3. 服务绑定:服务的消费者利用检索到的服务合同来开发代码,开发的代码将与注册的服务绑定、调用注册的服务以及与它们实现互动。

  1. 企业服务总线模式,由中间件技术实现的支持面向服务架构的基础软件平台,支持异构环境中的服务以基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。
  2. 一个典型的在ESB环境中组件之间的交互过程是:首先由服务请求者触发一次交互过程,产生一个服务请求消息,并将该消息按照ESB的要求标准化,然后标准化的消息被发送给服务总线。ESB根据请求消息中的服务名或者接口名进行目的组件查找,将消息转发至目的组件,并最终将处理结果逆向返回给服务请求者。这种交互过程不再是点对点的直接交互模式,而是由事件驱动的消息交互模式
  3. ESB的核心功能如下

(1)提供位置透明性的消息路由和寻址服务

(2)提供服务注册和命名的管理功能

(3)支持多种消息传递范型(如请求/响应、发布/订阅等)。

(4)支持多种可以广泛使用的传输协议

(5)支持多种数据格式及其相互转换

(6)提供日志和监控功能

  1. 微服务模式,不再强调传统S0A 架构里面比较重的ESB 企业服务总线,同时S0A 的思想进入到单个业务系统内部实现真正的组件化
  2. 微服务模式特点:复杂应用解耦、独立、技术选型灵活、容错、松耦合易扩展
  3. 常见的微服务设计模式:
  1. 聚合器微服务:聚合器调用多个微服务实现系统应用程序所需功能,具体有两种形式,一种是将检索到的数据信息进行处理并直接展示;另一种是对获取到的数据信息增加业务逻辑处理后,再进一步发布成一个新的微服务作为一个更高层次的组合微服务,相当于从服务消费者转换成服务提供者。
  2. 链式微服务:客户端或服务在收到请求后,会返回一个经过合并处理的响应,服务之间形成一条调用链
  3. 数据共享微服务:当服务之间存在强耦合关系时,可能存在多个微服务共享缓存与数据库存储的现象
  4. 异步消息传递微服务:消息队列将消息写入一个消息队列中,实现业务逻辑以异步方式运行,从而加快系统响应速度。

  1. 微服务架构的问题与挑战:微服务架构分布式特点带来的复杂性;微服务架构的分区数据库体系,不同服务拥有不同数据库:增加了测试的复杂性大规模应用部署中,在监控、管理、分发及扩容等方面,微服务也存在着巨大挑战。

嵌入式系统软件架构设计方法

  1. 在嵌入式系统中,其设计通常采用了自顶向下的设计方法,基于架构的软件设计(ABSD)可适应于嵌入式系统的软件设计方法。
  2. 属性驱动的软件设计(ADD)是把一组质量属性场景作为输入,利用对质量属性实现与架构设计之间的关系的了解(如体系结构风格质量战术等)对软件架构进行设计的一种方法,
  3. 采用ADD方法进行软件开发时,需要经历评审、选择驱动因子、选择系统元素、选择设计概念、实体化元素和定义接口、草拟视图和分析评价等七个阶段,如图所示:

步骤一:评审输入。确保设计流程的输入是可用且正确的。确认设计目的是否符合设计的类型。如果是设计一个已有的系统,还需要分析已经存在的架构设计的输入存在是否合理。

步骤二:通过选择驱动因子(架构)建立迭代目标。根据使用的开发模型去选择设计的回合。一个设计回合需要在一系列的设计迭代中进行,每一个迭代着重完成一个目标,特别是满足驱动因子的目标。

步骤三:选择一个或者多个系统元素来细化。选取可满足驱动因子需要的一个或者多个架构结构。

步骤四:选择一个或者多个设计概念来细化。从常用的架构设计模式中选取一种或多种设计概念,对选中的驱动因子进行细化

步骤五:实例化架构元素、分配职责和定义接口。选择好了一个或者多个设计概念后,就要求做另个设计决策了,包括所选择的实例化元素的设计概念。比如,如果选择分层,就需要决定分多少层。

步骤六:草拟视图和记录设计决策。将上述活动的结果用文字或图的方式记录或绘制出来

步骤七:分析当前设计、评审迭代目标、实现设计目的。到本步骤,应该说已经创建好了部分设计可以得到这个迭代设计建立的目标。在这个确定的目标前提下,可以得到项目利益相关者的认同,避免否定,导致返工。

嵌入式系统软件架构案例分析

  1. 鸿蒙操作系统架构案例分析
  2. 鸿蒙 (Harmony0s)整体采用分层的层次化设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统”→“子系统”→“功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块,

  1. 内核层:主要由内核子系统和驱动子系统组成。
  1. 内核子系统:Harmony0s采用多内核设计,支持针对不同资源受限设备选用适合的0S内核。内核抽象层通过屏蔽多内核差异,对上层提供基础的内核能力
  2. 驱动子系统:提供统一外设访问能力和驱动开发、管理框架

  1. 系统服务层:是Harmony0s 的核心能力集合,通过框架层对应用程序提供服务。该层包含4个部分
  1. 系统基本能力子系统集:为分布式应用在Harmony0s多设备上的运行、调度、迁移等操作提供了基础能力。
  2. 基础软件服务子系统集:为Harmony0S提供公共的、通用的软件服务。
  3. 增强软件服务子系统集:为Harmony0s 提供针对不同设备的、差异化的能力增强型软件服务。
  4. 硬件服务子系统集:为Harmony0S 提供硬件服务。

  1. 框架层:为Harmony0s 的应用程序提供了Java/C/C++/S 等多语言的用户程序框架和Ability框架以及各种软硬件服务对外开放的多语言框架AP1;同时为采用Harmony0s 的设备提供了C/C++/JS 等多语言的框架API,不同设备支持的API与系统的组件化裁剪程度相关。

  1. 应用层:包括系统应用和第三方非系统应用。Harmony0s 的应用由一个或多个FA(FeatureAbility)或PA(Particle Ability)组成。其中,F A有U!界面,提供与用户交互的能力;而P A无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。

  1. 鸿蒙操作系统架构具有4个技术特性:

1)分布式架构首次用于终端0S,实现跨终端无缝协同体验

2)确定时延引擎和高性能IPC技术实现系统天生流畅。

3)基于微内核架构重塑终端设备可信安全。

4)通过统一IDE 支撑一次开发,多端部署,实现跨终端生态共享。

在Harmony0S架构中,重点关注于分布式架构所带来的优势,主要体现在下面四个方面:

  1. 分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力
  2. 分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。针对不同类型的任务,为用户匹配并选择能力合适的执行硬件;
  3. 分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接
  4. 分布式任务调度构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,选择合适的设备运行分布式任务

  1. Harmony0s 架构的系统安全性主要体现在搭载Harmony0s 的分布式终端上,可以保证“正确的人通过正确的设备,正确地使用数据”。这里通过“分布式多端协同身份认证”来保证“正确的人”通过“在分布式终端上构筑可信运行环境”来保证“正确的设备”,通过“分布式数据在跨终端流动的过程中,对数据进行分类分级管理”来保证“正确地使用数据”

通信网络构建案例分析

高可用网络构建分析

  1. 网络接入层高可用性设计。高可用接入层具有下述特征:

(1)使用冗余引擎和冗余电源获得系统级冗余,为关键用户群提供高可靠性;

(2)与具备冗余系统的汇聚层采用双归属连接,获得默认网关冗余,支持在汇聚层的主备交换机间快速实现故障切换:

(3)通过链路汇聚提供带宽利用率,同时降低复杂度;

(4)通过配置802.1x,动态ARP检查及IP 源地址保护等功能增加安全性,有效防止非法访问。

2.网络汇聚层高可用设计。汇聚层到核心层间采用0SPF等动态路由协议实现路由层面高可用保障典型连接方式有两种,组网模型一为三角形连接方式,从汇聚层到核心层具有全冗余链路和转发路径:组网模型二为矩形连接方式,从汇聚层到核心层为非全冗余链路,当主链路发生故障时,需要通过路由协议计算获得从汇聚到核心的其他路径。可见,组网模型一(即三角形连接方式)的故障收敛时间较小,不足的是,三角形连接方式要占用更多设备端口,建网成本较高。

3.网络核心层高可用设计。从系统冗余性角度,应考虑部署双核心或多核心设备,以主备或负荷分担方式工作。

安全架构设计案例分析

  1. 电子商务系统的安全性设计
  2. 认证、授权和审计(AAA)是运行于宽带网络接入服务器上的客户端程序。AAA提供了一个用来对认证、授权和审计三种安全功能进行配置的一致的框架,实际上是对网络安全的一种管理。
  3. RADIUS服务器负责接收用户的连接请求,完成验证并把用户所需的配置信息返回给B A S建立连接,从而可以获得访问其他网络的权限时,BAS就起到了认证用户的作用。BAS负责把用户之间的验证信息传递通过密钥的参与来完成。用户的密码加密以后才能在网上传递,以避免用户的密码在不安全的网络上被窃取。
  4. 高性能的RADIUS软件架构核心如图所示。

  1. RADIUS软件架构分为三个层面:协议逻辑层、业务逻辑层和数据逻辑层
  2. 协议逻辑层主要实现RF C框架中的内容,处理网络通信协议的建立、通信和停止方面的工作。在软件功能上,这个部分主要相当于一个转发引擎,起到分发处理的内容分发到不同的协议处理过程中,这一层的功能起到了协议与业务处理的分层处理的作用。
  3. 业务逻辑层的设计是RADIUS软件架构设计的核心部分,协议处理进程主要是对转发引擎发来的包进行初步分析,并根据包的内容进一步分发到不同的业务逻辑处理进程。业务逻辑进程分为认证、计费和授权三种类型,不同的业务逻辑进程可以接收不同协议进程之间的信息并进行处理。转发进程与协议进程之间采用共享内存的方法,实现进程之间的通信。协议进程与业务逻辑处理进程之间采用进程加线程的实现方法。
  4. 数据逻辑层需要对来自业务逻辑处理线程统一管理与处理数据库代理池的数据,由数据库代理池统一连接数据库,以减少对数据库系统的压力

  1. 基于混合云的工业安全架构设计

下图给出了大型企业采用混合云技术的安全生产管理系统的架构,企业由多个跨区域的智能工厂和公司总部组成,公司总部负责相关业务的管理、协调和统计分析,而每个智能工厂负责智能产品的设计与生产制造。智能工厂内部采用私有云实现产品设计、数据共享和生产集成等,公司总部与智能工厂间采用公有云实现智能工厂间、智能工厂与公司总部间的业务管理、协调和统计分析等。

  1. 整个安全生产管理系统架构由四层组成:
  2. 设备层主要是指用于智能工厂生产产品所需的相关设备;
  3. 控制层主要是指智能工厂生产产品所需要建立的-套自动控制系统,控制智能设备完成生产工作;
  4. 设计/管理层是指智能工厂各种开发、业务控制和数据管理功能的集合,实现数据集成与应用;
  5. 应用层主要是指在云计算平台上进行信息处理有两个核心功能,一是“数据”,二是“应用”

Lambda架构

  1. Lambda架构设计目的在于提供一个能满足大数据系统关键特性的架构,包括高容错、低延迟、可扩展等。其整合离线计算与实时计算,融合不可变性、读写分离和复杂性隔离等原则。Lambda 是用于同时处理离线和实时数据的,可容错的,可扩展的分布式系统。它具备强鲁棒性,提供低延迟和持续更新。
  2. Lambda架构应用场景:机器学习、物联网、流处理。
  3. 如图所示,Lambda 架构可分解为三层,即批处理层、加速层和服务层

  1. 批处理层(Batch Layer):存储数据集,Batch Layer在数据集上预先计算查询函数,并构建查询所对应的View。Batch Layer可以很好地处理离线数据,但有很多场景数据不断实时生成,并且需要实时查询处理。Speed Layer正是用来处理增量的实时数据。
  2. 加速层(Speed Layer):Batch Layer处理的是全体数据集,而Speed Layer处理的是最近的增量数据流。Speed Layer 为了效率,在接收到新的数据后会不断更新Real-time View,而Batch Layer是根据全体离线数据集直接得到Batch View
  3. 服务层(Serying Laver):Serving Laver 用于合并Batch View 和Real-time View中的结果数据集到最终数据集。用于响应用户的查询请求

  1. 如图所示,在这种Lambda架构实现中,Hadoop(HDFS)用于存储主数据集,Spark(或Storm)可构成速度层(Speed Layer),HBase(或Cassandra)作为服务层,由Hive创建可查询的视图

Kappa架构

  1. Kappa 架构的原理就是:在Lambda的基础上进行了优化,删除了Batch Layer 的架构,将数据通道以消息队列进行替代。因此对于Kappa架构来说,依旧以流处理为主,但是数据却在数据湖层面进行了存储,当需要进行离线分析或者再次计算的时候,则将数据湖的数据再次经过消息队列重播一次则可
  2. 如图所示,输入数据直接由实时层的实时数据处理引擎对源源不断的源数据进行处理,再由服务层的服务后端进一步处理以提供上层的业务查询。而中间结果的数据都是需要存储的,这些数据包括历史数据与结果数据,统一存储在存储介质中。

Lambda架构与Kappa架构的对比和设计选择

  1. 根据两种架构对比分析,将业务需求、技术要求、系统复杂度、开发维护成本和历史数据处理能力作为选择考虑因素。而计算开销虽然存在一定差别,但是相差不是很大,所以不作为考虑因素。

1.业务需求与技术要求:如果业务对于Hadoop、Spark、Strom 等关键技术有强制性依赖,选择Lambda 架构可能较为合适:如果处理数据偏好于流式计算,又依赖Flink 计算引擎,那么选择Kappa架构可能更为合适。

2.复杂度:如果项目中需要频繁地对算法模型参数进行修改, Lambda 架构需要反复修改两套代码,则显然不如Kappa架构简单方便。同时,如果算法模型支持同时执行批处理和流式计算,或者希望用一份代码进行数据处理,那么可以选择Kappa 架构。

3.开发维护成本:Lambda架构需要有一定程度的开发维护成本,包括两套系统的开发、部署、测试、维护,适合有足够经济、技术和人力资源的开发者。而Kappa 架构只需要维护一套系统

4.历史数据处理能力:有些情况下,项目会频繁接触海量数据集进行分析,应该选择Lambda架构。如果始终使用小规模数据集,流处理系统完全可以使用,则应该选择Kappa架构。

大数据架构设计案例分析

  1. Lambda架构在某网奥运中的大数据应用
  2. Lambda架构实时处理层采用增量计算实时数据的方式,可以在集群规模不变的前提下,秒级分析出当日概览所需要的信息。赛事回顾模块需要展现自定义时间段内的历史最高在线人数、逐日播放走势、直播最高在线人数和点播视频排行等海量数据的统计信息,由于奥运期间产生的数据通常不需要被经常索引、更新,因此要求采用不可变方式存储所有的历史数据,以保证历史数据的准确性。
  3. Lambda 架构的批处理层采用不可变存储模型不断地往主数据集后追加新的数据,恰好可以满足对奥运数据的大规模统计分析要求。具体架构如下图:

  1. 某证券公司大数据系统
  2. 实时日志分析平台基于Kappa架构,使用统一的数据处理引擎Flink可实时处理全部数据,并将其存储到Elastic-Search与0penTSDB中。实时处理过程如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值