当前位置: 首页 > news >正文

开源 Linux 服务器与中间件(二)嵌入式Linux服务器和中间件

     文章的目的记录所使用的的Linux服务器和中间件的配置和使用,防止时间太长忘记,进行重复工作。

推荐链接:

linux C 语言开发 (一) Window下用gcc编译和gdb调试

linux C 语言开发 (二) VsCode远程开发 linux

linux C 语言开发 (三) 建立云服务器

linux C 语言开发 (四) linux系统常用命令

linux C 语言开发 (五) linux系统目录结构

linux C 语言开发 (六) 程序的编辑和编译(vim、gcc)

linux C 语言开发 (七) 文件 IO 和标准 IO

linux C 语言开发 (八) 进程基础

linux C 语言开发 (九) 进程间通讯--管道

linux C 语言开发 (十) 进程间通讯--信号

linux C 语言开发 (十一) 进程间通讯--共享内存

linux C 语言开发 (十二) 进程间通讯--消息队列

Linux C到Android App开发推荐链接(入门十二章):

开源 java android app 开发(一)开发环境的搭建_csdn 开源 java android app-CSDN博客

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

linux C到.net mvc开发推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客、

内容:嵌入式linux中常用的服务器和中间件的介绍,技术架构组合,以及优缺点。

嵌入式Linux会极度追求精简、低功耗、实时性和稳定性


核心区别:从“通用”到“专用”

在服务器领域,我们讨论的是支持海量并发、处理复杂业务的通用软件。而在嵌入式领域,这些软件大多被“瘦身”或重写,甚至其角色被直接整合到应用程序中。

  • Web服务器:目的不是为了服务公众,而是为了设备管理。通过一个简单的网页来配置设备参数、查看状态。

  • 中间件:不是为了解耦复杂应用,而是为了提供关键的服务能力,如网络连接、数据传输、远程调用等。

  • 数据库:很少使用MySQL等大型数据库,而是使用轻量级的键值存储或文件系统。


一、轻量级 Web 服务器

用于提供设备的管理界面(Web UI)。

1. Boa
  • 特点:非常古老但极其小巧的单任务HTTP服务器。在一个时间点只能处理一个请求,但代码量极小。

  • 应用场景:对资源极度敏感,且管理页面访问频率极低的设备(如网络交换机、简单传感器网关)。

2. Lighttpd
  • 特点:相比Boa更强大,采用事件驱动模型,支持FastCGI,性能较好,同时内存占用仍远低于Nginx/Apache。

  • 应用场景:需要较好性能和管理功能的嵌入式设备,如路由器、网络摄像头、智能家居中枢。

3. GoAhead
  • 特点:专为嵌入式设备设计的Web服务器。非常轻量,安全性高,并内置了嵌入式JavaScript和表单处理等功能。

  • 应用场景:在工业控制、网络设备中非常流行。

4. uhttpd
  • 特点:OpenWrt项目默认使用的微型Web服务器,与LuCI(OpenWrt的Web配置界面)紧密集成。

  • 应用场景:几乎所有基于OpenWrt的路由器和其他网络设备。

小结:在嵌入式领域,Nginx和Apache由于资源消耗过大,很少见。


二、网络通信与中间件

这是嵌入式Linux的核心,负责设备与外界(云、手机、其他设备)的通信。

1. MQTT
  • 功能类型:轻量级的发布/订阅消息传输协议。专为受限环境和不稳定网络设计。

  • 常用实现

    • Eclipse Mosquitto:一个轻量级的MQTT代理(Broker),也可以嵌入到设备中。

    • Paho MQTT:提供了多种语言的客户端库,嵌入式C/C++版本非常常用。

  • 应用场景

    • 物联网设备的标配。设备作为客户端,将数据(如温度、状态)发布到Broker,或从Broker订阅指令。

    • 智能家居、工业物联网、车联网。

2. CoAP
  • 功能类型:受限应用协议,可以理解为“物联网世界的HTTP”。基于UDP,非常省电和带宽。

  • 应用场景:在计算能力极低的传感器节点间通信,特别是在电池供电的场景下。

3. D-Bus
  • 功能类型:进程间通信总线。允许同一个设备上的不同应用程序相互通信和交换数据。

  • 应用场景

    • 在智能电视、车载信息娱乐系统中,一个应用(如媒体播放器)通过D-Bus通知另一个应用(如系统UI)更新状态。

    • 系统服务与用户应用程序之间的通信。

4. gRPC
  • 功能类型:高性能、跨语言的RPC框架。基于HTTP/2和Protocol Buffers。

  • 应用场景:在性能要求较高、需要强接口定义的复杂嵌入式系统中,如自动驾驶域控制器、高端机器人。

5. Avahi / mDNS
  • 功能类型:零配置网络服务发现。允许设备在没有中央DNS服务器的情况下在本地网络中发现彼此。

  • 应用场景:打印机、智能音箱、HomeKit设备等在局域网内自动被发现和连接。


