Linux 性能优化实战

Linux 性能优化实战原文链接:https://time.geekbang.org/column/intro/100020901?tab=catalog

33 | 关于 Linux 网络,你必须知道这些(上)

设计高并发架构有哪些策略?

1,负载均衡:Nginx,HAProxy,LVS。

2,微服务:应用程序拆分为小型独立服务。

小型独立服务的特点:

  • 实现应用程序特定业务,职责单一。
  • 开发、部署和扩展能快速迭代。
  • 通过HTTP,REST或消息队列协同实现应用程序功能。 (需要设计高效可靠的服务间通信。)
  • 实现技术多样,不同服务可以使用不同的技术栈。
  • 有独立的数据库和数据模型,去中心化。(需要考虑数据一致性的问题。)
  • 不同服务之间故障隔离,提高系统整体稳定性。(需要管理,监控和运维多个独立服务。)
  • 根据需求水平缩扩容,充分利用资源。
  • 自动化监控、运维。
  • Docker,Kubernetes。

3,异步编程:RabbitMQ,Kafka。

4,服务无状态设计:

  • 请求之间不相互依赖。
  • 请求和服务数据不相互依赖。

5,缓存:Redis,Memcached。

6,服务内部优化:数据结构和算法的优化,提高请求处理速度。

7,数据库优化:

  • 读写分离。
  • 使用NoSQL数据库。
  • 数据库分片。
  • 索引优化。

8,限流和熔断:必要时进行服务降级,保证核心功能的稳定性。

9,API网关:

  • 客户端 --- API网关 --- 服务端。
  • 简化客户端逻辑,为客户端提供统一的交互接口。
  • 屏蔽后端服务的复杂性和细节。

10,CDN:

  • 在多个地理位置的服务器上缓存。用户访问时,选择最接近的服务器向用户提供服务。

11, 数据复制和同步:

多数据中心之间复制数据,提高数据可用性和访问速度。

如何理解云计算?

通过互联网提供计算资源与服务(包括硬件和软件)。

IaaS:基础设施即服务。

  • 提供虚拟化计算资源,用户租用这些资源,无需购买和维护硬件。
  • CPU,内存,磁盘,网络等。
  • 例如:Google Compute Engine,Amazon EC2,Microsoft Azure VMs。

PaaS:平台即服务。

  • 提供除IaaS之外的软件应用平台。
  • 为开发者提供完整的开发和部署环境,能在云端构建,测试,部署,管理和更新应用程序。
  • 开发工具集成:提供集成开发环境和环境,代码编辑器,版本控制,编译服务,测试服务等。
  • 中间件服务:数据库,消息队列,缓存,邮件服务等,开发者无需单独安装和管理。
  • 编程语言和框架的支持:支持多种编程语言和框架。
  • 自动化管理:自动化部署、扩展、负载均衡、日志管理、安全更新等。
  • 服务集成:容易与其他服务集成,如连接不同的API、数据服务或企业服务。
  • 开发者可以使用PaaS提供的服务快速开发新应用程序。
  • 提供与生产环境一直的测试平台。
  • 部署过程自动化和标准化,快速迭代应用。
  • 提供完整的工具用于创建、测试和管理API。
  • 例如:Google App Engine,Heroku,Microsoft Azure App Serveices。

SaaS:软件即服务。

  • 通过互联网提供应用程序作为服务,用户直接通过浏览器或API直接访问服务,无需任何维护。
  • 服务商负责软件的维护、操作和更新。
  • 例如:Google Workspace,Microsoft 365。

如何理解TCP/IP 四层模型?

应用层:向用户提供一组应用程序接口,屏蔽底层复杂的网络协议栈。应用程序开发者只关注业务逻辑实现,而不需要处理网络通信的细节。例如:HTTP,FTP,DNS等。

传输层:应用程序(网络层IP + 传输层端口唯一标识)之间的通信。例如:TCP,UDP等。

网络层:主机(网络层IP唯一标识)之间的通信。例如:IP等。

网络接口层:负责网络帧在物理链路上的传输。

TUPIAN

如何理解网络接口层MAC寻址?

如何理解网络接口层错误侦测?

如何理解网络包的封装格式?

TUPIAN

如何理解MTU?

数据链路层限制的最大IP包传输大小。

IP头 + TCP头 + 应用数据 > MTU,则在网络层进行分片。

第一个分片:IP头部 + TCP头部 + 应用数据。

其他分片:IP头部 + 应用数据。

举例:MTU为1500字节。

2000字节IP数据包:IP头 (20字节) +TCP头 (20字节) +应用数据 (1960字节)。

分片1:IP头 (20字节) +TCP头 (20字节) +应用数据 (1460字节)。

分片2:IP头 (20字节) +应用数据(500字节)。

如何理解Linux 内核中的网络栈?

TUPIAN

如何理解应用程序通过系统调用和套接字进行交互?

如何理解Linux网络收发数据流程?

接收流程:

  • 网络帧到达网卡。
  • 网卡通过DMA将数据帧放在收包队列。
  • 硬中断通知中断处理程序收到了网络帧,为网络帧在内核分配数据结构 sk_buff 并拷贝到 sk_buff缓冲区。
  • 硬中断结束,通知软中断。
  • 软中断从 sk_buff 缓冲区取出网络帧,按照网络协议解析,将应用数据缓存在socket中。
  • 应用程序使用socket接口读取数据。

TUPIAN

38 | 案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量?

相关推荐
ltl20 分钟前
Linux 异步 I/O:epoll 与 io_uring 对比
linux
ltl26 分钟前
压缩算法工程实践:吞吐、比率与 CPU 权衡
linux
fiveym1 小时前
01 - iPXE + Clonezilla 网络装机原理解析
linux·运维·服务器·网络
虎头金猫1 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
反转180度2 小时前
Qt 6 + C++17 实现 SFTP 批量部署:工业设备运维工具实战解析
运维·c++·qt
雨辰AI3 小时前
RAG 知识库搭建:基于人大金仓构建信创运维问答机器人|全栈国产化落地完整版
运维·ai·机器人·ai编程
-今昭-3 小时前
Ansible
linux·运维·ansible
星野川崎2063 小时前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
mounter6254 小时前
MACsec 全景解析:从技术演进、核心架构到 DPU 硬件卸载与 K8s 大规模调度实战
linux·kubernetes·linux kernel·kernel·macsec
IT邦德5 小时前
Dify1.6基于ubuntu系统的部署实战
linux·运维·ubuntu