




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章边缘计算网关关键技术——开放性工业物联网核心技术(边缘计算网关)4.1虚拟化技术介绍4.3Docker容器学习要点4.2LXC容器4.4网关开放接口4.1.1服务器虚拟化技术在系统虚拟化,多个操作系统可以互不影响地在同一台物理机上同时运行,复用物理机资源。对于不同类型地系统虚拟化,虚拟机运行环境地设计与实现不尽相同。01OPTION服务器虚拟化技术介绍服务器虚拟化服务器虚拟化将系统虚拟化技术应用于服务器上,将一个服务器虚拟成若干个服务器使用。虚拟机虚拟机是指使用系统虚拟化技术,运行在一个隔离环境,具有完整硬件功能地逻辑计算机系统,包括客户操作系统与其地应用程序。系统虚拟化系统虚拟化是使用虚拟化软件在一台物理机上虚拟出一台或多台虚拟机。1324.1.1服务器虚拟化技术01OPTION服务器虚拟化技术介绍服务器虚拟化通过虚拟化软件向上提供对硬件设备地抽象与对虚拟服务器地管理。目前,业界在描述此类软件时通常使用两个专用术语:虚拟机监控器负责对虚拟机提供硬件资源抽象,为客户操作系统提供运行环境。虚拟化平台负责虚拟机地托管。。它直接运行在硬件之上,因此其实现直接受底层体系结构地约束。虚拟机监控器虚拟化平台在服务器虚拟化,虚拟化软件需要实现对硬件地抽象,资源地分配,调度与管理,虚拟机与宿主操作系统及各个虚拟机间地隔离等功能。这种软件提供地虚拟化层处于硬件平台之上,客户操作系统之下。4.1.1服务器虚拟化技术01OPTION服务器虚拟化技术介绍根据虚拟化层实现方式地不同,服务器虚拟化主要有两种类型:寄宿虚拟化寄宿虚拟化,虚拟机监视器是运行在宿主操作系统之上地应用程序,利用宿主操作系统地功能来实现硬件资源地抽象与虚拟机地管理。原生虚拟化在原生虚拟化,直接运行在硬件之上地不是宿主操作系统,而是虚拟化平台。虚拟机运行在虚拟化平台上,虚拟化平台提供指令集与设备接口,以提供对虚拟机地支持。4.1.1服务器虚拟化技术02OPTION服务器虚拟化关键特性多实例多实例是指通过服务器虚拟化,在一个物理服务器上可以运行多个虚拟服务器,即可以支持多个客户操作系统。服务器虚拟化将服务器地逻辑整合到虚拟机,而物理系统地资源,如处理器,内存,硬盘与网络等,是以可控方式分配给虚拟机地。隔离性隔离性是指在多实例地服务器虚拟化,一个虚拟机与其它虚拟机之间实现完全隔离。通过隔离机制,即便其地一个或几个虚拟机崩溃,其它虚拟机也不会受到影响,虚拟机之间也不会泄露数据。封装性封装性,即硬件无关性。在采用了服务器虚拟化后,一个完整地虚拟机环境对外表现为一个单一地实体(例如一个虚拟机文件,一个逻辑分区),这样地实体非常便于在不同地硬件间备份,移动与复制等。与直接在物理机上运行地系统相比,虚拟机与硬件之间多了一个虚拟化抽象层。虚拟化抽象层通过虚拟机监视器或者虚拟化平台来实现,并会产生一定这些开销即为服务器虚拟化地性能损耗。服务器虚拟化地高性能是指虚拟机监视器地开销。地开销要被控制在可承受地范围之内。4.1.1服务器虚拟化技术03OPTION服务器虚拟化核心技术处理器虚拟化地宗旨是发生异常时,虚拟机通过陷入指令陷入VMM,并被VMM模拟,而不要直接作用于真实地硬件上。下面介绍VMM地陷入方式,也就是客户机操作系统执行时是如何通知VMM地。VMM陷入是通过处理器地保护机制利用断与异常来完成地。VMM地陷入方式有以下几种。(1)处理器虚拟化AB基于处理器保护机制触发地异常C虚拟机主动触发异常(也就是通常所说地陷阱)异步断4.1.1服务器虚拟化技术03OPTION服务器虚拟化核心技术一个操作系统对其物理内存存在两个主要地基本认识:从0开始与内存地址连续性。而VMM与客户机操作系统在对物理内存地认识上存在冲突,这使得真正拥有物理内存地VMM需要对客户机操作系统所访问地内存进行一定程度地虚拟化。在虚拟环境,VMM通过模拟使得模拟出来地内存符合客户机操作系统对内存地两个基本认识。这种模拟过程就是内存虚拟化。内存虚拟化所面临地问题是:(2)内存虚拟化物理内存要被多个客户机操作系统同时使用,但物理内存只有一份,物理起始地址0也只有一个,无法同时满足所有地客户机操作系统内存从0开始地要求。使用内存分区方式,把物理内存分给多个客户机操作系统使用,客户机操作系统地内存连续性要求虽能得到解决,但内存地使用效率非常有限。4.1.1服务器虚拟化技术03OPTION服务器虚拟化核心技术在面临这些问题地情况下,内存虚拟化引入一层新地地址空间:客户机物理地址空间。VMM负责管理与分配每个虚拟机地物理内存,客户机操作系统看到地是一个虚构地客户机物理地址空间,其指令所使用地地址最终将转化成一个客户机物理地址。在有虚拟化地情况下,这样地客户机物理地址不能被直接发送到系统总线上去,需要由VMM将它转换成一个实际地物理地址后再交由物理处理器来执行。(2)内存虚拟化4.1.1服务器虚拟化技术03OPTION服务器虚拟化核心技术设备与I/O虚拟化技术把物理机地真实设备统一进行管理,包装成多个虚拟设备给若干个虚拟机使用,响应每个虚拟机地设备访问请求与I/O请求。目前,主流地设备与I/O虚拟化都通过软件地方式实现。虚拟化平台作为在享硬件与虚拟机之间地平台,为设备与I/O地管理提供了便利,也为虚拟机提供了丰富地虚拟设备功能。以VMware地虚拟化平台为例,VMware平台将物理机地设备虚拟化,把这些设备标准化为一系列虚拟设备,为虚拟机提供一个可以使用地虚拟设备集合。(3)设备与I/O虚拟化4.1.2网络虚拟化技术01OPTION网络功能虚拟化网络功能虚拟化通过在工业界标准高性能服务器,交换机与存储设备上发展标准虚拟化技术来构建与部署网络功能。它旨在用软件实现可在行业标准服务器上运行地网络功能,并可根据需求动态部署在网络不同地位置,而无须重新安装新地专用硬件设备。网络功能虚拟化作为一种虚拟化技术,通过将软件网络功能部署在稳定地商用计算资源平台上,避免了在传统地异构硬件网络功能部署过程所遇到地复杂连接配置工作,再结合灵活地负载均衡等管理机制,有效解决了传统网络功能硬件设备存在地设备价格高,管理困难及由连接配置不当与网络流量过载等引起地失效率高等问题。4.1.2网络虚拟化技术01OPTION网络功能虚拟化(1)网络功能虚拟化基础设施硬件基础资源硬件基础资源通过虚拟化层向网络功能虚拟化提供计算资源,存储资源与网络资源等。虚拟化资源虚拟化资源包括虚拟计算资源,存储资源与网络资源。虚拟化层虚拟化层负责硬件资源地抽象,同时也起到了对虚拟化网络功能与底层硬件资源地解耦功能。通过抽象虚拟化层与分配物理资源,虚拟化网络功能地部署不需要考虑物理设备,只关心逻辑分配地虚拟化资源。1324.1.2网络虚拟化技术01OPTION网络功能虚拟化(2)虚拟化网络功能虚拟化网络功能运行在网络功能虚拟化基础设施之上,它旨在将基于硬件地网络功能通过软件来实现,并部署于虚拟化资源(如虚拟机)。一个虚拟化网络功能可能包含多个功能组件,每个功能组件部署于单独地虚拟机,因而一个虚拟化网络功能可能部署于多个虚拟机。多个虚拟化网络功能构成一个服务链以实现服务功能。常见地网络功能有用于提升网络安全地网络功能(如防火墙,入侵检测系统,入侵防护系统等)与提升网络性能地网络功能(如代理,负载均衡器等)。4.1.2网络虚拟化技术01OPTION网络功能虚拟化(3)网络功能虚拟化管理与编排网络功能虚拟化管理与编排负责对整个网络功能虚拟化基础设施资源地管理与编排,以及业务网络与网络功能虚拟化基础设施资源地映射与关联。主要包含:虚拟化设施管理器虚拟化设施管理器地功能是进行资源管理与虚拟设施监控。1虚拟化网络功能管理器虚拟化网络功能管理器地功能是进行虚拟化网络功能生命周期地管理。2虚拟化网络功能调度器虚拟化网络功能调度器主要协调虚拟化网络功能管理器与虚拟化设施管理器来实现网络功能服务链在虚拟化设施上地部署与管理。34.1.2网络虚拟化技术02OPTION软件定义网络(1)软件定义网络地基本概念软件定义网络是一种通过分离与抽象网络元素来建立计算网络地方法。与现有网络设备对流量与转发都要进行控制不同,软件定义网络地核心是从路由器与交换机地控制平面分离出数据平面网络,网络设备采用通用地硬件平台,只负责单纯地数据转发;原来负责网络逻辑控制地功能被迁徙及提炼出一个独立地,相对集地控制器,衍生出特有地网络操作系统,具有整个网络地全局视野,相当于网络地指挥机构。其优势如下:网络传输设备硬件呈现出简单化,归一化网络自身具备了智能化网络面向上层地服务呈现虚拟标准化4.1.2网络虚拟化技术02OPTION软件定义网络(2)将软件定义网络应用到边缘计算地好处细粒度地有效控制01首先是细粒度地有效控制,因为基于跨层地实时优化可以通过集访问实时获取信息统计与程序访问。以服务为心02其次是以服务为心,最终用户能够通过识别是"什么"而不是指定"在哪里"来请求服务,这将是一个巨大地优势。但是,受到以主机为心地传统网络设计地约束,需要额外地努力才能在边缘设备与服务器上实现这一目地。其它优点03此外,优点还包括高适应性,互操作,低成本,满足多样性需求,灵活性好与创新地低障碍。4.1.2网络虚拟化技术03OPTION软件定义网络与网络功能虚拟化1.软件定义网络是控制转发分离,网络控制集化,流量灵活调度2.网络功能虚拟化是软件,硬件分离,网络功能虚拟化,业务按需部署3.网络功能虚拟化不希望使用软件定义网络地机制,而是使用数据心现有地技术来实现,但是在实现过程会使用软件定义网络。4.软件定义网络提出地控制平面与数据平面分离能够提高性能,简化并兼容现有部署设备。5.软件定义网络与网络功能虚拟化互不依赖,自成体系,但又相互补充,相互融合。4.2.1LXC是什么LXC(LinuxContainers)是Linux内核容器功能地一个用户空间接口。LXC示意图如图所示。LXC利用了Linux内核控制组(Cgroups)与命名空间(NameSpace)功能,为应用软件提供一个独立地操作系统环境。LXC不需要Hypervisor这个软件层,软件容器本身极为轻量化,从而提升了创建虚拟机地速度。LXC是一种操作系统层虚拟化(OperatingSystem-LevelVirtualization)技术。操作系统层虚拟化之后,可以实现软件地即时迁移(LiveMigration),使一个软件容器地物件即时移动到另一个操作系统下,再重新执行起来。4.2.2LXC组件目前地LXC使用下列内核功能来控制进程。AppArmor与SELinux配置。内核命名空间(进程间通信,uts,mount,pid,work与user)。Secp策略。chroot(使用pivot_root)。KernelCapibilities。控制组(Cgroups)。在资源管理方面,LXC依赖于Linux内核地Cgroups子系统。Cgroups子系统是Linux内核提供地一个基于进程组地资源管理地框架,可以为特定地进程组限定可以使用地资源。在隔离控制方面,LXC依赖于Linux内核地NameSpace特性。4.2.3虚拟化01OPTION基于容器地虚拟化(LXC)从概念上讲,LXC可以被视为现有"chroot"技术地进一步发展,增加了额外地尺寸。chroot仅在文件系统级别提供隔离,LXC提供从容器到主机与所有其它容器地完全逻辑隔离。实际上,安装新地Gentoo容器与安装普通地Gentoo几乎相同,最显著地差异包括以下几点。每个容器将与主机(与其它容器)享内核,不需要在容器/引导目录设置与/或安装内核。1设备与文件系统将(或多或少)从主机"继承",并且不需要配置为适用于正常安装。2如果主机使用OpenRC系统进行自举,则将"自动"省略此类配置项(即文件系统从fstab安装)。34.2.3虚拟化02OPTION完全虚拟化(非LXC)完全虚拟化与半虚拟化解决方案旨在模拟底层硬件。与LXC与其它基于容器地解决方案不同,此类解决方案通常允许运行任何操作系统。虽然这对于安全性与服务器整合来说可能是有用地,但与基于容器地解决方案相比,它是非常低效地。目前该领域比较受欢迎地解决方案是VMware,KVM,Xen与VirtualBox。4.2.3虚拟化03OPTIONLXC地安装Ubuntu是为数不多地Linux发行版之一,它默认提供安全,无特权地LXC容器所需地所有。所以这里我们在Ubuntu上安装LXC。使用如下命令进行安装:$sudoapt-getinstalllxc安装完成后,运行lxc-checkconifg工具,检查当前Linux内核支持LXC地情况。查看内核对LXC地支持是否准备就绪,命令为:$lxc-checkconfig安装LXC工具后,会发现LXC地默认网桥接口(lxcbr0)已自动创建(已在/etc/lxc/default.conf加以配置)。创建LXC容器后,窗口地接口就会自动连接到该网桥,那样容器就能与外界产生联系了。4.2.4LXC地使用01OPTION创建LXC下面以创建一个名为precise地Ubuntu14容器为例进行介绍。首先需要创建一个基础地配置文件。由于创建LXC完成后,不再需要该配置文件(可以删除),故该文件地名字与路径没有特殊要求。这里命名为precise.conf,放在当前路径下,命令为:lxc.work.type=vethlxc.work.flags==eth0lxc.work.link=lxcbr0lxcbr0为由LXC包创建地虚拟网桥,通过ifconfig可以知道其IP地址为1,网段为1/24,容器将通过lxcbr0与外界通信。如此,可以开始创建容器了,命令为:$sudolxc-create-nprecise-fprecise.conf-tubuntu---rprecise4.2.4LXC地使用02OPTION启动LXC若需立即启动LXC,则运行如下命令:$sudolxc-start-nprecise[mand]若需以daemon方式运行,则运行如下命令:$sudolxc-start-nprecise–d[mand]若需随hostOS启动而自动启动,则运行如下命令:$sudoln-s/var/lib/lxc/precise/config/etc/lxc/auto/precise.conf4.2.4LXC地使用03OPTION打开LXC控制台在没有给容器设置IP时,使用如下命令打开其控制台:$sudolxc-console-nprecise命令执行后将会看到文本登录界面。通过按Ctrl+A+Q组合键,可以退出容器控制台。更多地时候,通过SSH登录将更方便,特别是可通过key认证方式登录。4.2.4LXC地使用04OPTION停止LXC多数情况下,可以通过在guestOS(容器)内执行poweroff或shutdown-hnow来关闭容器。但有些时候却需要在hostOS上强行关闭容器。如使用如下命令:$sudolxc-stop-nprecise容器创建后,配置与数据存放在/var/lib/lxc/precise目录。要删除LXC,可执行如下命令:$sudolxc-destroy-nprecise05OPTION删除LXC4.3.1容器简介传统开发部署流程4.3.1容器简介系统虚拟化技术结构图容器虚拟化技术结构图4.3.2Docker简介Docker最初是在Ubuntu14上开发实现地。Docker使用Google公司推出地Go语言进行开发实现,基于Linux内核地Cgroup,NameSpace,以及AUFS类地UnionFS等技术,对进程进行封装隔离,属于操作系统层面地虚拟化技术。对于Docker,当前定义是一个开源容器引擎,可以轻松管理容器。Docker在虚拟化地容器执行环境增加了一个应用程序部署引擎。01OPTION02OPTION03OPTION04OPTION基于Docker容器技术地开发部署流程图4.3.3Docker地主要特点配置快速简单兼容性与可维护性好持续集成效率高标准化与高生产率高投资回报率与低成本安全性好隔离性强可移植性好持续部署与测试快速部署4.3.4Docker地主要组件01OPTIONDocker客户端与服务器Docker是一个客户端/服务器(C/S)架构地程序。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker地架构如图所示。4.3.4Docker地主要组件02OPTIONDocker镜像镜像是构成Docker地基础。用户基于镜像来运行自己地容器。镜像也是Docker生命周期地"构建"部分。镜像是基于联合文件系统地一种层式地结构,由一系列指令一步一步构建出来。其示意图如图所示。4.3.4Docker地主要组件03OPTIONDockerRegistryDocker用Registry(注册表)来保存用户构建地镜像。Registry分为公有与私有两种。Docker公司运营地公Registry叫作DockerHub。用户可以在DockerHub注册账号,分享并保存自己地镜像。根据最新统计,DockerHub上有超过10000个注册用户构建与分享地镜像。如NginxWeb服务器地Docker镜像,或者Asterix开源PABX系统地镜像,或是MySQL数据库地镜像,这些镜像在DockerHub上都有,并且具有多种版本。用户也可以在DockerHub上保存自己地私有镜像。例如包含源代码或专利信息等需要保密地镜像,或者只在团队或组织内部可见地镜像。4.3.4Docker地主要组件04OPTIONDocker容器Docker可以帮用户构建与部署容器,用户只需要把自己地应用程序或服务打包放进容器即可。Docker借鉴了标准集装箱地概念——标准集装箱将货物运往世界各地。Docker将这个模型运用到自己地设计理念。唯一不同地是集装箱运输货物,而Docker运输软件。所有容器都按照相同地方式将内容"装载"进去。Docker也不关心用户要把容器运到何方。用户可以在自己地笔记本电脑构建容器,上传到Registry,然后下载到一个物理地或者虚拟地服务器进行测试,再把容器部署到主机地集群去。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且较为通用。ABC4.3.5Docker地应用场景01OPTION作为云主机使用Docker容器地出现让每个仅仅通过一个几KB地Dockerfile文件就能构建一个自定义地系统镜像,进而启动一个完整系统容器,让都能成为DevOps专业员。容器云主机可以启动,稳定运行,关闭,并可设置在同一时间启动。除了常用地托管服务业务,用户完全可以自定义任何用法,包括所有云服务提供商地云硬盘,云数据库,并部署用户需要地所有服务。在Windows下,可以借助Toolbox工具运行Docker容器管理服务器。微软公司发布地WindowsServer最新版本WindowsServer2019,也可以作为容器镜像。5G4.3.5Docker地应用场景02OPTION作为服务使用Web应用服务Web应用服务是Docker使用最广泛地一类服务,典型地架构是前端使用Tomcat+Java服务,后端使用MySQL数据库。微服务架构使用微服务架构继续分解与分离传统地分布式服务,形成更小地服务模块。服务模块独立部署与升级。这些功能与轻量级与高效地容器部署相吻合。每个容器里可以使用完全不同环境地镜像服务。持续集成与持续部署通过Docker容器云平台,使用者可以在将代码推送到Git/SVN,完成后自动触发后端CaaS(通信即服务)平台下载,编译与构建测试Docker镜像,然后在Jenkins或Hudson自动替换测试环境容器服务并运行单元/集成测试。1324.4.1软件接口01OPTIONMQTT协议简介在MQTT通信过程,存在3种身份:AB发布者C消息代理订阅者客户端服务器MQTT客户端可以发布消息供其它客户端订阅,可以订阅其它客户端发布地消息,可以退订或者删除消息,断开与服务器地连接。MQTT服务器作为消息代理,位于消息发布者与订阅者之间。它接收来自客服端地连接请求,接收客户端发布地消息,处理客户端地订阅与退订请求,向订阅客户端转发订阅地消息。4.4.1软件接口01OPTIONMQTT协议简介MQTT协议传输地消息主要分为主题(Topic)与负载(Payload)。主题通过主题名这种标签来标识订阅地消息类型,而负载就是订阅者订阅消息地具体内容。MQTT进行通信地过程如图所示。4.4.1软件接口02OPTIONMQTT主题在MQTT使用主题名来标识一个主题。一个主题名地格式可以是"{app}/{operator}/{infoType}/{infoTarget}/{infoPath}"。{app}表示发布本消息地应用程序。比如消息是由为eSDK发布,则对应地{app}值为esdk;如果是由为eSDK之外地App发布地,则{app}为该应用程序地关键字名称。{operator}是一个动作,表示操作类型,目前支持以下几种操作类型。getsetactionnotify4.4.1软件接口02OPTIONMQTT主题{infoType}表示消息类型,它根据操作类型{operator}而定,如表所示。操作类型operator消息类型infoType说明getsetactionrequest请求消息response响应消息notifyevent……事件通知消息,后续扩展地或者其它自定义通知类型,例如电力行业地实时数据上报,历史数据上报等4.4.1软件接口02OPTIONMQTT主题{infoTarget}表示消息目地,其意义与{infoType}有关,如表所示。操作类型operator消息类型infoType消息目地infoTargetgetsetactionrequest接收该请求消息地目地应用程序,如目地是为eSDK,则为eSDK;如目地是其它应用,则为该应用地关键字名称;如果为广播请求,则为*
response接收该响应消息地目地应用程序,对应于{app},不能为*notifyevent……接收该通知地目地应用。一般为广播通知,所以是*;其它情况下,可以指定为某个应用地关键字名称进行定向通知4.4.1软件接口02OPTIONMQTT主题{infoTarget}表示消息目地,其意义与{infoType}有关,如表所示。{infoPath}表示信息对象。例如,可用clock表示终端时间,用temperature表示温度。操作类型operator消息类型infoType消息目地infoTargetgetsetactionrequest接收该请求消息地目地应用程序,如目地是为eSDK,则为eSDK;如目地是其它应用,则为该应用地关键字名称;如果为广播请求,则为*
response接收该响应消息地目地应用程序,对应于{app},不能为*notifyevent……接收该通知地目地应用。一般为广播通知,所以是*;其它情况下,可以指定为某个应用地关键字名称进行定向通知4.4.1软件接口03OPTION主题通配符当订阅者订阅主题时,可以使用通配符来订阅多个主题。MQTT支持3种通配符来对主题进行过滤。层级分隔符"/"层级分隔符"/"将主题分为了多个层级,使得主题层次分明。如主题"eSDK/notify/event/sss/clock"。单层通配符"+"单层通配符"+"只能匹配"+"所在地一层地主题。比如订阅主题为"eSDK/notify/event/sss/+",可以接收"eSDK/notify/event/sss/clock""eSDK/notify/event/sss/temperature"等主题地消息。多层通配符"#"多层通配符"#"能够匹配当前主题层级下地所有子层级地子主题。比如订阅主题为:"eSDK/notify/#",就可以接收"eSDK/notify/event/*/clock""eSDK/notify/event/sss/clock"等主题地消息。1324.4.1软件接口04OPTIONMQTT协议数据报MQTT协议数据报主要由3部分组成:固定头,可变头与有效载荷。其固定头格式如表所示。它是所有数据报都需要包含地部分。Bit76543210Byte1MessageTypeDUPflagQoSlevelRETAINByte2RemainingLength可变头地内容因数据报类型不同而不同,有效载荷表示消息地具体内容。4.4.1软件接口04OPTIONMQTT协议数据报MQTT有如表所示地报文类型。类型名称类型值报文说明CONNECT1发起连接CONNACK2连接回执PUBLISH3发布消息PUBACK4发布回执PUBREC5QoS2消息回执PUBREL6QoS2消息释放PUBP7QoS2消息完成SUBSCRIBE8订阅主题SUBACK9订阅回执UNSUBSCRIBE10取消订阅UNSUBACK11取消订阅回执PINGREQ12PING(连接保活)请求PINGRESP13PING回复DISCONNECT14断开连接4.4.1软件接口05OPTIONJSONoverMQTTJSONoverMQTT是通过MQTT协议发送JSON(JavaScriptObjectNotation)格式地消息地一种方式。JSON是一种存储与交换文本信息地语法,它采用了键值对(Key/Value)地方式,比XML更小,更快,更易解析。所以在MQTT消息传输使用JSON表示消息有效载荷更加简洁,直观,易懂。4.4.1软件接口06OPTIONMQTT消息格式MQTT消息地JSON格式如下:{"token":"12345","timestamp":"2014-05-03T17:30:08Z",……"body":消息体}具体字段如表所示。字段类型说明tokenstring消息标识,相同源发出地相同类型消息地token应该各不同,可以用自增数,随机数表示timestampstring消息产生地时间戳…………其它地自定义拓展字段bodyJSON消息体,以JSON格式表示4.4.1软件接口07OPTIONMQTT数据访问操作类型为get,set与action地主题,称为"数据访问"。一般是通信双方分别订阅请求主题与响应主题,请求方发布请求,经过MQTTBroker转发后,提供方发布响应,请求方最后接收到响应,如图所示。4.4.1软件接口07OPTIONMQTT数据访问它们地请求主题可以是"req/get/request/res/#",响应主题可以是"res/get/response/req/#"。所以它们地请求与响应地消息格式如表所示。访问消息格式请求{"token":"12345","timestamp":"2004-05-03T17:30:08Z","body":请求消息体}正常响应{"token":"12345","timestamp":"2004-05-03T17:30:08Z","statusCode":200,"statusDesc":"OK","body":正常响应消息体}异常响应{"token":"12345","timestamp":"2004-05-03T17:30:08Z","statusCode":403,"statusDesc":"Forbidden","body":{"errorDesc":"errordetaidescription","errorTag":错误附加信息}}4.4.1软件接口08OPTIONMQTT事件通知对于事件通知类型地消息,事件通知方是主动发布消息,代理服务器将消息转发给订阅了该通知地订阅方,如图所示。4.4.1软件接口08OPTIONMQTT事件通知事件通知类地主题一般建议为"+/notify/event/*/#",它表示订阅地是任意地应用发布地各种事件通知。消息格式如表所示。类型格式通知{"token":"12345","timestamp":"2004-05-03T17:30:08Z","body":通知消息体}4.4.1软件接口09OPTIONMQTT特点总结MQTT地通信开销小,固定头部只有2个字节,需要带宽小,能够最小化协议本身地消息传输代价以降低网络负载。MQTT采用TCP/IP连接,提供了可靠地通信链路。协议本身简单,开放,易于实现。采用发布/订阅模式,提供了一对多地通信方式。MQTT采用了可选地服务质量。根据不同地网络状态与服务要求提供以下3种质量等级。至多发送一次,不确认消息能够送达,取决于下层协议地服务质量。至少发送一次,确保消息能够送达,可能会有重复消息。刚好发送一次,确保通信对方只收到一次正确消息。具有遗嘱机制。在客户端连接因为网络状态等非正常原因断开后,根据用户设置地遗嘱机制,以发布话题地形式通知可能对该用户状态感兴趣地其它客户端用户。4.4.1软件接口10OPTIONMQTT工具目前常见地实现了MQTT协议地工具有很多。这里介绍Mosquitto开源工具。它实现了MQTT5.0,3.1.1与3.1版本协议,可以在Docker容器安装使用。可以使用mosquitto_pub发布消息,使用mosquitto_sub订阅消息。在SSH登录窗口,可以使用以下方式订阅所有主题地消息:mosquitto_sub-t"#"–d在一个新地SSH登录窗口,可以使用以下方式发布消息请求获取设备信息:mosquitto_pub-l-t"app1/get/request/esdk/deviceInfo"例如:{"token":"12345","timestamp":"2004-05-03T17:30:08Z"}那么可以在订阅消息地窗口看到响应消息。4.4.2硬件接口01OPTION常见硬件接口类型(1)RS232RS232是一种最常见地串行通信协议。两台设备可以用RS232标准地串口线连接起来,进行全双工地通信。针脚说明连接器针脚说明1DCD数据载波检测6DSR数据发送就绪2RxD串口数据输入7RTS发送数据请求3TxD串口数据输出8CTS清除发送4DTR数据终端就绪9RI振铃指示5GND逻辑地
RS232连接器RS232连接器引脚定义4.4.2硬件接口01OPTION常见硬件接口类型(2)RS485RS485与RS232相似,也是一种常见地串行通信协议,与RS232协议仅在物理层上有所区别。RS485最远地设备(控制器)到计算机地连线理论有效距离是1200米,建议控制在800米以内。如果距离超长,可以选购485继器。添加继器后,理论上可以延长到3000米。RS485可以连接多个负载,一般有32台,64台,128台,256台几种选择,这也是理论可连接负载数量,实际应用时,应根据现场环境,通信距离等因素调整负载数量。一般负载数量都不设置到指标数上限。RS485通信总线需要用双绞线;控制器设备间需要串联;不可以有星型连接或者分叉,否则干扰将非常大,会造成通信不畅,甚至不能通信。RS485没有标准地插头,其接线标示一般为485+与485−,分别对应链接设备(控制器)地485+与485−。4.4.2硬件接口01OPTION常见硬件接口类型(3)IO接口IO接口是边缘网关上常见地一种硬件接口,分为两种类型。模拟IO接口模拟IO接口一般仅使用模拟输入(AnalogInput,AI)功能,用以接收以电压值作为输出地传感器地数据。边缘网关首先测量AI接口电压值,之后将其转化为二进制值供程序调用。数字IO接口数字IO接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第4课 希腊城邦和亚历山大帝国
- 合肥本地高校大学生对微博谣言的认知与行为:现状、影响及提升策略探究
- 合肥市专利活动剖析与提升策略研究:创新驱动发展视角
- 节电防震知识培训简报课件
- 合作建房运作模式的深度探索与创新实践
- 教师招聘之《小学教师招聘》试题(得分题)【基础题】附答案详解
- 教师招聘之《小学教师招聘》通关考试题库及答案详解【有一套】
- 2025年教师招聘之《幼儿教师招聘》题库高频难、易错点100题模拟试题附参考答案详解【完整版】
- 2025年教师招聘之《幼儿教师招聘》题库必背100题含答案详解【a卷】
- 2025年教师招聘之《小学教师招聘》预测试题及答案详解(真题汇编)
- 医院普通外科病史采集、查体及病历书写要点精讲课件
- 2020年工程监理企业发展策略及经营计划
- 陕西水资源论证报告表
- 大学生暑期社会实践登记表
- 单选题51-100试题含答案
- 最新苏教牛津译林版英语五年级上册Unit 4《Hobbies》Grammar time 公开课课件
- 危险品管理台帐
- 现场技术服务报告模版
- 一年级上《人与自然》
- 高等有机化学PPT精品课程课件全册课件汇总
- 教学课件·固体物理基础(第2版)
评论
0/150
提交评论