三、轻量级数据存储

1. SQLite
  • 特点这不是一个服务器,而是一个库。整个数据库就是一个文件,零配置、无服务器、事务完整。它是嵌入式领域事实上的数据库标准。

  • 应用场景

    • 存储设备配置信息、历史运行数据、事件日志。

    • 手机App、浏览器内部都在大量使用SQLite。

2. 键值存储
  • 特点:比SQLite更简单,通常就是一个简单的库,将数据以键值对的形式存储。

  • 常见实现

    • Berkeley DB:一个经典的嵌入式键值数据库。

    • LMDB:极其快速且内存映射的键值存储。

  • 应用场景:缓存、快速配置存取。


四、特殊功能的“中间件”

1. Fluent Bit
  • 功能类型:轻量级的日志处理器和转发器。

  • 应用场景:在嵌入式设备上收集各种日志,然后高效地转发到中央日志系统(如ELK)或云平台。

2. EdgeX Foundry
  • 功能类型:一个开源的、微服务式的边缘计算平台。

  • 应用场景:在工业网关等边缘节点上,负责连接各种不同的物理设备(通过“设备服务”),进行数据标准化、本地处理,再上传到云端。它本身就是由一系列微服务中间件组成的。

典型嵌入式Linux系统架构示例

1. 智能家居网关

  • 硬件:ARM Cortex-A SoC, 128MB RAM

  • 软件栈

    • Web UILighttpd + 一个简单的CGI/后端程序,用于用户配置Wi-Fi、添加设备。

    • 通信Mosquitto MQTT Client 连接家庭内部的Zigbee/Z-Wave设备,并将数据聚合后通过 Paho MQTT 发布到云平台。

    • 数据存储SQLite 存储设备状态和简单的历史记录。

    • 进程通信D-Bus 让Web后端、MQTT客户端、设备驱动管理等服务之间可以互相通知状态变化。

2. 工业控制器

  • 硬件:高性能多核ARM或x86, 带实时补丁的Linux内核

  • 软件栈

    • 通信OPC UA 作为工业标准通信协议,gRPC 用于内部高性能模块间调用。

    • 边缘计算EdgeX Foundry 管理各种工业PLC和传感器。

    • 数据Fluent Bit 将关键指标和日志发送到中央监控系统。

总结

类别服务器/桌面Linux嵌入式Linux核心理念
Web服务器Nginx, ApacheBoa, Lighttpd, GoAhead设备管理,而非公众服务
应用服务器Tomcat, Node.js应用直接编译为二进制,或使用轻量级框架无中间层,直接运行
数据库MySQL, PostgreSQL, RedisSQLite, 键值存储库而非服务,文件存储
消息中间件RabbitMQ, KafkaMQTT, CoAP轻量、低功耗、为IoT而生
服务发现Etcd, ConsulAvahi零配置,局域网内

嵌入式Linux的世界是“小而美”的。选择任何组件的第一原则都是:在满足功能需求的前提下,资源占用最小,稳定性最高

http://www.dtcms.com/a/486366.html

相关文章:

  • 公司建设一个网站有什么好处国外网站建设现状图分析
  • 绿色 网站 源码个人建网站怎么赚钱
  • 定时器的学习(二)
  • SpringBoot模特兼职网站zu3n3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • windows开发中使用flutter开发鸿蒙
  • calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
  • 向RAGFlow中上传文档到对应的知识库
  • 网站后台发邮件建设网站都需要哪些内容
  • 惠州网站建设 英语外贸论坛有哪些?
  • 【学习笔记10】C++模板编程深度学习(下):可变参数模板与完美转发核心技术
  • 华为盘古 Ultra-MoE-718B-V1.1 正式开放下载!
  • 【OpenHarmony】AI引擎模块架构
  • 为什么选php语言做网站江苏网站建设网络推广
  • 数据结构算法学习:LeetCode热题100-链表篇(上)(相交链表、反转链表、回文链表、环形链表、环形链表 II)
  • STC亮相欧洲区块链大会,碳资产RWA全球化战略迈出关键一步
  • 使用Electron创建helloworld程序
  • 建设校园网站国外研究现状2020网络公司排名
  • DataEase v2 连接 MongoDB 数据源操作说明-MongoDB BI Connector用户创建
  • PHP 8.0+ 编译器级优化与语言运行时演进
  • 网站运营培训网站被百度收录吗
  • 升级到webpack5
  • 【MySQL】MySQL `JSON` 数据类型介绍
  • 通过hutool生成xml
  • vue.config.js 文件功能介绍,使用说明,对应完整示例演示
  • 无极分期网站临沂做网络优化的公司
  • Vue3的路由Router【7】
  • DOM 实例
  • 网站安全建设需求分析报告重庆有哪些科技骗子公司
  • Springboot AOP Aspect 拦截中 获取HttpServletResponse response
  • 【深度学习理论基础】什么是蒙特卡洛算法?有什么作用?