Gitlib

天下武功 唯快不破


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

深入理解IO模型

发表于 2019-07-23 | 分类于 Linux

关于IO模型,就必须先谈到几个日常接触的几个与IO相关名字:同步,异步,阻塞,非阻塞。

名词解释

同步

如果事件A需要等待事件B的完成才能完成,这种串行执行机制可以说是同步的,这是一种可靠的任务序列,要么都成功,要么都失败。

异步

如果事件A的执行不需要依赖事件B的完成结果,这种并行的执行机制可以说是异步的。事件A不确定事件B是否真正完成,所以是不可靠的任务序列。

同步异步可以理解为多个事件的执行方式和执行时机如何,是串行等待还是并行执行。同步中依赖事件等待被依赖事件的完成,然后触发自身开始执行,异步中依赖事件不需要等待被依赖事件,可以和被依赖事件并行执行,被依赖事件执行完成后,可以通过回调、通知等方式告知依赖事件。

阻塞

对于阻塞,如果一个事件在发起一个调用之后,在调用结果返回之前,该事件会被一直挂起,处于等待状态。

非阻塞

对于非阻塞,如果一个事件在发起调用以后,无论该调用当前是否得到结果,都会立刻返回,不会阻塞当前事件。

阻塞与非阻塞可以理解为单个事件在发起其他调用以后,自身的状态如何,是苦苦等待还是继续干自己的事情。非阻塞虽然能提高CPU利用率,但是也带来了系统线程切换的成本,需要在CPU执行时间和系统切换成本之间好好估量一下。

IO模型

IO模型分为五种,阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动IO模型、异步IO模型、前4种为同步IO操作、只有异步IO模型是异步IO操作、请仔细阅读IO交互便于理解IO模型。

阻塞IO模型

网络编程中,读取客户端的数据需要调用recvfrom。在默认情况下,这个调用会一直阻塞直到数据接收完毕,就是一个同步阻塞的IO方式。

I/O

模拟举例:

老李去火车站买票,排队三天买到一张退票。 耗费:在车站吃喝拉撒睡 3天,其他事一件没干。

非阻塞IO模型

当用户进程发出read操作时、如果内核中的数据还没有准备好、那么它并不会阻塞用户进程、而是立刻返回一个error、从用户进程角度讲、它发起一个read操作后、并不需要等待、而是马上就得到了一个结果、用户进程判断结果是一个error时、它就知道数据还没有准备好、于是它可以再次发送read操作、一旦内核中的数据准备好了、并且又再次收到了用户进程的系统调用、那么它马上就将数据拷贝到了用户内存、然后返回。

非阻塞的接口相比于阻塞型接口的显著差异在于在被调用之后立即返回,在非阻塞式IO中,用户进程其实是需要不断的主动询问kernel数据准备好了没有。

I/O

模拟举例:

老李去火车站买票,隔12小时去火车站问有没有退票,三天后买到一张票。 耗费:往返车站6次,路上6小时,其他时间做了好多事。

IO复用模型

如果一个I/O流进来,我们就开启一个进程处理这个I/O流。那么假设现在有一百万个I/O流进来,那我们就需要开启一百万个进程一一对应处理这些I/O流(——这就是传统意义下的多进程并发处理)。思考一下,一百万个进程,你的CPU占有率会多高,这个实现方式及其的不合理。所以人们提出了I/O多路复用这个模型,一个线程,通过记录I/O流的状态来同时管理多个I/O,可以提高服务器的吞吐能力。

IO复用模型的本质是同步非阻塞I/O,多路复用的优势并不是单个连接处理的更快,而是在于能处理更多的连接

IO复用是多了一个select函数,select函数有一个参数是文件描述符集合,对这些文件描述符进行循环监听,当某个文件描述符就绪时,就对这个文件描述符进行处理。

I/O

目前支持多路复用的系统调用有select, poll, epoll。

模拟举例:

  1. select/poll

老李去火车站买票,委托黄牛,然后每隔6小时电话黄牛询问,黄牛三天内买到票,然后老李去火车站交钱领票。 耗费:打电话

  1. epoll

老李去火车站买票,委托黄牛,黄牛买到后即通知老李去领,然后老李去火车站交钱领票。 耗费:无需打电话

