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

本文详细比较了LED情报板的两个版本1.5和2.0在配置、数据格式、并发处理、通信方式等方面的差异,以及它们所采用的技术栈,包括多进程、多线程、协程、EPOLL和Redis缓存等。
摘要由CSDN通过智能技术生成

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

别的好像没啥了

涉及到的技术栈

  1. 多进程编程
  2. 多线程/线程池 (原子变量,互斥锁 条件变量==)
  3. 进程通信(共享内存/信号量)
  4. 协程
  5. EPOLL

#20240205更新内容

LED列表从之前的无序改为有序列表

workers字段设置工作进程的数量1-4个  slave为工作进程 master为主进程

增加共享内存 信号量 保证进程间数据的一致性 

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QMCY_jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值