-
软件可变性的相关思考(一)作者:陈星亮(华为云开天aPaaS专家)软件可变性(Software Variability)是指在一定上下文中一个软件系统被有效改变(扩展、配置、调整)的能力。在许多软件系统的开发运行阶段乃至整个生命周期中,软件可变性都是其设计开发者所要面对的基本问题。 在大多数系统中,可变性表现为软件在某个或某些可变点处对变体的绑定。其中可变点是指软件中可以发生变化(绑定变体)的位置,而变体则是变化发生时,人或机器可以在相应位置做出的选择。 可以看出,在软件的运行实例中,变化发生的位置、变化发生的程度是在设计阶段预定义的。而这种定义又在很大程度上依赖于软件的需求分析以及在此基础上做出的种种假设。系统虽然具有变体绑定能力来满足既定的需求,但可变性模型(可变点、变体以及它们之间的关系)本身没有变化,导致软件在应对变化的需求或环境时存在一定限制。 在传统意义上,软件运行时可变性模型被认为是静态的。在许多研究工作中,模型被以只读的方式访问,以支持软件适应外部的环境。人们将注意力集中在可变性绑定方面(即为什么(重新)绑定变体、绑定什么变体、怎样绑定),而忽视了对运行时可变性模型本身蕴含的限制的突破。随着计算机技术的发展进步、用户需求的增多及变化的加快、系统驻留环境的开放、外界对系统灵活性和可伸缩性要求的提高,这种限制显得愈加突出。 针对软件可变性,开发者们根据软件实现要求和成本投入,采取软件预留配置点、动态软件产品线、运行时可变性动态绑定、多变非核心功能的快速开发等方法来应对。1、软件预留配置点:软件预留配置点可以自动地根据环境的变化来调整自身。换言之,它可以收集和分析有关环境的信息,基于分析的结果决定是否改变自己的行为,如果是,再采取调整动作。系统设计者指出或假设系统所面对环境变化等信息,确定系统所能够感知和收集的环境数据,进而以一定的数据结构将其表示在计算机内,而后才能设计相应的算法对这些信息进行分析并做出决策。在执行环节对于自身的调整,实际上是软件在可变点处对于变体的动态绑定,这是其运行时可变性的表现。关键点:1)设计者难以在系统部署运行之前设想所有的需求或环境的变化,当超过预期的变化出现时,已经成型的系统无法自动地收集与其相关的信息。2)并未改变可变性要素的数量、属性或关系。只能在设计开发时预定的范围内,进行选择。2、动态软件产品线:动态软件产品线包括一组核心资产和从资产开发而来的一系列具有共同特征的软件产品。与传统软件产品线对比,动态软件产品线更关注软件的运行时可变性,本质上是建立具备可配置能力的一系列软件。关键点:1)产品线自身的设计者可以快速开发出具有运行时可变性的软件产品,并赋予其自主选择绑定变体的能力。2)其关注的运行时可变性大部分都是封闭的而非开放的,这意味着运行时可变性应对的是开发者在设计期设想的环境变化,导致软件产品难以应对超过预期的环境变化。3、运行时可变性动态绑定运行时可变性动态绑定机制描述一个运行中的软件如何在一个可变点绑定相应的变体,是软件可变性实现的核心。绑定机制涉及对构件内部结构和行为的调整,包括对子构件的重配置和动态绑定。关键点:1) 对构件行为的调整往往通过重新组织构件的工作流或是重新设置构件内部参数来实现。2) 对于突破了原有设计范围内的变化,需要能被系统识别,并自动生成对应的逻辑。4、多变非核心功能的快速开发为应对行业应用不断变化的情况,亦有思路是降低软件应用开发的难度,将软件的稳定的核心功能与多变的功能分开。对于多变非核心功能,以提供低码开发的方式,便于开发者能快速的根据诉求,进行近场快速开发并投入使用。关键点:1) 软件设计者需要能识别出稳定的核心功能、多变的非核心功能。并且能够在两者之间建立好连接。2) 提供便捷的工具,使得多变的非核心功能能够被近场开发者,甚至是使用者自己能快速实现。如何提升软件的可变性,让软件能够从容应对业务的变化,一直都是软件工程领域的一个重要话题。针对上述4种在应对软件可变性经常用到的方法,各自都有其特点,分别在不同的场景下使用。
-
关于华为云开天集成工作台,有很多疑问?什么是流?什么是工作流、业务流、集成流?什么是流处理、流编排……这么多问号,头都要大了?!别急,往下看,关于流程模式那些难懂的词儿,在这儿全搞懂!流程(Process)流程图(Flowchart)1.流程(基本流程)图,又称程序框图,是算法、工作流或流程的一种框图表示,它以不同类型的框代表不同种类的步骤,每两个步骤之间则以箭头连接。2.流程图大都有2种符号:①步骤,通常称作“活动”,常以长方形来表示;②决定,常以钻石形来表示。控制流程(Control Flow)1.控制流程(也称为流程控制)是电脑运算领域的用语,意指在程序执行时,个别的指令(或是陈述、子程序)执行或求值的顺序。2.编程语言所提供的流程控制指令一般可以分为以下几种:继续执行位在不同位置的一段指令(无条件分支指令)。若特定条件成立时,执行一段指令,例如C语言的switch指令,是一种有条件分支指令。执行一段指令若干次,直到特定条件成立为止,例如C语言的for指令,仍然可视为一种有条件分支指令。执行位在不同位置的一段指令,但完成后会继续执行原来要执行的指令,包括子程序、协程(coroutine)及计算续体(continuation)。停止程序,不执行任何指令(无条件的终止)。控制流图(Control Flow Chart)利用数学中图的表示方式,标示计算机程序执行过程中所经过的所有路径。控制流图中的每个顶点都对应一个程式基本块,也就是一段没有分支指令、也没有分支目的的程式码,基本块的开始是分支目的,而基本块会以分支为结束。控制流程中会用有向边来表示分支。 工作流(Workflow)工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。A workflow consists of an orchestrated and repeatable pattern of activity, enabled by the systematic organization of resources into processes that transform materials, provide services, or process information. It can be depicted as a sequence of operations, the work of a person or group, the work of an organization of staff, or one or more simple or complex mechanisms.业务流程(Business Process)“一系列结构化的、可度量的活动,设计它的目标是为特定客户或市场产生规定的输出。”“一种活动的集合,具有一种或多种输入和确定的输出,这些输出对客户产生价值。”“业务过程是为产生产品或服务而设计的一系列步骤。多数的过程(……)跨越职能,贯穿组织机构图上矩形之间的空白。一些过程的结果是由组织外的客户所接受的产品或服务,称为主要过程;另一些过程的产出不为外部客户所见,但是有效管理所必须的,称为支持过程。”“互相连接的活动集合,它们将输入转换为输出。理想情况下,在过程中发生的转换将为输入增加价值,并形成对接受者更有效用的输出,无论接受者处于上游还下游。”可界定性:必须清晰地定义其边界、输入和输出。顺序:构成过程的活动,必须在时间和空间里具有确定的顺序。客户:过程的结果必须有接收者——客户。增值:在过程中发生的转换必须为接收者增加价值,无论接收者是在过程的上游还是下游。嵌入性:过程不能自己单独存在,它必定嵌入在组织结构中。跨越职能:过程通常但非必须跨越多个职能。“业务过程”的意义更一般化,学术讨论中使用较多;“业务流程”的意义更具体,更倾向于指称具体的活动与任务的流,使用上更大众化。业务流程模型和标记法(BPMN, Business Process Model and Notation)最初由业务流程管理倡议组织(BPMI, Business Process Management Initiative)开发,名称为"Business Process Modeling Notation",即“业务流程建模标记法”。BPMI于2005年与对象管理组织(OMG, Object Management Group)合并。2011年1月OMG发布2.0版本,同时改为现在的名称。BPMN的目标是,通过提供一套既符合业务人员直观又能表现复杂流程语义的标记法,同时为技术人员和业务人员从事业务流程管理提供支持。四种基本要素:流对象(Flow Object): 事件(Events),活动(Activities),网关(Gateways)连接对象(Connecting Objects): 顺序流(Sequence Flow),消息流(Message Flow),关联(Association)泳道(Swimlanes): 池(Pool),道(Lane)器物(Artifacts/Artefacts): 数据对象(Data Object),组(Group),注释(Annotation)数据流、数据流程图(Data Flow Diagram)1. 数据流或数据流程是一种软件范式,该范式的主要思想是把处理过程划分为可并行执行的子阶段(流水线),数据流又可以称为流处理(Stream Process)或反应式编程(Reactive Programming)。2. 数据流图或数据流程图。数据流图是描述系统中数据流程的一种图形工具,它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。3. 数据流图不是传统的流程图,数据流也不是控制流。数据流图是从数据的角度来描述一个系统。数据流程编程(Dataflow Programming)数据流程编程是一种编程范式,它将程序建模为数据在运算(Operation)之间流动的有向图,从而实现了数据流程原理和架构。数据流程编程语言,共享了纯函数式语言的某些特征,比如单赋值,并且开发它们的动因,通常是为了向更适合数值处理的语言,增加函数式编程概念。传统上,程序被建模为,按照特定次序发生的一系列运算;这称为指令式编程,这种编程方式也叫做顺序式、过程式、控制流程(意指程序选择某个特定路径)。程序聚焦于命令,符合于冯·诺伊曼的顺序式编程愿景,而数据通常是“静止的”(在上下文)。与之相对,数据流程编程强调了数据的流动(输入输出),并将程序建模为一系列的连接。显式的定义输入和输出的连接运算,它的功能类似于黑箱。一个运算在它的所有输入成为有效时立即运行。因此,数据流程语言是天然并行的,并可在大型的、去中心化的系统上运作。流处理(Stream Processing)流处理(Stream Processing)是一种计算机编程范型,相当于数据流程编程,事件流处理,和反应式编程,其允许一些应用更容易地利用了有限形式的并发处理。这些应用程序可以使用多个计算单元,而无需明确管理这些单元之间的分配,同步或通信。流处理通过限制可执行的并发计算来简化并发软件和硬件。给定一个数据序列(流处理),一系列操作(内核函数)被应用到流中的每个元素。基于流程编程(Flow Based Programming)基于流程(flow-based)的编程,缩写为FBP,是一种编程范型,它将应用定义为黑箱进程的网络,它们经过预先定义的连接,通过消息传递来交换数据,而这里的连接是在“外部”指定给进程的。这些黑箱进程不需要更改内部,就可以无尽的重新连接而形成不同的应用。FBP因而是天然基于构件的。FBP是一种特殊形式的数据流程编程,它基于了有界缓冲区,带有确定生存时间的信息包,命名端口,和独立的连接的定义。端口向FBP提供了构件重用功能,使得FBP成为基于构件的架构。集成流(Integration Flow)数据流的一种,用于企业集成的场景,聚焦于企业应用间集成。企业集成架构模式定义了一组可复用组件,支持灵活连接组装为目标企业应用集成流程。集成流强调从源应用(EndPoint)触发(Construct),经过中间处理(Channel、Routing、Transformation),送达目的应用(Endpoint),是在企业集成领域总结出的架构范式。资料来源:[1]https://baike.baidu.com/item/%E6%B5%81%E7%A8%8B/31013?fr=aladdin[2]https://zh.wikipedia.org/wiki/%E6%B5%81%E7%A8%8B%E5%9B%BE[3]https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E6%B5%81%E7%A8%8B[4]https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E6%B5%81%E7%A8%8B[5]https://zh.wikipedia.org/wiki/%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%8A%80%E6%9C%AF[6]https://en.wikipedia.org/wiki/Workflow[7]https://zh.wikipedia.org/wiki/%E4%B8%9A%E5%8A%A1%E8%BF%87%E7%A8%8B[8]https://zh.wikipedia.org/wiki/%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8B%E6%A8%A1%E5%9E%8B%E5%92%8C%E6%A0%87%E8%AE%B0%E6%B3%95[9]https://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E6%B5%81%E7%A8%8B%E5%9C%96[10]https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E6%B5%81%E7%A8%8B%E7%BC%96%E7%A8%8B[11]https://zh.wikipedia.org/wiki/%E4%B8%B2%E6%B5%81%E8%99%95%E7%90%86[12]https://zh.wikipedia.org/wiki/%E5%9F%BA%E4%BA%8E%E6%B5%81%E7%A8%8B%E7%BC%96%E7%A8%8B[13]https://www.enterpriseintegrationpatterns.com/patterns/messaging/
-
1.请问华为云CodeCheck服务可以发现哪些架构设计的问题?架构问题对应的检测规则是什么? 架构问题对应的检测规则如何查看?2.请问华为云CodeCheck服务,与开源工具Sonar的本质区别是什么?
-
架构设计分享
-
作者:金雪锋文章链接:https://www.zhihu.com/question/524596983/answer/2421526288288稍微有点意外,因为去年Jeaf Dean公布Pathways的时候,感觉更像是模型的架构,但这次放出来的是AI Infra的内容,我猜测要不就是Pathways论文讲的基础设施对训练类似多任务/多模型态这些大模型非常关键,要不就是还有一篇专门讲模型的论文。论文首先分析了当前AI框架主流的两种调度模型优缺点:一种是multi-controller架构即典型的HPC中的SPMD,当前Pytorch/JAX/TF2都是这种架构,MindSpore也是类似的。如 (a)所示,每个client在host侧运行,负责自己机器上的device的computation分发。优点:1) 自己host给自己device分发任务,走的是快速的PCIe通道;2) 跨host的通信走的专用的链接(NVLink,或ICI),不借助host memory。缺点:1) 很难实现流水线,用户需要自己实现coordination primitives;2) 当前只允许独占集群,不能执行多作业共享集群资源。缺点一,个人感觉比较牵强,因为multi-controller的架构实现流水线编排感觉是没有问题的,而且还可以发挥多controller并行编译的优点。另外一种就是single-controller典型的如TFV1,client通过构建计算图,将其交给coordinator,后者进一步将图划分,划分后的子图分配给各个worker执行。优点:1)提供了灵活的编程方式,支持流水线并行等non-SPMD方式2)允许资源的virtualization。缺点是:1)在分发computation时,涉及到跨数据中心网络(DCN)的通信,如图(b);(不高效的原因是每轮迭代都要回到ctlr,像google的tpu集群,一个pod256chip,512核,跨pod不能走高性能总线,跨POD通信会比较慢,而从ctlr下发和返回都会涉及跨POD的通信)2)当涉及到的算子数量巨大时,分发computation和coordiantion开销太大(图(c))。Pathways的设计目标:MPMD,融合multiple-controller和single-controller的优点client/host:用户Python代码执行侧,最后转换为low level的MLIR;Resource Management:设备管理,让用户不需要感知具体执行在哪个物理设备上;自动分配的节点可以最大化利用带宽;用户无需感知mesh是2D还是3D;coordinator and gang-scheduler:Low-level IR会转换成PLAQUE program (谷歌内部一个闭源runtime系统),PLAQUE起到了coordinator底座的作用;多调度器架构,每个island会有一个单独的runtime scheduler,负责调度本island中的computation。达成在本island中一致的执行序。现在的调度算法是FIFO。Data management: sharded object store,类似ray。计算中间数据存储在obj store中,function间的通信也是走这个;1、编程模型我们首先看一下Pathways的编程模型:1、首先有一个virtual device的概念,用户编程的时候指定需要的设备数量,不需要指定具体物理设备,由框架来选择具体物理设备;具体的设备资源的分配应该是resource management去完成2、通过pmap实现切图和切算子的能力,我理解程序中a/b/c这些切出来的子图应该后面plaque调度的最小单元。3、通过pw.program的修饰符,实现多种client下发执行的模式。论文中提到pathsway有OpByOp、Chain、Fuse多种执行模式,我想可能是通过前端这种修饰符来指定的。2、调度模型任务下发:论文中提到Sequential dispatch和Parallel async dispatch,我不知道为什么论文中大篇幅介绍了相关内容,感觉是比较自然的事情:Coodinator+island两级调度:首先计算图按照切分规则被分发到不同的coodinator,coodinator的个数应该是灵活的,不过比较容易想到的规则是一个pod一个coodinator(这样的好处在于POD间带宽较低,避免让coodinator去管理其他POD的调度);每个coodinator的子图再由island的runtime来调度,这里最大的挑战是coordinator之间的数据同步,因为和SPMD的程序不一样,MPMD在不同的coordinator跑的图可能是不一样的,所以他们之间的数据同步使用传统的MPI原语有可能有些困难,所以论文中提到使用类似Ray的共享内存的方式来做。资源共享:我个人觉得,最关键的一点是,计算图进行灵活的并行切分后,有机会发现资源空隙,插入其他的计算任务。效果:当单个computation的时间大于2.3ms时,16 hosts 上的pathway能够match上Jax。这是因为计算时间完全掩盖了coordination时间。多租户的效果多clients的利用率总结:Pathways试图提供一种MPMD的调度模式,使能AI计算的云化;解决当前架构有三个问题:(1)灵活性不足,不能满足流水线并行等细粒度并行机制;(2)计算资源独占,在异构集群中资源利用率低;(3)无法满足基础模型中多任务复用、稀疏计算等需求。其核心在于:1、虚拟资源管理2、并行图切分:图和设备的灵活映射、基于共享内存的数据同步;本质是图上能充分表达动态路由和稀疏计算的并行性3、多级调度:client/coordinator/island,实现资源的共享复用。问题和疑惑:1、看上去任务的切分只是支持静态shape,动态shape的场景会导致底层的调度无法预估资源;2、当计算的节点融合到足够大,效果才与multiple-controller架构接近;所以op by op这些执行模式效果不会太好。3、如果计算任务做不到并行图切,比如是数据并行的话,可能资源很难空闲,不知道是否有资源复用的效果;4、多租户这一块要做到计算复用,个人感觉重点在于内存要足够大,放得下多租户的权重和激活,但是现实是现在许多训练任务的瓶颈都在内存上,另外还有一个问题就是动态shape场景下,算不出内存占用怎么办。或许Pathoways这样的AI Infra比较适合Pathways这样的模型。
-
本文说明本文总结梳理-NR系统架构,L1、L2、L3功能框架,便于5G系统相关人员快速熟悉整体架构设计,了解关键技术标准和实现方法。不涉及具体技术细节,宏观把控即可。15G 系统架构与E2E网络切片架构图1 网络切片架构示例E2E(端到端)架构图2 E2E架构示例4G 与5G QOS架构的区别图3 LTE和5G QoS架构比较频谱共享架构图4 频谱共享架构简图图5 5G传输网络参考架构框架的示例4G 与5G互联分离架构图6 简化的4G和5G互联架构图7 3GPP考虑的具体4G/5G互联选项2RAN架构图8 LTE与5G的UP处理比较图9 在5G多服务和多租户RAN中实例化NF的示例图10 根据不同的部署场景进行3层RAN功能划分图11 高层SD-RAN架构3传输网架构图12 融合异构网络和计算基础设施图13 5G传输控制面架构图14 面向租户切片概念图15 传输网一般架构4网络切片图16 网络分片的关键原则图17 特定网络功能/配置的服务或切片示例图18 在跨供应商业务流程上进行切片图19 端到端网络切片示例,用于工厂的5G业务图20 网络切片生命周期管理的各个阶段55G-NR思维导图为方便从事无线通信协议开发、FPGA开发、基带芯片开发或RRU开发工程师们,特别是刚进入通信行业的新人,更快地了解NR的框架,笔者绘制了一份简单的NR思维导图。对于L2、L3,由于平时涉及和了解不多,就简单标识。我们重点把握L1部分,即PHY物理层的关键技术。图21 5G-NR思维导图更为完整和详细的说明,可去参考3GPP TS38系列技术规范和相关的提案。如果有对RRU感兴趣的朋友,比如对DPD算法、AD/DA、高速接口、MIMO等熟悉的朋友,可否传授一些经验,笔者前来学习学习。为了更完整的了解5G的基站与终端之间的PHY处理过程,下面笔者从相关资料种整理了两张图,分别描述了下行和上行物理层处理过程。55G 下行与上行处理过程下行处理:从基站到UE。下图非常清晰地说明了从发送到UE接收的全过程。图22 整体下行物理层处理过程上行处理:从UE到基站。下图非常清晰地说明了从UE发送到5G基站接收的全过程。图23 整体上行物理层处理过程关于5G系统架构和NR协议的介绍就到这里,更多内容,后期推出。这里抛一个问题:5G会是失败的一代通信技术吗?你怎么看?欢迎留言讨论。参考1.5G System Design.2.5G NR Architecture, Technology, Implementation,and Operation of 3GPP New Radio Standards.
-
现在网上讨论的有关物联网的咨询非常之多,但大部分都是介绍理论或者有关硬件,通讯相关的问题,比如物联网模块,物联网通讯协议MQTT、XMPP、NB_IOT等,个人认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发一套物联网平台。物联网平台,应该是基于现在的互联网,通讯技术来建构,而不依赖与特定的硬件模块,用户可以基于自身的设备技术架构,简单轻松接入物联网。下图是物联网的核心架构:1. 四大核心模块在物联网中存在4大核心模块,那就是设备管理,用户管理,数据传输管理,数据管理,只有具备了这四大核心模块,才能认为是一个完整的物联网平台,而所有其他的功能模块都是基于此四大功能模块的延展。1.1 设备管理 设备类型管理:定义设备的类型,此功能一般由设备的制造商来定义,一种设备类型最重要的是关联到一套独有的数据解析方法,数据的存储方法,已经设备规格等数据,也只有设备的制造商才可以编辑有关设备类型的数据,而设备的使用者只能浏览设备类型的相关信息设备管理:设备管理定义设备相关信息,每个设备必须定义其设备类型,设备类型有使用者属性,设备在完成销售,并被使用者激活后设备就属于设备使用者了,这时候设备使用者对设备有完全的控制权,可以控制设备的哪些数据可以被制造商查看,可以被哪些用户查看等权限1.2 用户管理组织管理:在物联网平台中一个很重要的观念就是组织,所有的设备,用户,数据都是基于组织的管理的,设备制造商是一个组织,设备的使用者是一个组织,家庭都可以是一个组织。用户管理:用户是基于一个组织下的人员构成,每个组织下面都有管理员角色,管理员可以为其服务的组织添加不通的用户,并分配每个用户不同的权限。一个用户也可以属于多个不同的组织,并且扮演不同的组织。 用户组:一组用户,也是基于组织的用户组管理,同一用户组的用户拥有相同的权限权限管理:同样是基于组织的权限管理,主要是针对对象级别的权限细分,如设备的浏览权限,可以控制每个用户是否看到这个设备;设备数据浏览权限定义是否可以查看设备的运行数据1.3 数据传输管理1.31 基本格式数据传输管理,定义针对一类型设备的数据传输协议,基本格式是:每一个设备有厂商唯一的序列号,因为每个制造商有自己的编码格式,固此序列号没有固定格式。命令码,为此条数据的作用,比如是上传数据,或者服务器下发给设备的命令等,一般采用2位数字编码00~99数据,此部分是此条报文,所包含的数据部分,每个协议可以定义不同的解析方式,比如服务器在收到数据包后,会根据预先定义好的解析方式解析数据字段,并按照规则存储1.32 数据解析定义每种设备类型可以定义多条命令,每个命令都有自己不同的解析方式,组织的管理员可以为自己的设备类型定义解析方式,服务器接收到数据后,会自动根据预先定义的解析方式解析数据字段,设备开发者要根据在IOT平台定义的数据格式,自行开发自己设备的解析代码,数据字段都按照HEX方式收发。1.33 数据的存储存储要支持分布式架构,可以为每个设备定义不同的存储位置,在diego iot中数据存储使用mysql数据库,实现不同的设备存储在不同的mysql数据库中每条数据定义生命周期,在生命结束后,系统将自动删除1.4 数据管理 权限管理,数据的权限在物联网平台中是至关重要,数据属于谁是一个非常重要的概念,只有设备的拥有者才能定义数据可以给谁看;大数据,物联网数据本身就是海量的数据,我们可以借助一些开源的大数据平台来实现数据的可视化分析,只有经过分析的数据才是有价值的数据;数据的导出,用户可以导出数据到本地做分析;2.网络通讯现在所有的云端的物联网平台和设备之间的通讯,本质上都是建构在TCP/IP协议之上的,只是对数据包的再封装而已,基于此我们可以是用wifi,4g来实现设备和云平台的通讯,不过设备与设备之间的通讯,可以有wifi,Bluetooth,zigbee等,下面介绍几种常用的通讯架构2.1 基于移动3/4G通讯此架构是最简单的架构,设备就如同我们的手机,基于移动通讯来上网,其主要需要考虑如下几点:每个设备都需要一个SIM卡,可以到移动服务器商办理专门针对物联网的SIM卡;数据流量问题,这种架构完全是走数据流量,如果有视频数据,将会产生比较大的流量费用,这都是要考虑的;通讯质量问题,这完全依赖于移动服务商的网络覆盖状况,就如同我们手机一样,在有些环境下是没有信号的,也就没办法收发数据;2.2 基于wifi局域网此中架构,适合于所有的物联网设备都是运行在一个局部环境中,设备通过wifi或者有线连接到路由器,而由路由器统一连接的物联网服务器,就如同我们家中装一个wifi路由器上网一样的架构,需要注意的事项:1.局域网内的智能设备,是没有公网独立的ip的,只有一个局域网内的ip,带来的问题就是,设备可以直接给物联网服务器发送数据包,而物联网服务器是不能直接给设备发送数据包,就因为设备没有公网独立ip2.功耗问题,对于使用wifi接入的设备,最好不是电池供电,因为wifi的功耗比较大3.干扰问题,如果在大型的厂房部署这种架构,一定要考虑,厂房内是否有强干扰源,如电磁干扰,可以考虑采用工业级的无线路由器,一般抗干扰能力比较强2.3 基于蓝牙通讯一般的基于蓝牙的物联网,会考虑通过蓝牙网关来部署蓝牙由于其点对点的通讯方式,所以要考虑如下问题:1.蓝牙网关的容量问题,也就是一个蓝牙网关能接入几个蓝牙设备,这取决于蓝牙网关中使用了多少个蓝牙设备2.蓝牙的配对问题,蓝牙设备直接的通讯都首先配对才能通讯,如果实现自动配对,如果不能自动配对,大规模部署,将是一个很麻烦的事情还有一种场景是针对不需要一直在线的物联网设备,而只是在某种特殊需求的情况下,需要连上服务器,这中场景下,我们可以通过手机的蓝牙功能来让设备接入物联网蓝牙手环是这种架构的一种典型应用模式2.4 基于zigbeeZigBee也是一种流行的组网模式,zigbee本身设计是针对传感器之间的联网,具有非常强的低功耗能力。zigbee接入网络也依赖于zigbee网关,网关本身也是一个zigbee设备,zigbee设备是自组网的,在使用过程中注意的问题有数据量的问题,设备能力和功耗本身是自相矛盾的,由于ZigBee是超低功耗方案,固在通信能力上也是打折扣的,很适合一些传感器数据的采集,如温度湿度,但如果对大数据量的视频类的就不适用了这里主要介绍了,几种常用的物联网部署架构,至于物联网协议,这里就不多介绍,网上文章非常多。3.智能设备diego iot设计的初衷是让智能设备开发者摆脱对特殊模块的依赖,对于智能设备的开发,只要具备联网功能即可,没有特别多的要求。————————————————原文链接:https://blog.csdn.net/ly_asmt/article/details/121125324
-
>摘要:在云原生2.0阶段,我们到底需要构建一个什么样的架构?华为云首席架构师为你一一解答。本文分享自华为云社区[《华为云首席架构师独家分享:云原生2.0架构设计的8大关键趋势》](https://bbs.huaweicloud.com/blogs/314122?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=other&utm_content=content),作者:技术火炬手。 云原生2.0是企业智能升级新阶段,企业的云化从“ON Cloud”走向“IN Cloud”,当一切应用都生于云,长于云,云架构的迭代也会进入一个新的阶段。 围绕云原生2.0,**华为云首席架构师顾炯炯提出了8个关键模式:** 分布式云,混合调度,应用驱动基础设施,存算分离与数据治理自动化,可信、平民化DevOps,基于软总线的异构集成,多模态可迭代AI模型,全方位立体式云安全。 # 分布式云 随着云化和数字化渗透到制造类、工业互联网类场景,5G技术在to B领域应用的快速成熟,以及物联网 、AI技术的成熟,现在云的服务对象不仅是企业的后台IT支撑系统,它延伸到了前端的“现场”,类似于工业场景里的近场计算。如果还是将所有的数字化应用系统都放在集中的数据中心,它的时延无法满足实时生产系统的要求。 另外,有一些行业的敏感数据不能从现场或者数据产生地直接简单的上传到云端,它存在数据安全、隐私保密的问题。再比如医疗里的基因大数据、视频监控等场景,如果所有数据都上传到云端,带宽的成本非常高昂。 所以,我们必须要**引入云边端协同的分布式概念,构建分布式云的架构。** 这个架构可以和核心侧架构配合,覆盖核心区域、热点区域、本地机房、业务现场等不同接入时延敏感度,数据隐私合规要求及数据上云带宽成本的应用上云场景。 举个例子,通过这样的方式,可以把云端的很多算力和计算逻辑,甚至是训练好的AI模型推送到更加靠近用户数据产生地的位置上,进行就近的计算,将海量的数据做一定的收敛、分析、脱敏等,再发送到云端进行闭环的处理和控制反馈。 # 混合调度 在很多算法专家的努力下,华为云通过瑶光调度平台大大提高了资源的分配效率,达到甚至超过了80~90%的程度,已经接近于业界的领先水平。但是资源的实际利用率仍然处在一个比较低的水平,当然业界平均也不是特别理想,领先者差不多20%左右。为了解决这样的问题,**华为云引入混合调动、柔性计算的能力,将在线和离线的不同优先级的业务,进行QoS感知的智能调用,实现资源利用率最大化。** 柔性计算不仅仅具备弹性的特征,保证了横向的资源扩展,而且它也能实现纵向资源规格的可大可小。目前,消费者云已经在内部验证了柔性计算的能力,可以在不改变上层业务的前提下提高利用率,实现性能的倍增。关于柔性计算的更多内容参考 华为云首席架构师顾炯炯:[敢为人先,探索架构创新之路如何走。](https://bbs.huaweicloud.com/blogs/314131) # 应用驱动的基础设施 如今,软硬件的垂直整合,特别是靠近操作系统底层的硬件和云服务基础设施层的服务软件之间的纵向整合能力,成为新的趋势,它把基础设施服务底层的硬件和相应的服务封装层打包在一起。 云服务厂商可以设计研发定制芯片,比如存储和网络的硬件卸载的芯片、匹配深度学习逻辑处理框架的芯片等等。如果有能力构建这样的软硬件垂直整合的能力,就能拥有相比其他云服务商更优的价格优势,也得以呈现自身独特的硬件、芯片优势。 有了应用驱动的基础设施之后,**根据应用的性能SLA需求,来定义是使用与软件完全解耦的通用硬件资源,还是匹配应用场景特殊诉求的软硬件深度协同的卸载卡或异构计算资源。** 这也能发挥华为软硬件兼长的优势,我们在硬件领域有不少核心创新:**一个是 SDI**, 叫软件驱动的基础设施,也就是把分布式存储\分布式网络,还有Hypervisor的一些系统能力从服务器卸载到PCI卡上,也即SDI/擎天卸载卡。二是**鲲鹏硬件支撑云存储和数据湖的处理**, 鲲鹏单核处理能力虽弱于X86,但核密度则达到X86 CPU的2倍,因此在对IO及内存带宽作为其性能瓶颈的大数据及分布式存储场景,是比X86更好的选择。同时,我们也在用自研的**昇腾NPU取代GPU构建AI平台**, 它在深度学习的训练推理中体现出更高的能效比。 # 存算分离和数据治理的自动化 未来企业的所有的数据孤岛都将汇聚到云端的数据湖,进行统一生命周期的治理和管理,所以必须要解决数据计算分析的资源需求。数据湖里有各种各样的结构化、半结构化、非结构化的数据,**但这些数据的分析计算和底层的存储容量之间的需求,并不是线性匹配的关系。** 比如对于深度学习的场景,数据量需要不断的计算迭代,它需要更多的计算能力,相对较少的存储需求。因此在不同的业务场景下,数据分析计算和存储的要求是不一样的,最终一定要走向存算分离。 在存算分离领域里面,华为云已经积累优势,从最早的去中心化的分布式存储引擎FusionStorage开始,七年磨一剑,我们从内部验证到向外部的推广,从块存储延伸到对象存储、文件存储、分布式的集群数据库,把原先在开源架构里五花八门的底层存储技术引擎架构实现了统一。经过实际的测试,在业界同样支持存算分离数据湖架构的云场景中,华为云体现了领先30-60%以上性能优势。 **再就是数据治理自动化。** 现在的数据治理的还是人力密集型工作,整个过程非常低效,很难满足很多行业的要求。所以在这个架构模式里面,除了存算分离的数据库,还要构建数据治理自动化。 通过引入AI的技术,将数据的获取、清洗以及最终数据知识的提取,主题库的建立、数据目录的发布,都实现完全的自动化。用户只需要指定入湖的数据源和所属业务主题域,系统自动化创建入湖任务,底层资源根据入湖数据量自动扩缩容,智能完成入湖数据的安全等级、分级分类、隐私等级等数据标签的自动识别打标。这个能力对企业数据资产的快速沉淀能力的构建是至关重要的。 # 可信、平民化DevOps **通过将一系列安全可信措施嵌入到敏捷开发运维模式,** 构建所谓的DevSecOps流水线,实现敏捷快速迭代与严格质量管控兼顾;并**通过低代码/无代码实现更多行业应用资产的沉淀**, 将行业应用的开发效率再上一个新台阶。 Devops实现了应用的敏捷开发,但在面向政企时,还需要满足应用质量和安全可信的要求。因此在遵循DevOps的同时,将安全能力集成到其中,升级成为DevSecOps。使用安全左移、默认安全、运行时安全、安全服务自动化/自助化、基础设施即代码(IaC)等技术, 实现管理与协同、设计与开发、CI/CD、应用管理、运维、安全可信等各个环节的一体化趋势。 此外,由于传统政企开发投入有限,需要通过低码化无码化,来实现对应用进行快速构建及改造。华为云低代码平台AppCube可支持多种页面类型和丰富的组件能力,基于它的服务能力编排和业务流程无代码定制,可实现灵活流程触发方式、多种权限配置方式、自定义业务编排等。 # 基于软件总线的异构集成 即帮助企业**构建可平滑演进的IT架构**, 实现老旧应用与新建云原生应用,线上与线下应用的平滑融合集成。 云原生下,企业很多应用都要进行微服务解耦,遵从微服务的治理架构,进行水平扩展的架构的设计,甚至把原来的单体架构逐步进行拆解。但这个过程不是一蹴而就的,尤其是那些包袱比较重的传统行业,他们还面临很多现实的挑战。所以我们要在企业传统IT架构和云原生架构之间搭建无缝的桥梁,在确保企业业务连续性最大化的前提下,实现平滑的切换和演进。 以Roma Connect为例,它可以通过软总线的形式,把云原生和非云原生的传统世界无缝的连接起来,支持异构的应用和数据库源的对接,也可以对接到云上开发平台、数据湖,实现无缝互通。 在架构的平滑演进中,首先需要将传统非云原生应用封装为REST接口与云原生应用对接,通过统一接口服务层APIC进行开放,业务云原生应用通过标准接口即可获取老系统信息。同样的机制可以将线上线下,及部署在多云环境上企业IT系统的无缝互通。 其次传统Oracle/Sybase等传统数据库及中间件与设备协议接入上云:云上云原生应用通过云上标准API调用、数据库访问、消息订阅等方式即可获取传统数据。 最后,通过全生命周期的API管理能力,包含从设计、发布、上架、治理的全过程,帮助企业构建整个跨地域,跨组织、跨部门的应用网络,并沉淀行业应用资产。 # 多模态可迭代的AI模型 AI在行业落地面临的问题是能够获取到的训练数据是非常有限的,单纯的依赖数据驱动的深度学习训练,使得行业AI模型是非常难以泛化、通用化。 预训练大模型是解决AI应用开发定制化和碎片化的重要方法。 通过一个AI大模型实现在众多场景通用、泛化和规模化复制,减少对数据标注的依赖,赋能AI开发由作坊式转变为工业化开发,比如华为云之前推出的盘古大模型。 另外也要**引入知识计算的能力**, 类似于把知识图谱这样的能力和基于感知计算的数据驱动的AI模型互补结合起来。也就是说把知识模型和数据模型,在数据样本相对缺少的情况下结合在一起,更好服务于行业AI的落地。帮助企业打造自己的知识计算平台,整合分散在不同系统、多种形态的企业数据,形成带有建议性的知识体系。 # 全方位的立体式云安全 1.0阶段的云安全服务更多的是孤立的安全能力:虚拟化安全,hyporvisor防逃逸能力,云防火墙能力其实都是割裂的,并没有跟所有的云服务形成互锁。 **全方位的立体式运营安全通过打通离散的云安全服务能力,将其与其他云服务及客户应用形式互锁**, 构建安全Build-in的云原生应用,以及引入可信智能计算,解决跨行业数据隐私保护与流通碰撞、价值挖掘之间的矛盾。 首先通过可信智能计算提供四个核心能力,进行安全可信的数据计算。包括: 1、跨组织、跨行业的多方数据融合分析和多方横向与纵向联邦学习建模; 2、支持对接主流数据源和深度学习框架; 3、支持安全多方计算(例如同态加密,差分隐私等),并支持用户自定义隐私策略; 4、基于区块链的数据计算轨迹的可追溯可审计。 此外,为了全方位安全,还需要将全栈云(及其子集)下沉部署(连线/非连线),彻底解决敏感行业上云安全顾虑,以及将全栈云服务、企业新开发云原生应用、aPaaS/SaaS等与全栈云安全能力互锁,为用户构建体系化的云安全平台。
-
1.1 方案设计1.1.1 方案设计页面注册方案成功后,相应的方案设计负责人(架构师角色)会生成待办事项,在工作待办页面的待处理模块中,点击该事项的处理按钮如下图或者点击菜单栏导航的设计中心标签,或者点击方案管理页面的设计按钮,如下图以上方式都可以进入到方案设计页面,如下图1.1.2 集成架构设计点击方案设计页面中的添加集成架构按钮,可以弹出添加弹窗,如图一、选择无模板:填写信息后确定,添加集成架构后在画布中设计结构图,可以在图元库中选择图元按住左键拖拉到画布中,点击图元,图元的边框上会显示连接接待,选中节点按住左键就可以拉出连接箭头,右键点击图元可以看到相关的图元操作。如下图画布正上方是绘图辅助工具,右上方有保存按钮、导出画布按钮、清空画布按钮、发布加速场按钮。绘制完成后点击保存即可。申请添加至加速场架构模板:保存画布后,如果想将该架构图申请为加速场模板,点击发布加速场按钮(如上图右上角红色线框内)进行申请,申请通过后即可以上架至加速场架构模板。二、选择加速场架构模板:需要复制加速场架构模板的ID填写至ID输入框内,填写完信息后点击确定即可将架构模板导入该集成架构。如下图在选择模板框中输入架构模板的相关信息后搜索,选择目标模板确定。架构模板的相关信息,可以在我的首页页面的解决方案加速场中点击架构模板标签,如下图架构模板名称后面为模板ID,点击复制即可获得ID。三、从已有架构复制:如下图选择需要复制的模板所在的工作空间、解决方案、集成架构名,填写好其他相关信息后即可。1.1.3 部署架构设计一、手工部署:点击方案设计页面的新建部署架构按钮选择手工部署,如下图填写相关信息后确定即可。点击部署架构名称,在右方的配置清单内点击新建配置项按钮,即可添加配置项,如下图二、使用IOTStage:点击方案设计页面的新建部署架构按钮选择IOTStage,如下图填写好相关信息后,点击确定即可。新建IOTStage部署架构后,点击该架构名称,页面展示如下图注意事项:上图右方设计步骤栏中的提示功能非常重要,有具体的步骤指导。点击上图的开始设计按钮,可以进入应用托管平台页面,如下图点击新建应用按钮,如下图新建之后进入该应用,如下图点击新建规格,如下图填写信息后,点击确定后,进入依赖配置页面,如下图点击上图右上方的价格预算按钮,可以查看该配置的预算费用,如下图完成依赖配置后点击保存即可。回到 给应用的详情页面,导出上面新建的部署架构,如下图点击提交,可以把该部署规格提交给iotstage审核,审核通过后会得到相应的应用链接在设计中心页面上传上一步导出的规格,如下图应用链接即为上一步提交审核通过后的获得的应用链接,这个链接是后续资源开通时候一键自动部署的链接地址。如果我们没有把新建的规格提交审核,那么应用链接可以自行编写,只是不能在资源开通的时候一键部署应用。1.1.4 方案提交评审架构设计、配置清单设计完成后,设计中心页面点击右上角的提交审核按钮,然后在弹窗中选择审核负责人(项目经理角色),点击确定提交,如下图提交审核后,相应的负责人生成一条审核的待办事项。下一步:方案审核1.1.5 方案审核支持项目经理从方案审核待办进入到方案审核页面,待办事项如下图点击处理按钮后,进入到方案方案审核页面,如下图通过审核,方案的业务即全部完成。驳回至方案设计阶段,方案回到设计阶段,方案设计负责人生成方案设计待办事项。驳回至方案注册阶段,方案回到注册阶段,方案注册人生成方案注册的待办事项。1.1.6 方案详情用户进入方案管理页面,如下图点击方案名称即可进入到该方案的详情页。
-
现在网上讨论的有关物联网的咨询非常之多,但大部分都是介绍理论或者有关硬件,通讯相关的问题,比如物联网模块,物联网通讯协议MQTT、XMPP、NB_IOT等,个人认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发一套物联网平台。物联网平台,应该是基于现在的互联网,通讯技术来建构,而不依赖与特定的硬件模块,用户可以基于自身的设备技术架构,简单轻松接入物联网。下图是物联网的核心架构:1. 四大核心模块在物联网中存在4大核心模块,那就是设备管理,用户管理,数据传输管理,数据管理,只有具备了这四大核心模块,才能认为是一个完整的物联网平台,而所有其他的功能模块都是基于此四大功能模块的延展。1.1 设备管理 设备类型管理:定义设备的类型,此功能一般由设备的制造商来定义,一种设备类型最重要的是关联到一套独有的数据解析方法,数据的存储方法,已经设备规格等数据,也只有设备的制造商才可以编辑有关设备类型的数据,而设备的使用者只能浏览设备类型的相关信息设备管理:设备管理定义设备相关信息,每个设备必须定义其设备类型,设备类型有使用者属性,设备在完成销售,并被使用者激活后设备就属于设备使用者了,这时候设备使用者对设备有完全的控制权,可以控制设备的哪些数据可以被制造商查看,可以被哪些用户查看等权限1.2 用户管理组织管理:在物联网平台中一个很重要的观念就是组织,所有的设备,用户,数据都是基于组织的管理的,设备制造商是一个组织,设备的使用者是一个组织,家庭都可以是一个组织。用户管理:用户是基于一个组织下的人员构成,每个组织下面都有管理员角色,管理员可以为其服务的组织添加不通的用户,并分配每个用户不同的权限。一个用户也可以属于多个不同的组织,并且扮演不同的组织。 用户组:一组用户,也是基于组织的用户组管理,同一用户组的用户拥有相同的权限权限管理:同样是基于组织的权限管理,主要是针对对象级别的权限细分,如设备的浏览权限,可以控制每个用户是否看到这个设备;设备数据浏览权限定义是否可以查看设备的运行数据1.3 数据传输管理1.31 基本格式数据传输管理,定义针对一类型设备的数据传输协议,基本格式是:每一个设备有厂商唯一的序列号,因为每个制造商有自己的编码格式,固此序列号没有固定格式。命令码,为此条数据的作用,比如是上传数据,或者服务器下发给设备的命令等,一般采用2位数字编码00~99数据,此部分是此条报文,所包含的数据部分,每个协议可以定义不同的解析方式,比如服务器在收到数据包后,会根据预先定义好的解析方式解析数据字段,并按照规则存储1.32 数据解析定义每种设备类型可以定义多条命令,每个命令都有自己不同的解析方式,组织的管理员可以为自己的设备类型定义解析方式,服务器接收到数据后,会自动根据预先定义的解析方式解析数据字段,设备开发者要根据在IOT平台定义的数据格式,自行开发自己设备的解析代码,数据字段都按照HEX方式收发。1.33 数据的存储存储要支持分布式架构,可以为每个设备定义不同的存储位置,在diego iot中数据存储使用mysql数据库,实现不同的设备存储在不同的mysql数据库中每条数据定义生命周期,在生命结束后,系统将自动删除1.4 数据管理 权限管理,数据的权限在物联网平台中是至关重要,数据属于谁是一个非常重要的概念,只有设备的拥有者才能定义数据可以给谁看;大数据,物联网数据本身就是海量的数据,我们可以借助一些开源的大数据平台来实现数据的可视化分析,只有经过分析的数据才是有价值的数据;数据的导出,用户可以导出数据到本地做分析;2.网络通讯现在所有的云端的物联网平台和设备之间的通讯,本质上都是建构在TCP/IP协议之上的,只是对数据包的再封装而已,基于此我们可以是用wifi,4g来实现设备和云平台的通讯,不过设备与设备之间的通讯,可以有wifi,Bluetooth,zigbee等,下面介绍几种常用的通讯架构2.1 基于移动3/4G通讯此架构是最简单的架构,设备就如同我们的手机,基于移动通讯来上网,其主要需要考虑如下几点:每个设备都需要一个SIM卡,可以到移动服务器商办理专门针对物联网的SIM卡;数据流量问题,这种架构完全是走数据流量,如果有视频数据,将会产生比较大的流量费用,这都是要考虑的;通讯质量问题,这完全依赖于移动服务商的网络覆盖状况,就如同我们手机一样,在有些环境下是没有信号的,也就没办法收发数据;2.2 基于wifi局域网此中架构,适合于所有的物联网设备都是运行在一个局部环境中,设备通过wifi或者有线连接到路由器,而由路由器统一连接的物联网服务器,就如同我们家中装一个wifi路由器上网一样的架构,需要注意的事项:1.局域网内的智能设备,是没有公网独立的ip的,只有一个局域网内的ip,带来的问题就是,设备可以直接给物联网服务器发送数据包,而物联网服务器是不能直接给设备发送数据包,就因为设备没有公网独立ip2.功耗问题,对于使用wifi接入的设备,最好不是电池供电,因为wifi的功耗比较大3.干扰问题,如果在大型的厂房部署这种架构,一定要考虑,厂房内是否有强干扰源,如电磁干扰,可以考虑采用工业级的无线路由器,一般抗干扰能力比较强2.3 基于蓝牙通讯一般的基于蓝牙的物联网,会考虑通过蓝牙网关来部署蓝牙由于其点对点的通讯方式,所以要考虑如下问题:1.蓝牙网关的容量问题,也就是一个蓝牙网关能接入几个蓝牙设备,这取决于蓝牙网关中使用了多少个蓝牙设备2.蓝牙的配对问题,蓝牙设备直接的通讯都首先配对才能通讯,如果实现自动配对,如果不能自动配对,大规模部署,将是一个很麻烦的事情还有一种场景是针对不需要一直在线的物联网设备,而只是在某种特殊需求的情况下,需要连上服务器,这中场景下,我们可以通过手机的蓝牙功能来让设备接入物联网蓝牙手环是这种架构的一种典型应用模式2.4 基于zigbeeZigBee也是一种流行的组网模式,zigbee本身设计是针对传感器之间的联网,具有非常强的低功耗能力。zigbee接入网络也依赖于zigbee网关,网关本身也是一个zigbee设备,zigbee设备是自组网的,在使用过程中注意的问题有数据量的问题,设备能力和功耗本身是自相矛盾的,由于ZigBee是超低功耗方案,固在通信能力上也是打折扣的,很适合一些传感器数据的采集,如温度湿度,但如果对大数据量的视频类的就不适用了这里主要介绍了,几种常用的物联网部署架构,至于物联网协议,这里就不多介绍,网上文章非常多。3.智能设备diego iot设计的初衷是让智能设备开发者摆脱对特殊模块的依赖,对于智能设备的开发,只要具备联网功能即可,没有特别多的要求————————————————原文链接:https://blog.csdn.net/ly_asmt/article/details/121125324
-
ADC项目开发流程介绍适用场景本文内容适用于基于ADC(低代码)平台开发的项目,为相关人员提供业务设计思路,尤其在项目组由多人组成的情况下(包括项目经理、设计师、开发者等),建议规范化运作项目。一、 项目开发全流程图为使流程更清晰,省略了各环节的评审及详细内容,如有更好的建议,欢迎提出。(以下流程适用与5人以内的项目,包含(业务需求方)、项目经理、架构设计、开发人员等)1.1 项目启动1.1.1 需求调研 正式开发前,项目经理应输出相关文档,调研详细需求并输出方案设计(PPT形式即可),此文档有助于向项目组人员(包含架构设计、开发者、第三方系统负责人等)传递项目信息。输出的《项目概要及计划安排》文档,包含整体项目背景、业务痛点、项目目标等。1.2 需求确认1.2.1 方案设计 整体业务设计及业务流设计,并确认使用的技术,确认多个系统间的调用关系。1.3 设计阶段1.3.1 原型设计 1. UI-页面原型设计: 页面是展现在人机交互的使用和看得到的界面。需要考虑的点:最终需要呈现哪些页面;页面需要具备的具体功能(信息呈现、流程活动、页面跳转等); 2. 表结构设计: ”表结构设计“即“数据库E-R图”绘制,需要通过综合、归纳与抽象用户需求,形成一个具体的概念模型。E-R 图主要用于在项目团队内部,设计人员和业务方、开发人员进行沟通,确认 需求信息的正确性和完整性。 E-R图概念:即实体-联系图(Entity Relationship Diagram),是指提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型。 3. 业务流设计:用户视角:区分不同类型用户使用视角;开发视角:设计不同模块间(页面/表)数据传递方式及内容。如涉及到第三方系统互通,需要明确互通方式及API数据格式。1.3.2 详细设计 在设计UI页面、表时,注意各个模块间解耦,增强后续可迭代性和可扩展性。 1. UI-页面详细设计:(工具选择:简易版-PPT ,高阶版:XD、Axure工具),UI设计,需要从用户视角触发,注重使用者的操作习惯和角色。 a.设计总页面,菜单分类,各个菜单之间的关系; b. 每个页面中显示的内容,如:文字显示/输入框、按钮的名称,对应的触发动作(如:点击按钮时,需要保存信息)。 2.表结构设计(模型):(工具选择:简易版-excel,高阶版:Edraw、MindMaster等工具) a.明确各表名称,主键,属性,属性类型等; b.明确多个表之间的映射关系。 3.业务流设计:(工具选择:简易版-PPT,高阶版:Edraw、MindMaster等工具) a.页面与表之间关系 ; b.页面与第三方系统之间的互通。1.4 开发阶段1.4.1 分工 多人开发的项目,负责的模块尽量解耦,避免多人操作同一个页面或者代码。为便于沟通,建议项目组成员尽量在一起办公。如:开发者A:负责建模,负责菜单中“首页”、“新增报告”、“浏览报告”;开发者B:负责菜单中“日志管理”、“用户管理”;开发者C:负责API互通部分。1.4.2 开发过程中注意事项代码需要些注释,表明是谁,什么时间,加了什么功能的代码;在修改模型关键字段时,告知团队其他成员。(如字段被其他页面或者代码使用时,会被影响);谨慎删除模型中的属性、页面、代码;如需修改原有代码或者逻辑,注意进行备份;如掌握的新技能,建议在做笔记,善于经验总结。1.5 测试 开发者要自行测试后,各开发者之间要交叉验证,保证验证全面。准备多个样例数据进行验证。1.6 上线 建议上线的环境与开发的环境隔离,保证开发与上线运行并行。上线前建议先试运行一段时间,限制使用范围,待无明显BUG后,再正式上线。二、 各类文档及过程产物序号文档输出责任人阶段备注1项目概要及计划安排项目经理项目启动 2方案设计项目经理概要需求 3原型设计架构设计设计 4界面设计架构设计设计 5表结构设计架构设计设计 6项目计划表项目经理/架构设计开发 7程序使用手册/上线 8项目总结/上线后
-
项目背景:用户通过域名访问vip, nginx做为负载均衡为后端应用分发请求, 后端应用为dubbo服务,存储分为redis和mysql. redis做为持久会存储数据库,支持前端业力. 并且通过mq同步数据到mysql,供后端使用. 同时后台写mysql也要通过mq同步到redis.目前后端服务qps最高可以达到5万,本次架构设计在不重构的情况下短期内最快的方法达到目标10万qps.架构方案:一,现有idc架构可支撑5万qps。这是经过一年考验下来的,可做为保底的;如果应用全部上云,需要从0开始重新验证能否达到现有5万qps,再去验证能否达到10万qps,时间等未知风验很大; 二,10万qps目标,建议用简单粗暴的方式,直接把idc应用层架构复制一套上云;不建议在现有架构上继续调优,现在架构如果不重构,可能很难找到问题;与其这样不如把人力时间用到另一个方向,比如数据中心; 三,由idc+公有云两套系统构成混合云模式,数据统一使用idc的redis和mysql,公有云与idc 的数据库连接建立专线;混合云的方式可以检测公有云的实际性能,也能为将来全部迁移公有云提供真实参考; 四,平时比赛,使用idc架构完全可以支撑,公有云留少量机器和用户请求预热,重要比赛,临时增加云资源扛突发,服务器成本节约,扩展性也灵活; 五,公有云都有出现过大规模事故,造成全站不能访问的情况,为了保险,我们依然要保留idc的服务,所以混合云也许是最适合的; 技术难点: 一,如何将用户请求分流到 idc和公有云两套应用 1,域名解析两条A记录,分别指向idc和公有云两个vip,通过dns平均分配用户请求 2,idc架构在nginx前端增加四层负载均衡(lvs,ha_porxy),由四层负载均衡将用户请求转发给idc的nginx和公有云的负载均衡,lvs与公有云通信通过专线; 二,前端应用入口放大,后端数据中心,需要扩容 1,redis使用多主多从,redis3.0 还是用 代理(predixy,codis); 2,业务拆分,组建更多的一主多从; 具体实施: 1,双系统流量分发配置lvs即可,本赛季最好能用上几轮,演练资源增减,熟悉流程,检测可行性; 2,redis数据中心需要大量的测试,选型,可做重点研究(这也是目前急需解决的单点);
-
开发类项目全流程本文内容适用于基于ADC(低代码)平台开发的项目,为相关人员提供业务设计思路,如项目组由多人组成的情况下(包括项目经理、设计师、开发者等),建议规范化运作项目。一、 项目开发流程为使流程更清晰,省略了各环节的评审及详细内容,如有更好的建议,欢迎提出。1.1 项目启动1.1.1 需求调研正式开发前,项目经理应输出相关文档,调研详细需求并输出方案设计(PPT形式即可),此文档有助于向项目组人员(包含架构设计、开发者、第三方系统负责人等)传递项目信息文档输出:“项目概要及计划安排”,包含整体项目背景、业务痛点、项目目标等。1.2 概要需求1.2.1 方案设计整体业务设计及业务流设计,并确认使用的技术,确认多个系统间的调用关系。1.3 设计阶段1.3.1 原型设计UI-页面原型设计;页面是展现在人机交互的使用和看得到的界面。需要考虑的点:最终需要呈现哪些页面;页面需要具备的具体功能(信息呈现、流程活动、页面跳转等); 2. 表设计; 3. 业务流设计:用户视角:区分不同类型用户使用视角。开发视角:设计不同模块间(页面/表)数据传递方式及内容。如涉及到第三方系统互通,需要明确互通方式及API数据格式1.3.2 详细设计在设计UI页面、表时,注意各个模块间解耦,增强后续可迭代性和可扩展性。UI-页面详细设计;(工具选择:简易版-PPT ,高阶版:XD、Axure工具)UI设计,需要从用户视角触发,注重使用者的操作习惯和角色。设计总页面,菜单分类,各个菜单之间的关系。每个页面中显示的内容,如:文字显示/输入框按钮的名称,对应的触发动作(如:点击按钮时,需要保存信息) 2. 表设计(模型):明确各表名称,主键,属性,属性类型等明确多个表之间的映射关系 3. 业务流设计:页面与表之间关系页面与第三方系统之间的互通1.4 开发阶段1.4.1 分工多人开发的项目,负责的模块尽量解耦,避免多人操作同一个页面或者代码。为便于沟通,建议项目组成员尽量在一起办公。如:开发者A:负责建模,负责菜单中“首页”、“新增报告”、“浏览报告”开发者B:负责菜单中“日志管理”、“用户管理”开发者C:负责API互通部分1.4.2 开发过程中注意事项代码需要些注释,表明是谁,什么时间,加了什么功能的代码。在修改模型关键字段时,告知团队其他成员。(如字段被其他页面或者代码使用时,会被影响)。谨慎删除模型中的属性、页面、代码。如需修改原有代码或者逻辑,注意进行备份。如掌握的新技能,建议在做笔记,善于经验总结。1.5 测试开发者要自行测试后,各开发者之间要交叉验证,保证验证全面。准备多个样例数据进行验证。1.6 上线建议上线的环境与开发的环境隔离,保证开发与上线运行并行。上线前建议先试运行一段时间,限制使用范围,待无明显BUG后,再正式上线。二、 各类文档及过程产物序号文档输出责任人阶段备注1项目概要及计划安排项目经理项目启动 2方案设计项目经理概要需求 3原型设计架构设计设计 4界面设计架构设计设计 5表结构设计架构设计设计 6项目计划表项目经理/架构设计开发 7程序使用手册/上线 8项目总结/上线后
-
本文内容适用于基于ADC(低代码)平台开发的项目,为相关人员提供业务设计思路,如项目组由多人组成的情况下(包括项目经理、设计师、开发者等),建议规范化运作项目。一、 项目开发流程 为使流程更清晰,省略了各环节的评审及详细内容,如有更好的建议,欢迎提出。1.1 项目启动1.1.1 需求调研正式开发前,项目经理应输出相关文档,调研详细需求并输出方案设计(PPT形式即可),此文档有助于向项目组人员(包含架构设计、开发者、第三方系统负责人等)传递项目信息文档输出:“项目概要及计划安排”,包含整体项目背景、业务痛点、项目目标等。1.2 概要需求1.2.1 方案设计整体业务设计及业务流设计,并确认使用的技术,确认多个系统间的调用关系。1.3 设计阶段1.3.1 原型设计1、 UI-页面原型设计;页面是展现在人机交互的使用和看得到的界面。需要考虑的点:最终需要呈现哪些页面;页面需要具备的具体功能(信息呈现、流程活动、页面跳转等);2、 表设计;3、 业务流设计:a) 用户视角:区分不同类型用户使用视角。b) 开发视角:设计不同模块间(页面/表)数据传递方式及内容。如涉及到第三方系统互通,需要明确互通方式及API数据格式1.3.2 详细设计在设计UI页面、表时,注意各个模块间解耦,增强后续可迭代性和可扩展性。1、 UI-页面详细设计;(工具选择:简易版-PPT ,高阶版:XD、Axure工具)UI设计,需要从用户视角触发,注重使用者的操作习惯和角色。a) 设计总页面,菜单分类,各个菜单之间的关系。b) 每个页面中显示的内容,如: i. 文字显示/输入框 ii. 按钮的名称,对应的触发动作(如:点击按钮时,需要保存信息)2、 表设计(模型):a) 明确各表名称,主键,属性,属性类型等b) 明确多个表之间的映射关系3、 业务流设计:a) 页面与表之间关系b) 页面与第三方系统之间的互通1.4 开发阶段1.4.1 分工多人开发的项目,负责的模块尽量解耦,避免多人操作同一个页面或者代码。为便于沟通,建议项目组成员尽量在一起办公。如:Ø 开发者A:负责建模,负责菜单中“首页”、“新增报告”、“浏览报告”Ø 开发者B:负责菜单中“日志管理”、“用户管理”Ø 开发者C:负责API互通部分1.4.2 开发过程中1、 注意事项a) 代码需要些注释,表明是谁,什么时间,加了什么功能的代码。b) 在修改模型关键字段时,告知团队其他成员。(如字段被其他页面或者代码使用时,会被影响)。c) 谨慎删除模型中的属性、页面、代码。d) 如需修改原有代码或者逻辑,注意进行备份。e) 如掌握的新技能,建议在做笔记,善于经验总结。1.5 测试开发者要自行测试后,各开发者之间要交叉验证,保证验证全面。准备多个样例数据进行验证。1.6 上线建议上线的环境与开发的环境隔离,保证开发与上线运行并行。上线前建议先试运行一段时间,限制使用范围,待无明显BUG后,再正式上线。二、 各类文档及过程产物序号文档输出责任人阶段备注1项目概要及计划安排项目经理项目启动 2方案设计项目经理概要需求 3原型设计架构设计设计 4界面设计架构设计设计 5表结构设计架构设计设计 6项目计划表项目经理/架构设计开发 7程序使用手册/上线 8项目总结/上线后
上滑加载中
推荐直播
-
OpenHarmony应用开发之网络数据请求与数据解析
2025/01/16 周四 19:00-20:30
华为开发者布道师、南京师范大学泰州学院副教授,硕士研究生导师,开放原子教育银牌认证讲师
科技浪潮中,鸿蒙生态强势崛起,OpenHarmony开启智能终端无限可能。当下,其原生应用开发适配潜力巨大,终端设备已广泛融入生活各场景,从家居到办公、穿戴至车载。 现在,机会敲门!我们的直播聚焦OpenHarmony关键的网络数据请求与解析,抛开晦涩理论,用真实案例带你掌握数据访问接口,轻松应对复杂网络请求、精准解析Json与Xml数据。参与直播,为开发鸿蒙App夯实基础,抢占科技新高地,别错过!
回顾中 -
Ascend C高层API设计原理与实现系列
2025/01/17 周五 15:30-17:00
Ascend C 技术专家
以LayerNorm算子开发为例,讲解开箱即用的Ascend C高层API
回顾中
热门标签