IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 不同介质IO速度 -> 正文阅读

[系统运维]不同介质IO速度

认识IO的问题才能更好的设计和开发出高并发和高性能的系统

转载:?认识IO的问题才能更好的设计和开发出高并发和高性能的系统_慕课手记

【IO的概述】

计算机中的IO,主要是本地磁盘IO和网络IO。

下面是关于IO速度的几个基本知识。

网络IO肯定是本地最快,局域网次之,跨机房、跨城市、跨运营商会变慢。

局域网的传输速度比SSD卡的随机读取速度快,比普通硬盘就快更多了。

【关于磁盘】

对于高并发和高性能的系统,什么时候会用磁盘呢?

毕竟磁盘速度相对来说太慢了。

磁盘的优点:

? ? 空间大,价格低廉,持久化数据更安全。

磁盘的缺点:

? ? 读取、写入速度都比较慢,并发能力弱。

我们看到上面的优点和缺点,系统各方面权衡考虑的话,如果对空间要求高(几百G),可能不得不用磁盘来做存储。

如果对持久稳定的要求更高的话,磁盘可靠性也比内存要好。

所以,当我们需要大量空间来做缓存,比如:

1 nginx缓存一个网站上万的页面,还是用磁盘缓存吧。

2 搜索结果缓存,可能32G、64G还是会不够用,那么也可以考虑用磁盘来做一个备用缓存,至少会比从数据库或者其他系统中检索要快。

或者我们需要有更大空间来保存或者持久化必须的数据,比如:

1 数据库索引,索引太多,还是需要用到磁盘来做保存。

2 长期的数据文件。

如果对性能要求高,尽量用SSD,至少在数据库服务器和缓存服务器,还是用SSD磁盘吧。

【关于网络】

下面是用户访问网站应用的一个典型的网络架构。

数据库服务器/缓存服务器/接口服务器

这里的几个网络速度会有明显差别。

1 “WIFI/4G”,因为用户可能在深圳,WEB服务器在北京,这样跨城市甚至跨运营商请求,速度是很慢的。

2 “跨机房”请求后端的数据库服务器/缓存服务器/接口服务器,网络相对于局域网就差了至少一个数量级。

关于第一种慢(用户到服务器),用户到WEB服务器,有几个方法可以优化:

1 CDN网络,让末端服务器节点离用户更近(缺点,实时性更新很难保证,数据一致性也就很难做到);

2 多机房部署,多城市、多线路的服务器部署和网络接入(缺点,部署和维护代价、要求高,系统的复杂度更高);

关于第二种慢(服务器跨机房请求),应用服务器跨机房请求,有几个方法可以优化:

1 同机房部署,避免跨机房请求(缺点,部署和维护代价、要求高,数据一致性和同步的难度更高);

2 跨机房之间的网络拉专线光纤(缺点,成本高);

从上面可以看到,对于中小型网站部署多机房还是不多,但是对于大型网站和应用,即使缺点也很明显,但也不得不投入去做。

【应用和程序优化】

上面的网络架构中,我们讲了网速慢的时候怎么优化网络架构,还有另外关于应用和系统的优化问题。

用户到WEB服务器的数量多,而且网络慢,意味着WEB服务器需要同时持有很多连接,要有更高的并发能力才行。

如果应用服务器以及后端的数据库、接口等性能跟不上,同样会造成请求拥堵

所以这里就有了对系统的高并发和高性能要求。

支持高并发的WEB服务器,现在大部分用nginx,原因就是它高效的网络处理,内存占用少,可以同时连接几十万上百万请求。

为什么nginx可以做到2.5M内存保持1万连接,简单说,就是它把请求放到操作系统的网络事件队列中(epoll模型),不会为每个请求开一个线程,也不会自己去轮询所有连接。

而到开发语言的层面,JAVA有netty,PHP有swoole,这些框架都是可以更好的支持IO密集型服务。

支持高性能,就需要每一个技术人员不断对系统做优化和改造了,而且,这是一个长期漫长的过程,也是一个需要不懈努力的过程。

但是很多时候,应用运行时间越长,性能反而越差了,因为业务不断改动需求,因为数据不断积累,所以,这也是对技术提出了更高的要求。

几个通用的优化思路:

1 多关注业务逻辑,能否减少计算次数,能否简化资源依赖?

2 数据结构是否更高效,避免过多的再次加工处理;

3 数据库使用效率是否高效,数据表设计,索引设计是否合理?

4 Web调优,PHP设置,JVM设置。

【总结】

1 为了高性能,尽量少用磁盘,一定要用的话就上SSD吧。

2 多机房部署,多线接入,应用、数据库等同机房部署,避免跨城市、跨运营商、跨机房请求。

3 对于IO密集型的WEB服务器,支持多路复用的网络模型(epoll)会是更优的选择。

4 性能优化是长期而且跟业务紧密相关的问题,也是技术成长的必经之路。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:26:09  更:2022-06-25 18:28:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:20:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码