1. 边缘计算

边缘计算 是针对 云计算 提出的一种概念。

自从2006年,谷歌提出云计算概念以来,IT行业通过把 应用在数据中心集中部署 ,也就是业务和数据放在云端进行集中处理, 形成了一个高度扁平化的互联网,极大的降低互联网的边际成本,互联网得到了高速的发展。

但是,云计算在得到广泛应用之后,通过大量的实践,它因为业务和数据处理,距离现场太远,同样暴露出了非常多的局限性。

在2011年由美国国家科学基金会(NSF)提出边缘计算的概念,其后思科、英特尔、微软等公司对它进行了共同的推广。

边缘计算,就是将部署业务应用的设备/计算机部署在产生数据源的现场,那么在进行业务和数据处理、存储的时候, 尽量靠近数据源头,从而解决云计算因为远离现场的数据源,带来的各种问题。

边缘计算,并不是某个具体的设备、产品、平台,而是一个 应用在现场就近部署 的概念。

边缘计算,就像我们现在的 智能手机应用在终端本地部署 一样,能把各种应用系统部署在现场的通用性硬件平台上,来解决现场的各种各样的业务需求。

2. 系统架构

灵狐并不只是想做一个简单的 物联网网关 ,这类智能网关在市场上已经有大量的物联网厂家开发过众多的同类产品。

如果灵狐只是做一个物联网网关,那么Fox-Edge将毫无生命力,泯然众人。

灵狐想做的是物联网的 边缘计算

边缘计算最大特点,是能够将集成商们的很多云端应用,直接部署到边缘计算的设备平台之上,进而能像智能手机对功能手机的革命一样, 革过去那些功能型的物联网网关的命。

所以,Fox-Edge的整个系统架构必须是 积木式架构 ,只有这样才能安装构成边缘计算的各种服务

3. 应用类型

3.1 用户需求

灵狐前面跟合作伙伴们交流了边缘计算的需求。

灵狐认为:Fox-Edge所在的Linux操作系统平台,本身可以通过SSH终端远程安装用户自己的下沉应用服务,然后跟Fox-Edge的各个服务进行互相操作,完成更复杂的业务场景。

合作伙伴认为:通过SSH安装应用是不够的,这些服务应该能够被Fox-Edge的中央仓库和管理服务统一安装和管理。并且,他们会用到Python作为他们自己的应用开发语言。

经过跟合作伙伴的交流,形成了需求的共识:

“Fox-Edge能够将用户开发的Java和Python程序,部署到Fox-Edge的边缘计算之中”

3.2 技术方案

Fox-Edge的服务,让用户能够按一定的规范打成tar包,最后部署到Fox-Edge系统之中。

Fox-Edge支持的开发语言为 JAVAPython ,那么将用户按指定的方式,打成tar包之后,就能够将用户的应用服务纳入Fox-Edge的进程管理之中了。

3.3 打包工具

tar是Windows和Linux都支持的安装包格式,在这两个操作系统之中,都有tar打包命令,对文件目录进行打包。

3.4 包裹结构

tar
├─bin                                           # bin目录:  可执行程序的固定目录
│  └─service                                    # 业务级别: 可以是kernel/system/service三种级别,默认service级别
│      └─python-server-demo                     # 服务名称: 这是用户微服务名,注意保存系统的唯一性
│              mylib.py                         # 文件1:    这是可执行程序,比如它是python的一个用户自定义库,可被主程序py文件应用
│              python-server-demo-20240312.py   # 文件2:    这是可执行程序,比如它是python的主程序文件,conf配置中会需要指明它的文件名
│
├─conf                                          # 配置文件: 这是服务可能会用到的自定义配置文件,比如一些字典信息
│     python-server-demo.conf                   # 配置文件: 可以空文件夹
└─shell
  └─service                                   # shell目录:这是shell启动需要的信息
      └─python-server-demo                    # 服务名称: 这是用户微服务名,注意保存系统的唯一性
              service.conf                    # 描述文件: 这是用户服务启动所需要的必要信息

一个完整的tar包,内部的文件目录结构,应该是如上面的范例,那么Fox-Edge的管理程序,将会安装上面的目录规范,进行应用的安装、升级和卸载。

3.5 service.conf格式

tar包中的service.conf,包括重要的关键描述信息。通过这些关键信息,Fox-Edge知道该如何安装、升级和卸载这个应用。

Fox-Edge支持的开发语言为 JAVAPython 。而一个JAVA程序和一个Python程序,它们启动命令和参数格式,是不同的。

所以,service.conf的配置,跟着有JAVA和Python两种格式

3.5.1 JAVA格式


appEngine=java                                           # 程序类型:  指明这是一个java程序,需要用java命令来启动
appType=service                                          # 业务级别:  可以是kernel/system/service三种级别,默认service级别
appName=channel-simulator-service                        # 服务名称:  这是用户微服务名,注意保存系统的唯一性,它要跟tar中服务名称目录保持一致
jarName=fox-edge-server-channel-simulator-service.jar    # JAVA程序:  JAVA程序的JAR包
springParam=" --spring.channel.init-mode=redis "         # JAVA参数:  JAVA程序需要的一些参数,这是可选项目,注意使用要双引号,否则拼接shell会失败

其中,appEngine、appType、appName、jarName 是必填项目,springParam是选填项目。

Fox-Edge启动程序的时候,会根据这个文件信息,进行JAVA启动命令的构造。

注意:python的appEngine参数为 java ,并且相关的配置为 jarNamespringParam

3.5.2 Python格式


appEngine=python3                                        # 程序类型:  指明这是一个python3程序,需要用python3命令来启动
appType=service                                          # 业务级别:  可以是kernel/system/service三种级别,默认service级别
appName=python-server-demo                               # 服务名称:  这是用户微服务名,注意保存系统的唯一性,它要跟tar中服务名称目录保持一致
pyName=python-server-demo-20240312.py                    # Python程序:Python程序的入口py文件
pythonParam=" param1=1234 param2=5678 "                   # Python参数:Python程序需要的一些参数,这是可选项目,注意使用要双引号,否则拼接shell会失败

其中,appEngine、appType、appName、pyName是必填项目,pythonParam是选填项目。

Fox-Edge启动程序的时候,会根据这个文件信息,进行Python启动命令的构造。

注意:python的appEngine参数为 python3 ,并且相关的配置为 pyNamepythonParam

4. 范例

4.1 云端发布

登录Fox-Cloud云端仓库 ,进行tar安装包的发布

4.2 本地安装

在Fox-Edge上,可以看到刚才上传的两个tar安装包。那么就可以对这两个JAVA服务和Python服务进行安装和管理了。