​

信号驱动IO模型

I/O

信号驱动式IO就是指进程预先告知内核、向内核注册一个信号处理函数、然后用户进程返回不阻塞、当内核数据就绪时会发送一个信号给进程、用户进程便在信号处理函数中调用IO读取数据、从图中明白实际IO内核拷贝到用户进程的过程还是阻塞的、信号驱动式IO并没有实现真正的异步、因为通知到进程之后、依然是由进程来完成IO操作。

模拟举例:

老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李,然后老李去火车站交钱领票。 耗费:无需打电话

异步IO模型

I/O

当应用程序调用aio_read时,内核一方面去取数据报内容返回,另一方面将程序控制权还给应用进程,应用进程继续处理其他事情,是一种非阻塞的状态。

当内核中有数据报就绪时,由内核将数据报拷贝到应用程序中,返回aio_read中定义好的函数处理程序。

模拟举例:

老李去火车站买票,给售票员留下电话,有票后,售票员电话通知老李并快递送票上门。 耗费:无需打电话

Gitlab+Jenkins+K8S自动化部署实践

发表于 2019-07-12 | 分类于 CI/CD

SSL证书分类与选择指南

发表于 2019-06-17 | 分类于 Linux

SSL证书又称服务器证书、HTTPS证书,是通过CA机构验证服务器身份后颁发的,具有服务器身份验证和数据传输加密功能的文件。随着浏览器、搜索引擎、小程序开发的支持,SSL证书在国内越来越受欢迎,怎么选择SSL证书,需要考虑哪些点,以下是总结的几点。

域名数量

SSL证书支持的域名数量可以分为单域名、多域名和通配符等类型,保护的域名数量越多,证书的价格也就越贵。因此我们需要先统计保护的域名数量,从而确定选择哪一种类型的SSL证书:

  • 保护1个网站域名,选择单域名SSL证书即可;
  • 保护没有直接联系的多个域名,选择多域名SSL证书;
  • 保护多个域名且是主域名与子域名的关系,则可选择多域名SSL证书或通配符证书。

通配符域名支持示例:

SSL证书

多域名支持示例:

SSL证书

等级种类

SSL证书按验证等级分为三种,DVSSL证书、OVSSL证书、EVSSL证书,级别从低到高。不同认证等级的SSL证书所需要的申请资料以及特点也是不一样的。所以我们需要根据网站的具体情况来选择合适的SSL证书认证等级。

对比域名型SSL(DVSSL)企业型SSL(OVSSL)增强型SSL(EVSSL)
英文名称Domain Validation SSL CertificateOrangization Validation SSL CertificateExtended Validation SSL C certificate
审核内容域名管理权限域名管理权限;企业名称、地址、电话等信息的真实性域名管理权限;企业名称、地址、电话等信息的真实性;第三方数据库审查,例如邓白氏、114查号台、律师证明信等
颁发周期几分钟-几小时3-5个工作日5-7个工作日

SSL证书类型的选择:

  • 如果您的网站主体是个人(即没有企业营业执照),只能申请免费型或 DV 型数字证书。
  • 对于一般企业,建议购买 OV 及以上类型的数字证书。对于金融、支付类企业,建议购买 EV 型证书。
  • 移动端网站或接口调用,建议您使用 OV 及以上类型的证书。

证书品牌

SSL证书的由受信任是数字证书颁发机构CA颁发的,SSL证书品牌对提升企业形象有着重要的作用,以下是全球可信SSL证书价格对照表:

SSL证书

各数字证书品牌兼容性从强到弱的顺序: DigiCert > Symantec > GlobalSign > GeoTrust > Comodo。


最后,至于选择什么样的SSL证书,可以结合以上几点,根据个人需求做出选择。

古都风韵-西安(二)

发表于 2019-05-25 | 分类于 旅途Vlog

前言

西安,六朝古都,独有的古都魅力和时尚,始皇陵、古城墙、大雁塔、钟鼓楼、回民街、华清池,蕴藏着太多古老的传奇。在这里除了能感受到城市的繁华,更能体会到古城西安特有的历史文化底蕴。

摄影作品

西安

西安

西安

西安

西安

古都风韵-西安(一)

发表于 2019-05-25 | 分类于 旅途Vlog

