开源 Linux 服务器与中间件(一)基本介绍

文章的目的为了记录使用C语言进行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服务器和中间件的功能和应用场景介绍。

核心概念区分

  • 服务器 :通常指一个软件程序,运行在操作系统之上,为客户端(如浏览器、App)提供特定的服务。例如,Web服务器提供网页,数据库服务器存储数据。

  • 中间件 :位于操作系统、数据库和应用软件之间的基础软件。它不直接提供最终服务,而是为应用程序提供运行和开发的环境,帮助不同组件之间进行通信、数据交换和集成。可以把它看作应用的"胶水"和"平台"。

一、Web 服务器

主要负责处理HTTP/HTTPS请求,返回静态内容(如HTML、图片、CSS、JS文件),或将动态请求转发给应用服务器。

1. Nginx
  • 功能类型:高性能的HTTP和反向代理服务器,也可作为邮件代理服务器、负载均衡器。

  • 特点

    • 事件驱动、异步非阻塞架构:能够处理海量并发连接,且资源占用极低。

    • 静态内容处理能力强:直接返回静态文件的速度非常快。

    • 强大的反向代理功能:可以作为流量入口,将请求分发到后端的多个应用服务器。

  • 应用场景

    • 作为静态内容服务器。

    • 作为负载均衡器,分发请求到Tomcat、Node.js等后端应用集群。

    • 作为反向代理,实现请求路由、缓存、SSL终结等。

    • 构建高并发网站的首选。

2. Apache HTTP Server
  • 功能类型:老牌、功能全面的Web服务器。

  • 特点

    • 模块化设计 :通过加载不同的模块(如mod_php, mod_ssl)来扩展功能。

    • 多种处理模型:如Prefork(多进程)、Worker(多进程多线程),兼容性和稳定性好。

    • .htaccess 分布式配置:非常灵活,尤其在虚拟主机共享环境中。

  • 应用场景

    • 传统LAMP(Linux + Apache + MySQL + PHP)架构的核心。

    • 需要高度自定义和模块化功能的场景。

    • 共享主机托管服务。

Nginx vs. Apache 简单对比

  • 高并发:Nginx在处理大量静态并发请求时通常性能更好,资源更省。

  • 动态内容 :Apache通过模块(如mod_php)在内部处理动态语言,而Nginx通常需要转发给后端处理器。

  • 配置 :Apache的.htaccess更灵活,Nginx的配置更集中、语法更简洁。


二、应用服务器 / 运行时环境

负责执行应用程序的业务逻辑,处理动态内容。

1. Tomcat
  • 功能类型:轻量级的Java Servlet容器和JSP服务器。

  • 特点:开源、免费,是Java EE(现Jakarta EE)规范的经典实现。

  • 应用场景

    • 运行基于Servlet、JSP的Java Web应用程序。

    • 中小型Java项目的首选应用服务器。

2. Spring Boot (内嵌Tomcat/Netty)
  • 功能类型:Java应用框架,但内置了Web服务器。

  • 特点:开箱即用,简化了基于Spring的应用程序的开发和部署。

  • 应用场景

    • 现代微服务架构中的Java服务。

    • 快速开发RESTful API。

3. Node.js
  • 功能类型:JavaScript运行时环境,基于Chrome V8引擎。

  • 特点:事件驱动、非阻塞I/O模型,适合I/O密集型应用。

  • 应用场景

    • 实时应用(如聊天室、在线游戏)。

    • I/O密集型的前后端分离架构(BFF - Backend for Frontend)。

    • 全栈JavaScript开发。

4. uWSGI / Gunicorn
  • 功能类型:WSGI(Web Server Gateway Interface)服务器,用于运行Python Web应用。

  • 特点:作为应用服务器,桥接Nginx/Apache和Python框架(如Django, Flask)。

  • 应用场景

    • 在Nginx后运行Django或Flask应用。

    • 典型的部署栈:Nginx + uWSGI/Gunicorn + Django


三、数据库服务器

负责数据的存储、管理和查询。

1. MySQL / MariaDB
  • 功能类型:关系型数据库。

  • 特点:开源、流行、社区活跃、性能稳定。MariaDB是MySQL的一个分支,完全兼容并增加了新特性。

  • 应用场景

    • 绝大多数Web应用的数据存储,是LAMP/LEMP栈的核心。

    • 需要事务支持、结构化数据的场景。

2. PostgreSQL
  • 功能类型:功能强大的开源关系型数据库。

  • 特点:支持更复杂的SQL查询、窗口函数、JSON支持好,被誉为"最先进的开源关系数据库"。

  • 应用场景

    • 对数据完整性、复杂查询、GIS(地理信息系统)有高要求的应用。

    • 替代Oracle等商业数据库。

