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

相关推荐
努力的悟空23 分钟前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
运维&陈同学41 分钟前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
哎呦喂-ll2 小时前
Linux进阶:环境变量
linux
耗同学一米八2 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
Rverdoser2 小时前
Linux环境开启MongoDB的安全认证
linux·安全·mongodb
PigeonGuan2 小时前
【jupyter】linux服务器怎么使用jupyter
linux·ide·jupyter
乐闻x3 小时前
Vue.js 性能优化指南:掌握 keep-alive 的使用技巧
前端·vue.js·性能优化
东华果汁哥3 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器