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 分析网络流量?

相关推荐
再玩一会儿看代码13 分钟前
[特殊字符] 深入理解 WSL2:在 Windows 上运行 Linux 的极致方案
linux·运维·windows·经验分享·笔记·学习方法
有谁看见我的剑了?40 分钟前
centos7.9 升级 gcc
linux
良许Linux43 分钟前
FreeRTOS大家都是怎么学的呀?
linux
良许Linux1 小时前
类似于STM32之类的MCU,使用RTOS真的比裸机编程有那么大优势?
linux
良许Linux1 小时前
为什么越来越多的人要转行做嵌入式呢?
linux
良许Linux1 小时前
单片机中有FLASH为啥还需要EEROM?
linux
良许Linux1 小时前
嵌入式rtos中哪一个更加值得去学习?
linux
良许Linux1 小时前
为什么招聘单片机工程师的时候要求精通C/C++?
linux
良许Linux1 小时前
程序员从幼稚到成熟的标志是什么?
linux
良许Linux1 小时前
该不该放弃嵌入式,单片机这条路?
linux