当前位置: 首页 > news >正文

西安哪家网站建设公司好关于网站建设的指标

西安哪家网站建设公司好,关于网站建设的指标,企业网站建设免费,网站建设提案怎么写一、redis是单线程 Redis是单线程的#xff0c;但是为什么还那么快#xff1f;主要原因有下面3点原因#xff1a; 1. Redis是纯内存操作#xff0c;执行速度非常快。 2. 采用单线程#xff0c;避免不必要的上下文切换可竞争条件#xff0c;多线程还要考虑线程安全问题。 …一、redis是单线程 Redis是单线程的但是为什么还那么快主要原因有下面3点原因 1. Redis是纯内存操作执行速度非常快。 2. 采用单线程避免不必要的上下文切换可竞争条件多线程还要考虑线程安全问题。 3. 使用I/O多路复用模型非阻塞IO。 二、I/O多路复用 能解释一下I/O多路复用模型 Redis是纯内存操作执行速度非常快它的性能瓶颈是网络延迟而不是执行速度 I/O多路复用模型主要就是实现了高效的网络请求。要解释I/O多路复用模型需要从下面3个知识慢慢来 1. 用户空间和内核空间。 2. 常见的IO模型阻塞IOBlocking IO、非阻塞IONonblocking IO、IO多路复用IO Multiplexing。 3. Redis网络模型。 三、用户空间和内核空间 1.作用 Linux系统中一个进程使用的内存情况划分两部分内核空间、用户空间。 1. 用户空间只能执行受限的命令Ring3而且不能直接调用系统资源必须通过内核提供的接口来访问。 2. 内核空间可以执行特权命令Ring0调用一切系统资源。 Linux系统为了提高IO效率会在用户空间和内核空间都加入缓冲区 1. 写数据时要把用户缓冲数据拷贝到内核缓冲区然后写入设备。 2. 读数据时要从设备读取数据到内核缓冲区然后拷贝到用户缓冲区。 2.会出现什么问题呢 1. 当等待数据时会浪费大量系统资源。 2. 拷贝的过程比较繁琐。 3.如何解决 就是下面说到的IO模型。 四、常见的IO模型 1.阻塞IO模型 顾名思义阻塞IO就是两个阶段都必须阻塞等待 阶段一 1. 用户进程尝试读取数据比如网卡数据。 2. 此时数据尚未到达内核需要等待数据。 3. 此时用户进程也处于阻塞状态。 阶段二 1. 数据到达并拷贝到内核缓冲区代表已就绪。 2. 将内核数据拷贝到用户缓冲区 拷贝过程中用户进程依然阻塞等待。 3. 拷贝完成用户进程解除阻塞处理数据。 结论可以看到阻塞IO模型中用户进程在两个阶段都是阻塞状态。 2.非阻塞IO模型 顾名思义非阻塞IO的recvfrom操作会立即返回结果而不是阻塞用户进程。 阶段一 1. 用户进程尝试读取数据比如网卡数据。 2. 此时数据尚未到达内核需要等待数据。 3. 返回异常给用户进程。 4. 用户进程拿到error后再次尝试读取。 5. 循环往复直到数据就绪。 阶段二 1. 将内核数据拷贝到用户缓冲区。 2. 拷贝过程中用户进程依然阻塞等待。 3. 拷贝完成用户进程解除阻塞处理数据。 总结可以看到非阻塞IO模型中用户进程在第一个阶段是非阻塞第二个阶段是阻塞状态。虽然是非阻塞但性能并没有得到提高。而且忙等机制会导致CPU空转CPU使用率暴增。 3.IO多路复用 1基本原理 IO多路复用是利用单个线程来同时监听多个Socket 并在某个Socket可读、可写时得到通知从而避免无效的等待充分利用CPU资源。 阶段一 1. 用户进程调用select指定要监听的Socket集合。 2. 内核监听对应的多个socket。 3. 任意一个或多个socket数据就绪则返回readable。 4. 此过程中用户进程阻塞。 阶段二 1. 用户进程找到就绪的socket。 2. 依次调用recvfrom读取数据。 3. 内核将数据拷贝到用户空间。 4. 用户进程处理数据。 2其他通知方法 IO多路复用是利用单个线程来同时监听多个Socket 并在某个Socket可读、可写时得到通知从而避免无效的等待充分利用CPU资源。不过监听Socket的方式、通知的方式又有多种实现常见的有select、poll、epoll。 差异 1. select和poll只会通知用户进程有Socket就绪但不确定具体是哪个Socket 需要用户进程逐个遍历Socket来确认。 2. epoll则会在通知用户进程Socket就绪的同时把已就绪的Socket写入用户空间。 五、Redis网络模型 Redis通过IO多路复用来提高网络性能并且支持各种不同的多路复用实现并且将这些实现进行封装 提供了统一的高性能事件库。 核心就是IO多路复用事件派发。 六、面试时候的回答 面试官Redis是单线程的但是为什么还那么快 候选人这个有几个原因吧 1、完全基于内存的C语言编写。 2、采用单线程避免不必要的上下文切换可竞争条件。 3、使用多路I/O复用模型非阻塞IO。 例如bgsave 和 bgrewriteaof 都是在后台执行操作不影响主线程的正常使用不会产生阻塞 面试官能解释一下I/O多路复用模型 候选人I/O多路复用是指利用单个线程来同时监听多个Socket 并在某个Socket可读、可写时得到通知从而避免无效的等待充分利用CPU资源。目前的I/O多路复用都是采用的epoll模式实现它会在通知用户进程Socket就绪的同时把已就绪的Socket写入用户空间不需要挨个遍历Socket来判断是否就绪提升了性能。 其中Redis的网络模型就是使用I/O多路复用结合事件的处理器来应对多个Socket请求比如提供了连接应答处理器、命令回复处理器命令请求处理器 在Redis6.0之后为了提升更好的性能在命令回复处理器使用了多线程来处理回复事件在命令请求处理器中将命令的转换使用了多线程增加命令转换速度在命令执行的时候依然是单线程。
http://www.dnsts.com.cn/news/167079.html