前言

西安,六朝古都,独有的古都魅力和时尚,始皇陵、古城墙、大雁塔、钟鼓楼、回民街、华清池,蕴藏着太多古老的传奇。在这里除了能感受到城市的繁华,更能体会到古城西安特有的历史文化底蕴。

摄影作品

西安

西安

西安

西安

西安

在路上-西藏(四)

发表于 2019-05-20 | 分类于 旅途Vlog

前言

2019年5月份辞职之后,开始了一个多月的大西南自驾之旅,从广州出发,经湖南、湖北、重庆 四川、西藏、青海、甘肃、陕西、湖北、江西,跋涉万里, 途经11个省/自治区,6月份回到广东。其中,在西藏停留的近半个月, 每天晒着太阳,看着蓝天白云,幸福感爆棚。

西藏的美,无法言表,只有去过的人才知道。雪山、草原、湖泊、无人区,巍峨壮丽,惊为神的作品。真的从未想过人间竟然有如此美景,雪域高原真的很值得顶着高反来一次。

摄影作品

拉萨

拉萨

在路上-西藏(三)

发表于 2019-05-20 | 分类于 旅途Vlog

前言

2019年5月份辞职之后,开始了一个多月的大西南自驾之旅,从广州出发,经湖南、湖北、重庆 四川、西藏、青海、甘肃、陕西、湖北、江西,跋涉万里, 途经11个省/自治区,6月份回到广东。其中,在西藏停留的近半个月, 每天晒着太阳,看着蓝天白云,幸福感爆棚。

西藏的美,无法言表,只有去过的人才知道。雪山、草原、湖泊、无人区,巍峨壮丽,惊为神的作品。真的从未想过人间竟然有如此美景,雪域高原真的很值得顶着高反来一次。

摄影作品

拉萨

拉萨

拉萨

拉萨

拉萨

在路上-西藏(二)

发表于 2019-05-20 | 分类于 旅途Vlog

前言

2019年5月份辞职之后,开始了一个多月的大西南自驾之旅,从广州出发,经湖南、湖北、重庆 四川、西藏、青海、甘肃、陕西、湖北、江西,跋涉万里, 途经11个省/自治区,6月份回到广东。其中,在西藏停留的近半个月, 每天晒着太阳,看着蓝天白云,幸福感爆棚。

西藏的美,无法言表,只有去过的人才知道。雪山、草原、湖泊、无人区,巍峨壮丽,惊为神的作品。真的从未想过人间竟然有如此美景,雪域高原真的很值得顶着高反来一次。

摄影作品

拉萨

拉萨

拉萨

拉萨

拉萨

在路上-西藏(一)

发表于 2019-05-20 | 分类于 旅途Vlog

前言

2019年5月份辞职之后,开始了一个多月的大西南自驾之旅,从广州出发,经湖南、湖北、重庆 四川、西藏、青海、甘肃、陕西、湖北、江西,跋涉万里, 途经11个省/自治区,6月份回到广东。其中,在西藏停留的近半个月, 每天晒着太阳,看着蓝天白云,幸福感爆棚。

西藏的美,无法言表,只有去过的人才知道。雪山、草原、湖泊、无人区,巍峨壮丽,惊为神的作品。真的从未想过人间竟然有如此美景,雪域高原真的很值得顶着高反来一次。

摄影作品

拉萨

拉萨

拉萨

拉萨

拉萨

拉萨

打卡网红第一城-重庆

发表于 2019-05-13 | 分类于 旅途Vlog

前言

重庆独特的山城地貌、两江交汇场景,造就了重庆这座网红城市。 无论是轻轨穿楼、停靠在八楼的二路汽车,还是洪崖洞,他们建筑特色的根本在于重庆是一座山城,凹凸不平的地势使得重庆的建筑风格魔幻立体。

摄影作品

重庆

重庆

重庆

重庆

重庆

123…22

Ravior

220 日志
32 分类
56 标签
RSS
GitHub Gitee
Links
  • Redis 命令参考
  • OpenResty 最佳实践
  • Nginx中文文档
  • Vue中文文档
  • Kafka中文文档
  • RabbitMQ中文文档
  • gRPC中文文档
  • Scrapy入门教程
© 2019 Ravior