部分用户在深入使用Fox-Edge这款产品之后,比较认可Fox-Edge的价值,希望这款产品从 边缘端 部署场景,进一步拓展到他们的 云端 部署场景。
设备的硬件平台专属专用,设备中的软件独占整个设备的资源。这一块的软件架构设计,通常是有状态的。
它通常采用的是 服务化架构 ,里面的每一个服务都是系统中的功能模块,它的一个服务只能部署一个独立的服务进程。
它的管理和扩展,是按一个个的设备盒子进行管理的。每个设备盒子,里面安装了完整的独立软件系统。
服务器的硬件资源庞大,属于公共平台,通常将服务器的按容器化的方式进行管理。这一块的软件架构设备,通常是无状态的。
它通常的是 微服化架构 ,里面的每一个服务也都是系统中的功能模块,但是它的一个服务,可以被部署有很多的独立服务进程。 这些服务进程,往往还运行在不同的服务器之上,只是在不同服务器上的各服务进程之间通过网络构成了集群。
它的管理和扩展,是按一个个容器进行管理的。每个容器通常包含一个服务,大量的容器共同组织成一个完整的软件系统。
通过上面的简单说明,你会发现边缘端和云端的架构、部署、管理,完全是不一样。
但是,灵狐跟这些用户的交流后,认为Fox-Edge同时支持边缘端和云端的部署场景,还是非常有价值的,而且技术要为用户的业务服务, 所以决定让Fox-Edge支持边缘端和云端的双架构。
在这边,暂且将部署在单机设备上的Fox-Edge称为 local版 ,将部署在云端服务上的Fox-Edge称为 nacos版
nacos版主要为那些 想将Fox-Edge作为他们物联网云平台的一个技术底座使用的用户 而开发的。 这边存在的一个假设:这些用户已经比较熟悉Fox-Edge的 local版 ,并有自己的开发和运维人员,深度掌握了Fox-Edge的特性。
架构的调整,不是一蹴而就的故事,而是逐步调整的过程,下面的关键版本特性
1.1.6版:
1.将服务之间的通讯,由订阅/发布模式,调整为生产者/消费者模式
1.1.7版:
1.将服务的结构,调整为local版和nacos版
2.网关的路由,调整为local版自动注册和nacos版的人工注册
JAVA程序给很多用户会有臃肿,内存占用率高的印象,主要是因为很多JAVA开发人员开发的JAR组件,是按服务器内存巨大的环境下开发出来的。 很多服务端JAVA的开发人员对内存的使用,本着可以随意使用心态而开发的,这就导致内存的占用率比较大。
但是,实际上JAVA这种开发语言,一开始就是面向嵌入式设备而设计的。
所以,内存占用率,是JAVA开发人员在开发JAR包的问题。
local版的fox-edge,灵狐主要是为了在4G内存下的小型化设备上运行,除了少数Spring框架,基本上JAR组件都是灵狐开发的。 灵狐在开发的过程中,对内存的使用,都是针对小型设备下的小内存场景下,精打细算开发的,所以内存占用率比传统的JAVA开发人员,都要低非常多。
nacos是阿里巴巴的开发人员,面向云端服务而开发的,阿里巴巴nacos团队开发的nacos组件,具有java服务器程序内存占用率高的通病。
fox-edge的nacos版本程序引入nacos的相关组件后,nacos的这部分组件对内存的需求都增长的比较大,相比local版将近翻了一倍, 所以,你在使用nacos版本的时候,请按服务器的内存规格(至少8G内存)去使用nacos版的fox-edge。
请到灵狐云端的页面下载Fox-Edge最新的初始安装包,默认的账号/密码:Fox-Edge-Public/12345678
Fox-Edge(Nacos版)安装包下载
#切换目录
cd /home
#下载Fox-Edge安装包:最新版本,可到[云端仓库](http://cloud.fox-tech.cn) 查询
wget -c http://repository.fox-tech.cn/system/fox-edge-nacos/v1/1.0.1/fox-edge-nacos-20240723160458.gz
#解压安装包
tar -xzvf fox-edge-nacos-20240723160458.gz
#移动目录
mv fox-edge /opt
导入MySQL脚本
#执行命令
mysql -u root -p12345678;
#在mysql中自行下面脚本
> source /opt/fox-edge/sql/init.sql;
> exit
导入Nginx配置
#复制nginx配置到nginx
#前端页面fox-edge-ui的nginx配置,等reload后,打开http:xxx.xxx.xxx.xxx,即可验证
cp /opt/fox-edge/doc/nginx/conf.d/fox-edge.com.ipadr.conf /etc/nginx/conf.d
#重新加载配置
nginx -s reload
Nacos的安装
请自行参考Nacos官方文档
修改配置文件
说明:配置文件路径 /opt/fox-edge/shell/fox-edge.ini
内容如下:
[environment]
ip=127.0.0.1
type=device
mode=cloud
cpu_id=
[nacos]
discovery_addr=192.168.1.21:8848
config_addr=192.168.1.21:8848
[redis]
host=localhost
port=6379
password=12345678
[mysql]
host=localhost
port=3306
username=fox-edge
password=12345678
注意:
environment.mode必须为cloud,此时它将使用nacos部分的参数,并去nacos配置中心装载redis和mysql的参数,而不再使用fox-edge.ini中的redis和mysql参数
nacos中的参数,指明的是nacos服务器的服务地址
微服务是允许多实例部署的,那么此时的Fox-Edge的序列号(CPU ID)那就不能够从本机去获得了,因为你不知道它会被运行在哪个服务器节点上,所以提供了一个手动配置全局CPU ID的设置
nacos配置中心
nacos版本提供了nacos的配置范例, /opt/fox-edge/nacos/nacos_config_export_xxxxxxxx.zip ,可以在nacos中导入该文件并进行修改。
注意:提前在nacos的管理界面,提前将准备安装的其他Fox-Edge服务部件,将它们的nacos配置好,否则这些服务部件下载安装之后, 会因为在nacos上找不到对应的配置,而启动不起来。
另一种安装方式
除了上面的默认安装方式,灵狐还提供了通过 Git 从 GitEE 仓库进行一键式安装的快捷方式,而且 GitEE 的网速比较快。
下面以通过以Ubuntu 22.0版本作为范例,进行快捷安装。
mv /opt/fox-edge /opt/fox-edge-$(date +%Y%m%d-%H%M%S) 2>/dev/null
git clone https://gitee.com/fierce_wolf/fox-edge-nacos.git /opt/fox-edge && \
chmod +x /opt/fox-edge/shell/*.sh && \
cp /opt/fox-edge/doc/nginx/conf.d/fox-edge.com.ipadr.conf /etc/nginx/conf.d && \
nginx -s reload && \
mysql -u root -p12345678 mysql < /opt/fox-edge/sql/init.sql;
系统启动
#进入目录
cd /opt/fox-edge/shell
#启动Fox-Edge
./startup.sh
#如果准备开机启动,执行该命令
./enable-service.sh
检查是否启动成功
#执行命令
ps -aux|grep fox-edge
#此时将看到下列进程
root@NanoPi-R5C:/opt/fox-edge/shell# ps -aux|grep fox
root 38823 192 2.7 3971932 109316 pts/0 Sl 03:28 0:19 java --add-opens java.base/java.net=ALL-UNNAMED -jar /opt/fox-edge/bin/kernel/gateway-service/fox-edge-server-kernel-gateway.jar --app_type=kernel --app_name=gateway-service --env_type=device --work_mode=cloud --spring.profiles.active=prod --server.port=9000 --spring.cloud.nacos.discovery.server-addr=192.168.1.21:8848 --spring.cloud.nacos.config.server-addr=192.168.1.21:8848 --spring.redis.host=localhost --spring.redis.port=6379 --spring.redis.password=12345678 --spring.datasource.username=fox-edge --spring.datasource.password=12345678 --spring.datasource.url=jdbc:mysql://localhost:3306/fox_edge
root 38865 190 2.6 3836440 104780 pts/0 Sl 03:28 0:19 java --add-opens java.base/java.net=ALL-UNNAMED -jar /opt/fox-edge/bin/kernel/manager-service/fox-edge-server-manager-service.jar --app_type=kernel --app_name=manager-service --env_type=device --work_mode=cloud --spring.profiles.active=prod --server.port=9101 --spring.cloud.nacos.discovery.server-addr=192.168.1.21:8848 --spring.cloud.nacos.config.server-addr=192.168.1.21:8848 --spring.redis.host=localhost --spring.redis.port=6379 --spring.redis.password=12345678 --spring.datasource.username=fox-edge --spring.datasource.password=12345678 --spring.datasource.url=jdbc:mysql://localhost:3306/fox_edge
登录管理界面
#使用ifconfig查看计算机的IP
root@fox-edge-server:/opt/fox-edge/shell# ifconfig
#此时将看到linux下的网卡IP为192.168.3.133
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.3.133 netmask 255.255.255.0 broadcast 192.168.3.255
inet6 fe80::20c:29ff:fe6a:6ef2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6a:6e:f2 txqueuelen 1000 (Ethernet)
RX packets 7216222 bytes 2852722926 (2.8 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10559279 bytes 13621898330 (13.6 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 149369368 bytes 122430812692 (122.4 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 149369368 bytes 122430812692 (122.4 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在浏览器中打开,http://192.168.3.133
此时将出现登录页面,默认的初始账号/密码:admin/12345678

登录成功后进入首页

从 仓库管理>服务模块配置,可以看到,新安装的Fox-Edge只有gateway-service和manager-service两个内核服务

从 仓库管理>服务模块仓库,可以看到在灵狐技术网站的中央仓库提供的服务列表。
#先下载下列服务
1、channel-simulator
这是一个通道服务,在测试环境下,为开发者提供一个模式设备的问答响应能力,方便开发者进行设备报文级别的测试
在此,可以也可以充当设备模拟器的作用
2、device-service
这是设备数据解码的核心服务,它为上层应用提供面向设备的会话操作。它会将面向设备的会话操作,编码成为通信报文
然后发送给下层的通道服务,再由通道服务转发给远端的物理设备。当远端设备通过通道服务返回数据的时候,对报文进
行解码操作,使之成为上层应用可以理解的业务对象。
3、controller-service
这是控制器服务,会根据用户的监控认为编排,周期性的将设备操作任务,发送给device-service服务。当远端的设备响
应后,device-service在完成报文解码后,将设备的业务数据返回给控制器服务。
控制器服务在获得远端设备的业务数据后,会将业务数据发送给persist-service服务,进行持久化保存。
4、persist-service
这是持久化服务,控制器服务从设备收集完成数据之后,会把需要持久化保存的数据,发送给persist-service服务。此时
persist-service会将设备的数据,保存到Redis和MySQL当中,供其他服务消费使用。



从 任务管理>通道操作任务,给模拟设备发送一下测试报文,可以看到模拟设备返回了响应报文,此时说明Fox-Edge跟模拟设备通信上了

从 任务管理>设备操作任务,给模拟设备发送一下操作请求,可以看到模拟设备返回了响应数据,此时说明Fox-Edge跟模拟设备能够正常会话上了

从 任务管理>设备监控任务,给控制器服务添加一个监控任务,让其周期性的去访问远端设备

从 设备管理>设备数值,可以看到添加监控任务后,不断从远端设备获得并持续更新数据,这些设备数据保存在redis和mysql当中

进程管理方案
fox-edge的nacos版本和local版本,是两套不同的启动代码。
各自的启动代码,装载程序启动需要的配置参数,是不一样的。local版是从本地文件的fox-edge.ini获得,nacos版本是从nacos配置中心那边获得
进程管理方案
nacos是一种多服务的注册管理方案,fox-edge也自带了个单机版的管理方案。
实际上,fox-edge的进程管理方案是面向单机环境的,并不太适用于nacos多服务环境下,那种多进程的方式管理。
fox-edge自带的管理界面,此时主要是提供给开发人员在开发阶段时使用,在nacos上生产环境时,把相关从菜单剔除, 否则会跟甲方用户产生不必要的误解。