linux平台 LED情报板网关项目总结

LED情报板目前已经基本稳定

主要存在两个版本LED1.5 和LED2

两个版本的主要差别是 :

1.1.5的配置文件存在本地 2.0的存在平台 需要通过接口从平台获取

2.1.5的下发消息的时候需要同步返回 2.0的是异步返回,所以1.5的要尽可能完成 不然会导致发 布平台卡在那里

3.1.5上报状态是一个一个上报的,2.0上报是所有板子一起上报

4.1.5有注册接口 注册的时候需要把每个情报板支持的字体大小 上报给平台 2.0都是在平台配置的

5.1.5采用xml数据格式 2.0采用json格式

基于以上的区别 1.5和2.0架构完全不同 2.0是先开发的 1.5 是 后开发的

1.5采用类似nginx的主从进程模式,主进程负责监控子进程 程序初始化工作等等

并发采用协程st-thread进行 子进程启动会开启协程池比如20个协程,用来等待客户端的连接

所有下发都是协程接口进行 这样保证了并发性,同时引入了redis缓存 用于保存每个情报板的发布状态 发布记录等等 每个情报板保存多达500条记录,具体的是在配置文件中配置的 由于redis的数据是保存在内存中 所以 不能设置的太大

2.0查询状态采用EPOLL 发布的话则采取线程池同步io的方式处理

实现GetRunInfo实时查看情报板的状态

提供GetPublisInfo接口用于查看每个情报板的发布记录 如下图

LED2.0支持图片发布 支持加密功能

LED1.5版本部署步骤

主程序led1.5

配置文件config.json

日志配置文件zlog.conf

情报板信息文件ledlist.json

辅助脚本RunCmd.sh killcmd.sh status.sh GetPublish

redis-server redis-cli redis.conf

需要先启动redis ./redis-server redis.conf

config.json文件主要配置如下 包括平台ip端口 redis端口 redis记录大小等等

LED2.0版本需要

主程序led2

主程序配置文件config.json

日志配置文件zlog.conf

如果是ubuntu22.04一下版本还需要新版本的libstdc++.so.6库

如果启用加密还需要store_keys.txt文件

辅助脚本RunCmd.sh killcmd.sh status.sh GetPublish

redis-server redis-cli redis.conf

需要先启动redis ./redis-server redis.conf

config.json文件和1.5版本的差不多

涉及到的技术栈

HTTP 协程 线程池 EPOLL REDIS

日志采用第三方的zlog

HTTP1.5的是自己解析的 2.0采用的cpp-httplib

xml解析tiny2xml json解析jsonxx

协程库采用st-thread

别的好像没啥了

相关推荐
DeeplyMind3 小时前
第12章 Docker存储机制(重要)
运维·docker·容器
鸠摩智首席音效师4 小时前
如何在 Linux 中将文件复制到多个目录 ?
linux·运维·服务器
香蕉你个不拿拿^5 小时前
Linux进程地址空间解析
linux·运维·服务器
云小逸5 小时前
【nmap源码分析】Target 类——目标主机信息管理的核心引擎
服务器·windows·nmap
人间打气筒(Ada)5 小时前
Linux学习~日志文件参考
linux·运维·服务器·学习·日志·log·问题修复
xuhe25 小时前
Claude Code配合Astro + GitHub Pages:为 sharelatex-ce 打造现代化的开源项目宣传页
linux·git·docker·github·浏览器·overleaf
charlie1145141915 小时前
RK3568跑Arch Linux全路程指南(以正点原子的RK3568开发板为例子)
linux·嵌入式·rootfs·教程·环境配置·嵌入式linux·工程实践
OpsEye6 小时前
交换分区优化实战:从监控到调优,让系统告别卡顿
运维·it·监控·告警·swap·监控系统·交换分区
大熊程序猿6 小时前
metabase 报表使用
运维
爆米花byh6 小时前
在RockyLinux9环境的Doris单机版安装
linux·数据库·database