相关文章:

  • 无锡网站建设维护网站改版应该怎么做
  • 网站用什么程序做的佛山专业网站开发公司
  • 网站建设电话销售话术模板大全网站续费价格
  • 长沙公司网站网站开发项目中职责
  • 移动网站建站视频如何进行网站设计规划
  • 网站300m是什么意思网站自身seo优化怎么做
  • 存储网站建设网站建设子栏目怎么弄
  • 如何自己免费制作网站上海的网络推广公司
  • 网站类别标签文本wordpress博客常用插件
  • 贵州省铜仁市住房和城乡建设局网站网站制作推广
  • 网站里的动画是什么软件做的网站版式设计
  • 做网站可以不买域名和主机吗计算机做网站开题报告
  • 学做网站用什么服务器公众号交易平台
  • 网站后台管理系统怎么登陆seo关键词软件
  • 遂宁微章建设举报网站网站建设与管理 需求分析
  • 查看网站服务器版本网站排名软件利搜
  • 网站建设推广型直播网站app开发
  • 做一个电子商务网站wordpress媒体库太大
  • 泰安集团网站建设价格上海做网站费用
  • 长沙网站建设推荐网站制作方法
  • 成立网站建设公司要求十大社交电商购物平台
  • 高端网站建设公司新鸿儒衡水做wap网站费用
  • 化学商城网站建设360广告联盟怎么做网站
  • 输入法网站设计自建站有哪些站点
  • 装修之家网站乐山旅游 英文网站建设
  • 江苏省 建设 注册中心网站首页医院内外网站建设
  • 深圳建设高端网站win7优化大师官方免费下载
  • 网站优化公司服务wordpress audio主题
  • 北京高档网站建设做个网站需要什么
  • 申请阿里巴巴网站首页移动网站的建设