第十一章、未来信息综合技术
信息物理系统技术概述
概念和定义
信息物理系统(Cyber-Physical Systems,CPS)是控制系统、嵌入式系统的扩展与延伸,通过集成先进的感知、计算、通信、控制等信息技术和自动控制技术,构建了物理空间与信息空间中人、机、物、环境、信息等要素相互映射、适时交互、高效协同的复杂系统,实现系统内资源配置和运行的按需响应、快速迭代、动态优化
基于硬件、软件、网络、工业云等一系列工业和信息技术构建起的智能系统其最终目的是实现资源优化配置
CPS的体系架构
CPS体系架构类型:单元级、系统级和SoS级
单元级CPS:是不可分割的CPS最小单元,其本质是通过软件对物理实体及环境进行状态感知、计算分析,并最终控制到物理实体
系统级CPS:多个单元级CPS通过网络实现更大范围、更宽领域的数据自动流动,实现多个单元级CPS的互联、互通和互操作,形成了系统级CPS
SoS级CPS:多个系统级CPS有机足盒构成SoS级CPS,SoS级CPS主要实现数据的汇聚,从而对内进行资产的优化和对外形成运营优化服务
CPS的技术体系
CPS技术体系可以分为四大核心技术要素即“一硬”(感知和自动控制)、“一软”(工业软件)、“一网”(工业网络)、“一平台”(工业云和智能服务平台)。其中感知和自动控制是CPS实现的硬件支撑:工业软件固化了CPS计算和数据流程的规则,是CPS的核心:工业网络是互联互通和数据传输的网络载体;工业云和智能服务平台是CPS数据汇聚和支撑上层解决方案的基础,对外提供资源管控和能力服务。
CPS典型应用场景
(1)智能设计:产品及工艺、生产线/工厂设计
(2)智能生产:设备管理、生产管理、柔性制造
(3)智能服务:健康管理、智能维护、远程征兆性诊断、协同优化、共享服务
(4)智能应用:无人装备
人工智能技术概述
人工智能概念
人工智能(Artificial Intelligence,AI)是利用计算机延伸和扩展认得智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统,目前分为弱人工智能和强人工智能
弱人工智能
不能够不断适应复杂的新环境并不断涌现出新的功能,实现特定功能的专用智能。主要有语音识别、图像处理和物体分割、机器翻译
强人工智能
是指真正能思维的智能机器,可分为类人与非类人两大类,在未来几十年内难以实现
人工智能关键技术
1.自然语言处理(Natural Language Processing, NLP)
研究人与计算机之间用自然语言进行有效沟通的理论和方法,主要涉及领域包括机器翻译、语义理解和问答系统
2.计算机视觉(Computer Vision)
使用计算机模仿人累视觉系统的科学,让计算机拥有类似人累提取、处理、理解和分析图像以及图像序列的能力
3.知识图谱(Knowledge Graph)
本质上是结构化的语义知识库,是一种由节点和边组成的图数据结构,以符号形式描述物理世界中的概念及其相互关系
4.人机交互(Human-Computer Interaction,HCI)
主要研究人和计算机之间的信息交换,传统的人与计算机的信息交换主要依靠交互设备进行,包扩键盘、鼠标、操作杆、数据服装等,HCI技术除了传统的交互还包括语音交互、情感交互、体感交互及脑机交互等技术
5.虚拟现实或增强现实(Virtual Reality/Augmented Reality,VR/AR)
是以计算机为核心的新型视听技术。借助必要的装备与数字化环境中的对象进行交互,相互影响
6.机器学习(Machine Learning,ML)
是一门涉及统计学、系统辨识、逼近理论、神经网络、优化理论、计算机科学、脑科学等诸多领域的交叉学科。具体来说,机器学习是以数据为基础,通过研究样本数据寻找规律,并根据索的规律对未来数据进行预测,目前广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别等领域
机器人技术概述
机器人的定义
机器人的英文名字是Robot,最早出现在1920年捷克作家卡雷尔·卡佩克写的剧本中,后被世界各国使用
1967年日本召开的第一届机器人学术会议上,森政弘题出10个特性:自动性、智能性、个人性、半机械半人性、作业性、通用性、信息性、柔性、有限性、移动性
加藤一郎提出机器人具有以下3个条件:
(1)具有脑、手、脚等三要素的个体
(2)具有非接触传感器(眼、耳等)和接触传感器
(3)具有平衡觉和固有觉得传感器
机器人学
机器人技术形成了一门新的综合性学科---机器人学(Robotics),主要研究内容有:
机械手设计;
机器人运动学、动力学和控制;
轨迹设计和路径规划;
传感器;
机器人视觉;
机器人语言;
装置与系统结构;
机器人智能等。
机器人4.0的核心技术
1.云-边-端的无缝协同计算
由鱼谋求按网络带宽和延迟的制约,机器人主要采用以自身计算为主,云端处理非实时、大计算量的任务为辅的系统架构。机器人的主要任务可以分为感知、推理和执行三个步骤。随着5G时代的来临和边缘计算的部署,机器人到基站的延迟会大大降低,边缘服务器可以在网络的边缘处理机器人的数据,大大减少云端处理数据的压力,形成一个高效的数据处理架构。
2.持续学习与协同学习
在机器人4.0时代之前,主要采用的方法是基于大量数据进行的监督学习方法,但是在4.0时代需要加上持续学习与协同学习的能力,让机器人可以适应更加复杂的环境。具体来说,我们希望机器人可以通过少量数据来建立基本的识别能力,然后可以自主地去找到更多的相关数据并进行自动标注。然后用这些自主得到的数据来对自己已有的模型进行重新训练来提高性能。
3.知识图谱
机器人应用的知识图谱比通常的百科类有一些不同的需求
(1)需要更加动态和个性化的知识
(2)知识图谱需要和机器人的感知与决策能力相结合
4.场景自适应
主要通过对当前场景进行三维语义理解的基础上,观察场景内人和物之间的变化,预测可能发生的事件,从而影响之后的行动模式。这个技术的关键问题在于场景预测能力
5.数据安全
机器人在工作的过程中,会收集很多信息,包括视觉数据、位置数据、语音数据等,这些重要的数据都需要得到保护。除了原视的隐私数据外,通过用户数据推理得出的个性化数据包含了用户的隐私信息,同样也需要得到安全的保障
机器人的分类
根据要求的控制分类:
1.操作机器人
2.程序机器人
3.示教再现机器人
4.智能机器人
5.综合机器人
根据行业分类:
1.工业机器人
2.服务机器人
3.特殊领域机器人
边缘计算概述
章鱼的神经单元在脑部仅有40%,其余60%则分布在八条腿上,边缘计算就是学习章鱼一样,不经过大脑就能把事务处理好,理论上可满足许多行业在敏捷性、实时性、数据优化、应用智能,以及安全与隐私保护等方面的要求
边缘计算的定义
边缘计算的业务本质是云计算在数据中心之外汇聚节点的延伸和演进,主要包括云边缘、边缘云和云化网关三类落地形态;以“边云协同”和“边缘智能”为核心能力发展方向;软件平台需要考虑导入云理念、云架构、云技术,提供端到端实时、协同式智能、可信赖、可动态重置等能力:硬件平台需要考虑异构计算能力,如鲲鹏、ARM、X86、GPU、NPU、FPGA等。
(1)云边缘:云边缘形态的边缘计算,是云服务在边缘侧的延伸,逻辑上仍是云服务,主要的能力提供依赖于云服务或需要与云服务紧密协同。如华为云提供的IEF解决方案,阿里云提供的 Link Edge 解决方案,AWS 提供的Greengrass 解决方案等均属于此类。
(2)边缘云:边缘云形态的边缘计算,是在边缘侧构建中小规模云服务能力,边缘服务能力主要由边缘云提供;集中式DC侧的云服务主要提供边缘云的管理调度能力。如多接入边缘计算(MEC)、CDN、华为云提供的IEC解决方案等均属于此类。
(3)云化网关:云化网关形态的边缘计算,以云化技术与能力重构原有嵌入式网关系统,云化网关在边缘侧提供协议/接口转换、边缘计算等能力,部署在云侧的控制器提供边缘节点的资源调度、应用管理与业务编排等能力。
边缘计算的特点
联接性、数据第一入口、约束性和分布性
联接性:联接多样的物理对象,以及各种设备
数据第一入口:作为物理世界到数字世界的桥梁,数据从边缘计算这里进入
约束性:需适配各种恶劣的工作条件与运行环境,如防电磁、防尘、防爆、抗振动、抗电流等,对边缘计算设备的功耗、成本、空间有较高要求。需要考虑通过软硬件集成与优化,以适配各种条件约束,支撑行业数字化多样性场景
分布性:天然具有分布式特征,这要求边缘计算支持分布式计算与存储、实现分布式资源的调度与统一管理、支撑分布式智能、具备分布式安全等能力
边云协同
边缘计算与云计算各有所长,云计算擅长全局性、非实时、长周期的大数据处理与分析,能够在长周期维护、业务决策支撑等领域发挥优势:边缘计算更适用局部性、实时、短周期数据的处理与分析,能更好地支撑本地业务的实时智能化决策与执行。因此边缘计算与云计算之间不是替代关系,而是互补协同关系,边云协同将放大边缘计算与云计算的应用价值:边缘计算既靠近执行单元,更是云端所需高价值数据的采集和初步处理单元,可以更好地支撑云端应用;反之,云计算通过大数据分析优化输出的业务规则或模型可以下发到边缘侧,边缘计算基于新的业务规则或模型运行。边缘计算不是单一的部件,也不是单一的层次,而是涉及EC-laas、EC-Paas、EC-Saas 的端到端开放平台。因此边云协同的能力与内涵涉及Laas、PaaS、SaaS各层面的全面协同,主要包括六种协同:资源协同、数据协同、智能协同、应用管理协同、业务管理协同、服务协同
(1)资源协同:边缘节点提供计算、存储、网络、虚拟化等基础设施资源、具有本地资源调度管理能力,同时可与云端协同,接受并执行云端资源调度管理策略,包括边缘节点的设备管理、资源管理以及网络连接管理。
(2)数据协同:边缘节点主要负责现场/终端数据的采集,按照规则或数据模型对数据进行初步处理与分析,并将处理结果以及相关数据上传给云端:云端提供海量数据的存储、分析与价值挖掘。边缘与云的数据协同,支持数据在边缘与云之间可控有序流动,形成完整的数据流转路径,高效低成本对数据进行生命周期管理与价值挖掘。
(3)智能协同:边缘节点按照AI模型执行推理,实现分布式智能;云端开展AI的集中式模型训练,并将模型下发边缘节点。
(4)应用管理协同:边缘节点提供应用部署与运行环境,并对本节点多个应用的生命周期进行管理调度:云端主要提供应用开发、测试环境,以及应用的生命周期管理能力。
(5)业务管理协同:边缘节点提供模块化、微服务化的应用/数字孪生/网络等应用实例:云端主要提供按照客户需求实现应用/数字孪生/网络等的业务编排能力。
(6)服务协同:边缘节点按照云端策略实现部分ECSaaS服务,通过ECSaaS与云端SaaS的协同实现面向客户的按需SaaS服务:云端主要提供SaaS服务在云端和边缘节点的服务分布策略,以及云端承担的 SaaS 服务能力。
边缘计算的安全
边缘计算的CROSS(Connectivity、Realtime、data Optimization、Smart、Security)价值推动计算模型从集中式的云计算走向更加分布式的边缘计算,为传统的网络架构带来了极大的改变,这些改变促进了技术和业务的发展,同时也将网络攻击威胁引入了网络边缘。以工业场景为例,根据《中国工业互联网安全态势报告》,截至2018年11月,全球范围内暴露在互联网上 的工控系统及设备已超10万台。边缘安全是边缘计算的重要保障。边缘安全涉及跨越云计算和边缘计算的纵深的安全防护体系,增强边缘基础设施、网络、应用、数据识别和抵抗各种安全威胁的能力,为边缘计算的发展构件安全可信环境,加速并保障边缘计算产业发展。边缘安全的价值体现在下述几方面:
提供可信的基础设施:主要包括了计算、网络、存储类的物理资源和虚拟资源。基础设施是包含路径、数据交互和处理模型的平台面,应对镜像篡改、DDoS攻击、非授权通信访问、端口入侵等安全威胁
为边缘应用提供可信赖的安全服务:从运行维护角度,提供应用监控、应用审计、访问控制等安全服务;从数据安全角度,提供轻量级数据加密、数据安全存储、敏感数据处理与检测的安全服务,进一步保证应用业务的数据安全。
保障安全的设备接入和协议转换:边缘计算节点数量庞大,面向工业行业存在中心云、边缘云、边缘网关、边缘控制器等多种终端和边缘计算形态,复杂性异构型突出。保证安全的接入和协议转换,有助于为数据提供存储安全、共享安全、计算安全、传播和管控以及隐私保护。
提供安全可信的网络及覆盖:安全可信的网络除了系统的运营商网络安全保障(如:健全、密钥、合法监听、防火墙技术)以外,目前面向特定行业的TSN、工业专网等,也需要定制化的网络安全防护。提供端到端覆盖的包括威胁检测、态势感知、安全管理编排、安全事件应急响应、柔性防护在内的全网安全运营防护体系
总结来说:从数据的收集到发送接触的一切设备、网络、计算、访问等等缓解都需要安全把控
边缘计算应用场合
1.智慧园区:园区具备自我组织、自我运行、自我优化的能力
2.安卓云与云游戏:安卓全栈能力云化,处理数据的能力都放在边缘服务器,终端相当于一个视频播放设备
3.视频监控:进行监控分析
4.工业物联网
5.Cloud VR
数字孪生体技术概述
数字孪生体技术是跨层级、跨尺度的现实世界和虚拟世界建立沟通的桥梁,是第四次工业革命的通用目的技术和核心技术体系直以,是支撑万物互联的综合技术体系,是数字经济发展的基础,是未来智能时代的信息基础设施。
上面是书上原话,什么鬼,我没看懂。我的理解是通过技术、工具把现实数据带入到虚拟世界
数字孪生体关键技术
1.建模
2.仿真
3.其他技术
数字孪生体的应用
主要应用于制造、产业、城市和战场
云计算和大数据技术概述
云计算
云计算的服务方式:软件即服务(Software as a Service,SaaS),平台即服务(Platform as a Service,PaaS)和基础设施即服务(Infrastructure as a Service,IaaS)
SaaS:服务提供商讲应用软件统一部署在云上,客户通过互联网订购应用软件服务
PaaS:服务提供商将开发环境和平台作为一种服务来提供,例如:华为云服务器,阿里云服务器
IaaS:服务提供商将多台服务器组成的“云端”基础设施作为服务提供给客户,如I/O设备、存储和计算能力等,如华为云OBS
云计算的部署模式:公有云、社区云、私有云、混合云,这些云的区别在于安全和控制
大数据
大数据的定义:
对于大数据的定义非常多,IBM的3V/4V认可度较高:大规模(Volume)、高速度(Velocity)、多样化(Variety)和价值(Value),因此大数据整体概括为:海量+多样化+快速处理+价值
大数据的研究内容面临的5个主要问题:异构性(Heterogeneity)、规模(Scale)、时间性(Timeliness)、复杂性(Complexity)和隐私性(Privacy),在这一北京下,大数据的研究工作将面临5个方面的挑战:
挑战一:数据获取问题。我们需要决策哪些数据需要保持或丢失等问题,目前这些决策还只能采用特设方法给出
挑战二:数据结构问题。如何将没有语义的内容转换为结构化的格式,并进行后续处理。
挑战三:数据集成问题。只有将数据之间进行关联,才能宠粉发挥数据的作用,因此数据集成也是一项挑战。
挑战四:数据分析、组织、抽取和建模是大数据本质的功能性挑战。数据分析师许多大数据应用的瓶颈,目前底层算法缺乏伸缩性、对待分析数据的复杂性估计不够,等等。
挑战五:如何呈现数据分析的结果,并于非技术的领域专家进行交互
为了应对上述挑战,白皮书建议采用现有成熟技术解决大数据带来的挑战,并给出了大数据分析的分析步骤,大致分为数据获取/记录、信息抽取/清洗/注记、数据集成/聚集/表现、数据分析/建模和数据解释5个主要阶段。在每个阶段都面临着各自的研究问题
1)数据获取和记录
研究数据压缩中的科学问题,能够智能地处理原始数据,在不丢失信息的情况下,将海量数据压缩到人可以理解的程度;研究“在线”数据分析技术,能够处理实时流数据;研究元数据自动获取技术和相关系统;研究数据来源技术,追踪数据的产生和处理过程
2)信息抽取和清洗
一般来说,收集到的信息需要一个信息抽取过程,才能用来进行数据分析。抽取的对象可能包含图像、视频等具有复杂结构的数据,而且该过程通常是与应用高度相关的。一般认为,大数据通常会反映事实情况,实际上大数据中广泛存在着虚假数据。关于数据清洗的现有工作通常假设数据是有效的、良好组织的,或对其错误模型具有良好的先验知识,这些假设在大数据领域将不再正确。
3)数据集成、聚集和表示
由于大量异构数据的存在,大数据处理不能仅仅是对数据进行记录,然后就将其放入存储中。如果仅仅是将一堆数据放入存储中,那么其他人就可能无法查找、修改数据,更不能使用数据了。即使各个数据源都存在元数据,将异构数据整合在一起仍然是一项巨大的挑战。对大规模数据进行有效分析需要以自动化的方式对数据进行定位、识别、理解和引用。为了实现该目标,需要研究数据结构和语义的统一描述方式与智能理解技术,实现机器自动处理,从这一角度看,对数据结构与数据库的设计也显得尤为重要。
4)查询处理、数据建模和分析
大数据中的噪声很多,具有动态性、异构性、关联性、不可信性等多种特征。尽管如此,即使是充满噪声的大数据也可能比小样本数据更有价值,因为通过频繁模式和相关性分析得到的一般统计数据通常强于具有波动性的个体数据,往往透露更可靠的隐藏模式和知识。互联的大数据可形成大型异构的信息网络,可以披露固有的社区,发现隐藏的关系和模式。此外,信息网络可以通过信息冗余以弥补缺失的数据、交叉验证冲突的情况、验证可信赖的关系。数据挖掘需要完整的、经过清洗的、可信的、可被高效访问的数据,以及声明性的查询(例如 SQL)和挖掘接口,还需要可扩展的挖掘算法及大数据计算环境。在 TB 级别上的可伸缩复杂交互查询技术是目前数据处理的一个重要的开放性研究问题。当前的大数据分析的一个问题是缺乏数据库系统之间的协作,需要研究并实现将声明性查询语言与数据挖掘、数据统计包有机整合在一起的数据分析系统。
5)解释
仅仅有能力分析大数据本身,而无法让用户理解分析结果,这样的效果价值不大。如果用户无法理解的分析。最终,一个决策者需要对数据分析结果进行解释。对数据的解释不能凭空出现,通常包括检查所有提出的假设并对分析过程进行追踪和折回分析。此外,分析过程中可能引入许多可能的误差来源:计算机系统可能有缺陷、模型总有其适用范围和假设、分析结果可能基于错误的数据等。在这种情况下,大数据分析系统应该支持用户了解、验证、分析电脑所产生的结果。大数据由于其复杂性,这一过程特别具有挑战性,是一个重要的研究内容。在大数据分析的情景下,仅仅向用户提供结果是不够的。相反,系统应该支持用户不断提供附加资料,解释这种结果是如何产生的。这种附加资料(结果)称之为数据的出处(dataprovenance)。通过研究如何最好地捕获、存储和查询数据出处,同时配合相关技术捕获足够的元数据,就可以创建一个基础设施,为用户提供解释分析结果,重复分析不同假设、参数和数据集的能力。具有丰富可视化能力的系统是为用户展示查询结果,进而帮助用户理解特定领域问题的重要手段。早期的商业智能系统主要基于表格形式展示数据,大数据时代下的数据分析师需要采用强大的可视化技术对结果进行包装和展示,辅助用户理解系统,并支持用户进行协作。此外,通过简单的单击操作,用户应该能够向下钻取到每一块数据,看到和了解数据的出处。针对上述需求,需要研究新的交互方式,支持用户采用“玩”的方式对数据分析过程进行小的调整,并立即对增量化的结果进行查看。通过这种方法,用户能够对分析结果有一个直观的理解,从而帮助用户更好地理解大数据背后的价值。
大数据的应用
1.制造业
2.服务业
3.交通行业
4.医疗行业
第十二章、信息系统架构设计理论与实践
信息系统架构基本概念及发展
ISA概念:
信息系统架构(Information System Architecture,ISA)是指对某一特定内容里的信息进行统筹、规划、涉及、安排等一系列有机处理的活动。ISA是关于软件系统的结构、行为和属性的高级抽象
ISA定义:
信息系统架构仍在不断发展中,还没有形成一个统一的、公认的定义,这里仅举出几个较权威的定义。
定义1:软件或计算机系统的信息系统架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见属性及它们之间的关系组成。
定义2:信息系统架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统元素的描述、这些元素的相互作用、指导元素集成的模式及这些模式的约束组成。
定义3:信息系统架构是指一个系统的基础组织,它具体体现在:系统的构件,构件之间、构件与环境之间的关系,以及指导其设计和演化的原则上。
教程以定义1为准
影响ISA的因素:
软件系统的项目干系人(客户、用户、项目经理、程序员、测试人员、市场人员等)对软件系统有不同的要求、开发组织(项目组)有不同的人员知识结构、架构设计师的素质与经验、当前的技术环境等方面都是影响架构的因素。这些因素通过功能性需求、非功能性需求、约束条件及相互冲突的要求,影响架构设计师的决策,从而影响架构。
信息系统架构
信息系统架构分类
ISA可分为物理结构和逻辑结构两种,在这两大类下还可以细分
物理结构细分为:集中式和分布式
逻辑结构细分为:横向综合、纵向综合和纵横综合
集中式:软件、数据都在同一套计算机系统中
分布式:又可分为分布式与C/S模式
横向综合:同一管理层次的职能综合在一起,如人事和会计子系统综合在一起
纵向综合:同一职能的各个管理层次的业务组织在一起,如工厂的会计系统和公司的会计系统综合在一起
横纵综合:主要是从信息模型和处理模型两方面进行综合,做到信息集中共享,建立公用数据库和统一的信息处理系统
信息系统4种常用架构模型
分为:单机、C/S、SOA和企业数据交换总线
单机:Standalone,一台物理机上独立应用程序
C/S:Client/Server,客户端/服务端
2层C/S:客户端、服务端
3层C/S:客户端、服务端、数据库
B/S:浏览器/服务器结构
MVC:C/S结构的一种常用标准化模式
SOA:Service Oriented Architecture,面向服务架构
SOA:
Web Service:
RPC:远程过程调用
企业信息系统的总体框架
ISA需要考虑的四个方面:战略系统、业务系统、应用系统和信息基础设施
信息系统架构设计方法
架构开发方法(Architecture Development Method,ADM)
TOGAF能力框架
ADM生命周期模型
信息化总体架构方法
信息化6要素:开发利用信息资源、建设国家信息网络,推进信息技术应用,发展信息技术和产业,培育信息化人才,制定和完善信息化体系
信息化6特征:
1.易用性
2.健壮性
3.平台化、灵活性、拓展性
4.安全性
5.门户化、整合性
6.移动性
信息化架构模式:数据导向架构,流程导向架构
信息系统生命周期:系统规划、系统分析、系统设计、系统实施、系统运行和维护等五个阶段
信息化工程总体规划的方法论:关键成功因素法(Critical Success Factors,CSF)、战略目标集转化法(Strategy Set Transformation,SST)和企业系统规划法(Business System Planning,BSP)。起亚的还有企业信息分析与集成技术、产出/方法分析、投资回收法、征费法(chargout)、零线预算法和阶石法。常用的是CSF、SST和BSP
信息系统架构案例分析
价值驱动的体系结构---连接产品策略与体系结构
系统的存在是为了为利益相关方创造价值。然而,这种理想往往无法完全实现。当前的开发方法给利益相关方、架构师和开发人员提供的信息是不完全和不充分的。
价值驱动体系结构有两个重要概念:价值模型和体系结构策略
价值模型的核心有3种基本形式:
(1)价值期望值:表示对某一特定功能的需求,包括内容(功能)、满意度(质量)和不同级别质量的实用性
(2)反作用力:系统部署实际环境中,实现某种价值期望值的难度,通常期望越高难度越大,即反作用力
(3)变革催化剂:表示环境中导致价值期望值发生变化的某种事件,或者是导致不同结果的限制因素
反作用力和变革催化剂称为限制因素,把这三个统称为价值驱动因素。如果系统旨在有效满足其利益相关者的价值模型要求,那么它就需要能够识别和分析价值模型
体系结构挑战:对以下几点进行权衡
1.重要性:受挑战影响的期望值的优先级有多高?如果这些期望值是特定于不多的几个背景,那么这些背景的相对优先级如何?
2.程度:限制因素对期望值产生了多大影响?
3.后果:大概多少种方案可供选择?这些方案的难度或有效性是否有很大差异?
4.隔离:对最现实的方案的隔离情况如何?影响越广,该因素的重要性越高。
后面的案例晦涩难懂,不总结了
第十三章、层次式架构设计理论与实践
层次式体系结构概述
层次式架构是软件体系结构设计中最为常用的一种架构形式,它为软件系统提供了一种在结构、行为和属性方面的高级抽象,其核心思想是将系统组成为一种层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了精心挑选的输出函数外,内部的层接口只对相邻的层可见。连接件通过决定层间如何解耦傲虎的协议来定义,拓扑约束包括对相邻层间交互的约束,由于每一层最多只影响两层,同事只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。
J2EE
N层架构模式(n-tier architecture pattern)是J2EE常用的标准模式,分层架构本身没有规定要分成多少层,大部分的应用都分成表现层(或称为展示层)、中间层(或称为业务层)、数据访问层(或称为持久层)和数据层
分层架构的一个特性就是关注分离(separation of concerns)。该层中的组件只负责本层的逻辑,组件的划分很容易明确组件的角色和职责,也比较容易开发、测试、管理和维护。
层次式体系结构是一个可靠的通用的架构,对于应用来说,如果不确定使用哪种架构,可以用层次式架构作为一个出事架构,但设计时需要注意以下两点:
(1)污水池反模式(architecture sinkhole anti-pattern):分层过多,但没有做业务逻辑处理
(2)分层架构会让应用变得庞大
表现层框架设计
MVC模式
分成控制器、模型、视图三个核心模块
控制器(Controller):接受用户的输入并调用模型和视图去完成用户的需求
模型(Model):应用程序的主体部分
视图(View):用户交互的介面
MVC模式的优点:控制器解耦了模型和视图,容易扩展和维护
1.允许用户界面的扩展
2.易于维护
3.功能强大的用户界面
MVP模式
MVP(Model-View-Presenter),MVP从MVC演变而来,MVC允许View和Model直接"交流",MVP种的View不直接使用Model,通过Presenter来处理逻辑
MVVM模式
MVVM,Model-View-ViewModel,ViewModel是MVVM的核心,它通过DataBinding实现View与Model之间的双向绑定,内部是通过监听器实现的
中间层框架设计
业务逻辑层组件设计
业务逻辑组件分为接口和实现类两个部分
接口是为了更好的解耦,面向接口编程
业务逻辑层框架
业务容器中,按照Domain Model-Service-Control思想来实现的
Domain Model是领域层业务对象,它仅仅包含业务相关的属性
数据库访问层设计
5种数据访问模式
1.在线访问:会占用一个数据库连接
2.DAO模式:DataAccess Object,是J2EE设计模式之一,将底层数据访问和高层业务逻辑分离开
一个典型的DAO实现通常有以下组件:
(1)一个DAO工厂类
(2)一个DAO接口
(3)一个实现了DAO接口的具体类
(4)数据传输对象
3.DTO模式:Data Transfer Object,EJB设计模式之一,DTO本身是一组对象或数据的容易,需要跨不同的进程或是网络的边界来传输数据
4.离线数据模式:以数据为中心,从数据源获取数据后,按照预定的结构存放于系统中
5.ORM模式:Object/Relation Mapping,对象/关系映射:在关系型数据库和对象之间作一个映射
ORM、Hibernate与CPM2.0设计思想
ORM(Object-Relation Mapping)在关系型数据库和对象之间作一个映射,这样,在具体操纵数据库时,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作即可。ORM可以大大降低学习和开发成本,实际开发中对客户有价值的是业务功能,而不应该把大量时间花费在编写数据访问、CURD方法上。
Hibernate是一个开源的ORM框架,对JDBC进行了轻量级的对象封装,它不仅提供了从Java类到数据表之间的映射,还提供了数据查询和恢复机制。相比于使用JDBC和SQL手工操作数据库,Hibernate大大减少了工作量,目前Hibernate可以跟主流所有服务器良好集成。它是利用数据库以及XML Mapping配置为程序提供持久化服务
笔者多讲一下哈:国内目前主流是ORM框架是MyBatis,MyBatis-plus,但是软考推崇Hibernate
重点!!!! 下面放出Hinernate架构图,23年11月份案例原题
事务处理设计
事务指的是一组处理步骤全部发生或者一步也不执行,称为该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚。
事务遵循ACID原则,ACID是原子性(Atomicity),一致性(Consistency)、隔离性(Isolation)和持久性(Durability)的缩写。原子性表示事务统一成功或失败,事务是一个整体。一致性表示事务提交前后的状态守恒,比如A给B转账100,无论转账成功或失败,俩人的账目总和不变,不能A减了100,B账户没变化。隔离性表示事务在提交之前对于其他事务是不可见的。持久性表示数据一旦发生改变会永久存放到磁盘中。
J2EE服务器支持JDBC事务、JTA(Java Transaction API)事务和容器管理事务,建议不要同时使用
连接对象管理设计
JDBC使用连接池的设计模式,解决频繁分配、释放资源的问题
数据架构规划与设计
无fxxk说
物联网层次架构设计
物联网分为三个层次:感知层、网络层和应用层
最底层是感知层,用来感知数据的,利用传感器、二维码、RFID等设备获取物体的信息
第二层是网络层,通过各种传感网络与互联网的融合,将对象当前的信息实时准确的传递出去
第三层是与业务需求结合的应用层,通过智能计算、云计算等将对象进行智能化控制
层次式架构案例分析
应该不会是考点,两个案例,第一个讲述微软.net的框架发展,第二个是物联网架构
第十四章、云原生架构设计理论与实践
云原生架构产生背景
管理与分配资源的问题
云原生架构内涵
云计算的3个概念:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)
云原生的代码通常包括三部分:业务代码、三方软件、处理肺功能特性的代码
云原生架构原则
1.服务化原则:超小规模的时候无须拆分,通过服务化架构把不同生命周期的模块分离出来,分别进行业务迭代,避免迭代频繁模块被快速模块拖慢,从而加快整体的进度和稳定性。同时服务化架构面向接口编程,内部功能高度内聚,模块间通过公用功能提高软件复用性
2.弹性原则:系统的部署规模跟随业务量的变化而自动收缩,无须根据事先的容量规划准备固定的硬件和软件资源
3.可观测原则:主动通过日志、链路追踪和度量等手段,使得服务调用的耗时、返回值和参数都清晰可见,甚至可以下钻到第三方软件调用、SQL请i去、节点拓扑、网络响应等,这样运维、开发和业务人员实时掌握软件运行情况,并结合多个维度的数据指标,获得关联分析能力,对业务健康度和用户体验进行数字化衡量和持续优化
4.韧性原则:从架构设计上,包括服务异步化能力、重试/限流/降级/熔断/反压、主从模式、集群模式、AZ内的高可用、单元化、跨region容灾、异地多活容灾等防止业务不可用,影响体验和收入
5.所有过程自动化原则:通过容器、微服务、D二vOps、第三方组件的使用,实现整个软件交付和运维的自动化
6.零信任原则:不信任网络内部和外部的任何人/设备/系统,基于认证和授权,赋予不同实体不同的身份,对访问进行控制
7.架构持续演进原则:持续进化
主要架构模式
1.服务化架构模式:
服务化架构是构建云原生应用的标准架构模式,要求以应用模块为颗粒度划分一个软件,以接口契约(例如IDL)定义彼此业务关系,以标准协议(HTTP、gRPC等)确保彼此的互联互通,结合DDD(领域模型驱动)、TDD(测试驱动开发)、容器化部署提升每个接口的代码质量和迭代速度。服务化架构的典型模式是微服务和小服务模式
2.Mesh化架构模式:
Mesh化架构是把中间件框架(如RPC、缓存、异步消息等)从业务进程中分离,让中间件SDK与业务代码进一步解耦,从而使得中间件升级对业务进程没有影响,甚至迁移到另一个平台的中间件也对业务透明。分离后在业务进程中只保留Client部分,Client部分很少变化,只负责与Mesh进程通信,原来需要在SDK中处理的流量控制、安全等逻辑由Mesh进程完成
3.Serverless模式:无服务器技术
Serverless将“部署”这个动作从运维中“收走”,使开发者不用关心应用运行地点、操作系统、网络配置、CPU性能等,从架构抽象上看,当业务流量到来/业务事件发生时,云会启动或调度一个已启动的业务进程进行处理,处理完成后云自动会关闭/调度业务进程,等待下一次触发。Serverless适合于实践驱动的数据计算任务、计算时间短的请求/响应应用、没有复杂相互调用的长周期任务
4.存储计算分离模式:
推荐把各类暂态数据(如session)、结构化和非结构化持久数据都采用云服务来保存,从而实现存储分离
5.分布式事务模式:
分布式模式会带来分布式事务问题,架构师需要根据不同场景选择合适的分布式事务模式
(1)传统采用XA模式,虽然具备很强的一致性,但是性能差。
(2)基于消息的最终一致性(BASE)通常有很高的性能,但是通用性有限。
(3)TCC模式完全由应用层来控制事务,事务隔离性可控,也可以做到比较高效:但是对业务的侵入性非常强,设计开发维护等成本很高。
(4)SAGA模式与TCC模式的优缺点类似但没有ty这个阶段,而是每个正向事务都对应一个补偿事务,也是开发维护成本高。
(5)开源项目SEATA的 AT 模式非常高性能且无代码开发工作量,且可以自动执行回滚操作,同时也存在一些使用场景限制。
6.可观测架构:
可观测架构包括 Logging、Tracing、Metrics 三个方面,其中Logging提供多个级别(verbose/debug/warming/error/fatal)的详细信息跟踪,由应用开发者主动提供; Tracing 提供一个请求从前端到后端的完整调用链路跟踪,对于分布式场景尤其有用:Metrics则提供对系统量化的多维度度量。
7.事件驱动架构
Mesh化架构
事件驱动架构模式
典型的云原生架构反模式
1.庞大的单体应用
2.单体应用“硬拆”为微服务
3.缺乏自动话能力的微服务
云原生架构相关技术
容器技术
Docker、Kubernetes
K8S很吊,啥都能干,比较复杂;比如资源调度、部署和管理、自动修复等等
主要微服务技术
Apache Dubbo:开源高性能RPC框架,智能负载均衡,自动服务注册和发现、扩展性搞、可视化服务治理
Spring Cloud Alibaba:分布式应用框架
Nacos:注册中心&配置中心
Sentinel:流控防护
Seata:分布式事务
Chaosblade:故障注入
Tars:腾讯微服务架构开源项目
SOFAStack:蚂蚁金服开源金融分布式架构中间件
DAPR:微软分布式应用运行时
无服务技术
技术特点:
(1)全托管的计算服务,客户只需要编写代码构建应用,无需关注同质化的、负担繁重的基于服务器等基础设施的开 发、运维、安全、高可用等工作;
(2)通用性,结合云BaaSAPI的能力,能够支撑云上所有重要类型的应用:
(3)自动弹性伸缩,让用户无需为资源使用提前进行容量规划:
(4)按量计费,让企业使用成本得有效降低,无需为闲置资源付费。
技术关注点:
1)计算资源弹性调度
2)负载均衡和流控
3)安全性
服务网格
技术特点:
服务网格(ServiceMesh)是分布式应用在微服务软件架构之上发展起来的新技术,旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。这个解耦意味着开发者无需关注微服务相关治理问题而聚焦于业务逻辑本身,提升应用开发效率并加速业务探索和创新。换句话说,因为大量非功能性从业务进程剥离到另外进程中,服务网格以无侵入的方式实现了应用轻量化
主要技术:
2017年发起的服务网格Istio开源项目,清晰定义了数据平面(由开源软件Envoy承载)和管理平面(Istio自身的核心能力)。Istio为微服务架构提供了流量管理机制,同时亦为其他增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础
云原生架构案例分析
原文很长,感觉没什么知识点,看看图吧