3. Redis
  • 功能类型:内存中的数据结构存储,常用作数据库、缓存和消息中间件。

  • 特点:数据存储在内存中,读写速度极快,支持丰富的数据结构(字符串、哈希、列表、集合等)。

  • 应用场景

    • 缓存:缓存数据库查询结果、会话(Session)存储。

    • 排行榜/计数器:利用其原子操作。

    • 消息队列:使用Pub/Sub或List结构。

    • 分布式锁

4. MongoDB
  • 功能类型:文档型NoSQL数据库。

  • 特点:以类JSON的BSON格式存储数据,模式自由,易于扩展。

  • 应用场景

    • 存储非结构化或半结构化数据。

    • 快速迭代开发的业务,因为模式可变。

    • 日志分析、内容管理系统。


四、消息队列 / 消息中间件

用于在应用之间进行异步通信、解耦服务和削峰填谷。

1. RabbitMQ
  • 功能类型:实现了AMQP(高级消息队列协议)的开源消息代理软件。

  • 特点:支持多种消息协议,消息可靠性强,功能全面(如消息确认、持久化、路由灵活)。

  • 应用场景

    • 对消息可靠性要求高的场景,如金融、订单系统。

    • 复杂的消息路由需求。

2. Apache Kafka
  • 功能类型:分布式流处理平台。

  • 特点:高吞吐量、持久化日志、水平扩展能力强。它更像一个"事件流平台"。

  • 应用场景

    • 实时数据流处理:如用户行为追踪、日志聚合。

    • 微服务间的异步通信

    • 构建数据管道,将数据从源系统移动到数据湖或数据仓库。


五、其他关键中间件

1. Elasticsearch
  • 功能类型:分布式、RESTful风格的搜索和分析引擎。

  • 特点:基于Lucene,可以近乎实时地存储、搜索和分析大量数据。

  • 应用场景

    • 网站或App的搜索功能(如电商商品搜索)。

    • 日志和指标分析(常与Logstash、Kibana组成ELK栈)。

2. Etcd / Consul
  • 功能类型:分布式、高可用的键值存储,用于服务发现和配置管理。

  • 特点:提供强一致性的数据存储,常用于集群环境中。

  • 应用场景

    • 微服务架构中的服务注册与发现

    • 分布式系统的配置中心

    • Kubernetes使用Etcd作为其后台存储所有集群数据。

六、典型架构组合示例

  1. 经典Web应用 (LEMP/LAMP)

    • Linux + Nginx/Apache + MySQL/MariaDB + PHP/Python

    • 场景:传统企业官网、内容管理系统(如WordPress)。

  2. Java Web应用

    • Linux + Nginx + Tomcat + MySQL + Redis

    • 流程:Nginx处理静态请求并做反向代理,将动态请求转发给Tomcat集群,Tomcat从MySQL读数据,用Redis做缓存。

  3. 微服务架构

    • Linux + Nginx (API Gateway) + Spring Boot (微服务) + MySQL/PostgreSQL (数据存储) + Redis (缓存/会话) + RabbitMQ/Kafka (服务通信) + Etcd (服务发现)

    • 场景:大型互联网平台,如电商、社交网络。

  4. 实时数据平台

    • Linux + Kafka (数据流) + Flink/Spark (流计算) + Elasticsearch (搜索分析)

    • 场景:实时推荐系统、监控告警平台。

相关推荐
“抚琴”的人4 小时前
C#中获取程序执行时间
服务器·前端·c#
赖small强4 小时前
深入理解 Linux NUMA:拓扑、分配策略与调优实践
linux·numa·pre-cpu·zone
javpy4 小时前
docker部署nacos报错 ‘env NACOS_AUTH_TOKEN must be set with Base64 String.‘
linux·docker·centos
Net_Walke4 小时前
【Linux系统】文件IO
linux·物联网·iot
阿巴~阿巴~5 小时前
Redis重大版本演进全解析:从2.6到7.0
服务器·数据库·redis·ubuntu·缓存·centos
刘某的Cloud5 小时前
ceph设置标志位
linux·运维·ceph·openstack
monkeyhlj5 小时前
excel-mcp-server rocky linux简单部署
linux·运维·excel
liulilittle5 小时前
HI3798MV100 运营商机顶盒NAS LINUX OS - IP地址静态绑定指南
linux·运维·服务器·网络·tcp/ip·nas·机顶盒
我命由我123455 小时前
PDFBox - PDDocument 与 byte 数组、PDF 加密
java·服务器·前端·后端·学习·java-ee·pdf