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

营销型网站建设口碑好怎么制作网站数据包导入小程序

营销型网站建设口碑好,怎么制作网站数据包导入小程序,做网站涉及到哪些,什么是seo搜索优化文章目录 Pre线程模型1#xff1a;传统阻塞 I/O 服务模型线程模型2#xff1a;Reactor 模式Reactor 模式的基本设计思想Reactor 模式中的关键组成3种典型实现单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 小结 线程模型3#xff1a;Proactor 模型 Pre 高性能网络… 文章目录 Pre线程模型1传统阻塞 I/O 服务模型线程模型2Reactor 模式Reactor 模式的基本设计思想Reactor 模式中的关键组成3种典型实现单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 小结 线程模型3Proactor 模型 Pre 高性能网络编程 - 解读5种I/O模型 介绍完服务器如何基于 I/O 模型管理连接获取输入数据下面将介绍基于进程/线程模型服务器如何处理请求。 值得说明的是具体选择线程还是进程更多是与平台及编程语言相关。 例如 C 语言使用线程和进程都可以(例如 Nginx 使用进程Memcached 使用线程)Java 语言一般使用线程(例如 Netty)为了描述方便下面都使用线程来进行描述。 线程模型1传统阻塞 I/O 服务模型 1采用阻塞式 I/O 模型获取输入数据2每个连接都需要独立的线程完成数据输入业务处理数据返回的完整操作。 存在问题 1当并发数较大时需要创建大量线程来处理连接系统资源占用较大2连接建立后如果当前线程暂时没有数据可读则线程就阻塞在 Read 操作上造成线程资源浪费。 线程模型2Reactor 模式 Reactor 模式的基本设计思想 基本介绍 针对传统阻塞 I/O 服务模型的 2 个缺点比较常见的有如下解决方案 1基于 I/O 复用模型多个连接共用一个阻塞对象应用程序只需要在一个阻塞对象上等待无需阻塞等待所有连接。当某条连接有新的数据可以处理时操作系统通知应用程序线程从阻塞状态返回开始进行业务处理 2基于线程池复用线程资源不必再为每个连接创建线程将连接完成后的业务处理任务分配给线程进行处理一个线程可以处理多个连接的业务。 I/O 复用结合线程池这就是 Reactor 模式基本设计思想 如下图 Reactor 模式是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。 服务端程序处理传入多路请求并将它们同步分派给请求对应的处理线程Reactor 模式也叫 Dispatcher 模式。 即 I/O 多路复用统一监听事件收到事件后分发(Dispatch 给某进程)是编写高性能网络服务器的必备技术之一。 Reactor 模式中的关键组成 Reactor 模式中有 2 个关键组成 1ReactorReactor 在一个单独的线程中运行负责监听和分发事件分发给适当的处理程序来对 IO 事件做出反应。 它就像公司的电话接线员它接听来自客户的电话并将线路转移到适当的联系人 2Handlers处理程序执行 I/O 事件要完成的实际事件类似于客户想要与之交谈的公司中的实际官员。Reactor 通过调度适当的处理程序来响应 I/O 事件处理程序执行非阻塞操作。 3种典型实现 根据 Reactor 的数量和处理资源池线程的数量不同有 3 种典型的实现 1单 Reactor 单线程2单 Reactor 多线程3主从 Reactor 多线程。 单 Reactor 单线程 其中Select 是前面 I/O 复用模型介绍的标准网络编程 API可以实现应用程序通过一个阻塞对象监听多路连接请求其他方案示意图类似。 方案说明 1Reactor 对象通过 Select 监控客户端请求事件收到事件后通过 Dispatch 进行分发2如果是建立连接请求事件则由 Acceptor 通过 Accept 处理连接请求然后创建一个 Handler 对象处理连接完成后的后续业务处理3如果不是建立连接事件则 Reactor 会分发调用连接对应的 Handler 来响应4Handler 会完成 Read→业务处理→Send 的完整业务流程。 优点模型简单没有多线程、进程通信、竞争的问题全部都在一个线程中完成。 缺点性能问题只有一个线程无法完全发挥多核 CPU 的性能。Handler 在处理某个连接上的业务时整个进程无法处理其他连接事件很容易导致性能瓶颈。 可靠性问题线程意外跑飞或者进入死循环会导致整个系统通信模块不可用不能接收和处理外部消息造成节点故障。 使用场景客户端的数量有限业务处理非常快速比如 Redis业务处理的时间复杂度 O(1)。 单 Reactor 多线程 方案说明 1Reactor 对象通过 Select 监控客户端请求事件收到事件后通过 Dispatch 进行分发2如果是建立连接请求事件则由 Acceptor 通过 Accept 处理连接请求然后创建一个 Handler 对象处理连接完成后续的各种事件3如果不是建立连接事件则 Reactor 会分发调用连接对应的 Handler 来响应4Handler 只负责响应事件不做具体业务处理通过 Read 读取数据后会分发给后面的 Worker 线程池进行业务处理5Worker 线程池会分配独立的线程完成真正的业务处理如何将响应结果发给 Handler 进行处理6Handler 收到响应结果后通过 Send 将响应结果返回给 Client。 优点可以充分利用多核 CPU 的处理能力。 缺点多线程数据共享和访问比较复杂Reactor 承担所有事件的监听和响应在单线程中运行高并发场景下容易成为性能瓶颈。 主从 Reactor 多线程 针对单 Reactor 多线程模型中Reactor 在单线程中运行高并发场景下容易成为性能瓶颈可以让 Reactor 在多线程中运行。 方案说明 1Reactor 主线程 MainReactor 对象通过 Select 监控建立连接事件收到事件后通过 Acceptor 接收处理建立连接事件2Acceptor 处理建立连接事件后MainReactor 将连接分配 Reactor 子线程给 SubReactor 进行处理3SubReactor 将连接加入连接队列进行监听并创建一个 Handler 用于处理各种连接事件4当有新的事件发生时SubReactor 会调用连接对应的 Handler 进行响应5Handler 通过 Read 读取数据后会分发给后面的 Worker 线程池进行业务处理6Worker 线程池会分配独立的线程完成真正的业务处理如何将响应结果发给 Handler 进行处理Handler 收到响应结果后通过 Send 将响应结果返回给 Client。 优点父线程与子线程的数据交互简单职责明确父线程只需要接收新连接子线程完成后续的业务处理。 父线程与子线程的数据交互简单Reactor 主线程只需要把新连接传给子线程子线程无需返回数据。 这种模型在许多项目中广泛使用包括 Nginx 主从 Reactor 多进程模型Memcached 主从多线程Netty 主从多线程模型的支持。 小结 3 种模式可以用个比喻来理解餐厅常常雇佣接待员负责迎接顾客当顾客入坐后侍应生专门为这张桌子服务 1单 Reactor 单线程接待员和侍应生是同一个人全程为顾客服务2单 Reactor 多线程1 个接待员多个侍应生接待员只负责接待3主从 Reactor 多线程多个接待员多个侍应生。 Reactor 模式具有如下的优点 1响应快不必为单个同步时间所阻塞虽然 Reactor 本身依然是同步的2编程相对简单可以最大程度的避免复杂的多线程及同步问题并且避免了多线程/进程的切换开销3可扩展性可以方便的通过增加 Reactor 实例个数来充分利用 CPU 资源4可复用性Reactor 模型本身与具体事件处理逻辑无关具有很高的复用性。 线程模型3Proactor 模型 在 Reactor 模式中Reactor 等待某个事件或者可应用或者操作的状态发生比如文件描述符可读写或者是 Socket 可读写。 然后把这个事件传给事先注册的 Handler事件处理函数或者回调函数由后者来做实际的读写操作。 其中的读写操作都需要应用程序同步操作所以 Reactor 是非阻塞同步网络模型。 如果把 I/O 操作改为异步即交给操作系统来完成就能进一步提升性能这就是异步网络模型 Proactor Proactor 是和异步 I/O 相关的详细方案如下 1Proactor Initiator 创建 Proactor 和 Handler 对象并将 Proactor 和 Handler 都通过 AsyOptProcessorAsynchronous Operation Processor注册到内核2AsyOptProcessor 处理注册请求并处理 I/O 操作3AsyOptProcessor 完成 I/O 操作后通知 Proactor4Proactor 根据不同的事件类型回调不同的 Handler 进行业务处理5Handler 完成业务处理。 可以看出 Proactor 和 Reactor 的区别 1Reactor 是在事件发生时就通知事先注册的事件读写在应用程序线程中处理完成2Proactor 是在事件发生时基于异步 I/O 完成读写操作由内核完成待 I/O 操作完成后才回调应用程序的处理器来进行业务处理。 理论上 Proactor 比 Reactor 效率更高异步 I/O 更加充分发挥 DMA(Direct Memory Access直接内存存取)的优势。 但是Proactor有如下缺点 1编程复杂性由于异步操作流程的事件的初始化和事件完成在时间和空间上都是相互分离的因此开发异步应用程序更加复杂。应用程序还可能因为反向的流控而变得更加难以 Debug2内存使用缓冲区在读或写操作的时间段内必须保持住可能造成持续的不确定性并且每个并发操作都要求有独立的缓存相比 Reactor 模式在 Socket 已经准备好读或写前是不要求开辟缓存的3操作系统支持Windows 下通过 IOCP 实现了真正的异步 I/O而在 Linux 系统下Linux 2.6 才引入目前异步 I/O 还不完善。 因此在 Linux 下实现高并发网络编程都是以 Reactor 模型为主。
http://www.hkea.cn/news/14265018/

相关文章:

  • 网站建设一般多少费用建站软件大全
  • 营销网站制作设计深圳房产网
  • 设计logo免费网站聊城开发区建设局网站
  • 凡科建站代理九亭 网站建设
  • 长春做公司网站的江门建设银行网站
  • 网站首页背景图片品牌创意设计
  • wifi扩展器做网站期货软件定制开发公司
  • 常见的网站建设程序有哪些银川seo公司
  • 点了网站域名会跳转昆山住房城乡建设局网站查询
  • 专做国外旅游的网站湛江网站建设湛江
  • 做网站的简称wordpress oss ftp
  • 湖北网站建设电话wordpress关注公众号
  • 清河做网站多少钱邯郸广告公司网站建设
  • 房山营销型网站建设微信公众号运营要求
  • 二级域名网站免费建站wordpress 媒体备份
  • 免费做网站教程wordpress头部文字改不了
  • 阿里云做网站经费百度怎么推广自己的产品
  • 衡水精品网站建设报价wordpress能放视频播放器
  • 流量网站怎么做的wordpress代理服务器
  • 做外贸没有企业网站昌平网站开发公司
  • 如何做网站数据分析大学电子商务专业就业方向
  • 互联网网站怎么做建管家企业网站
  • 做网站一定要认证吗合肥做网站怎么样
  • erp管理系统免费版山西seo顾问
  • 做物流网站注意什么完全网络营销网站
  • 自己做的网站提示不安全吗系统官网网站模板下载
  • 免费字体设计 常见网站wordpress调用标签代码
  • 外贸网站推广上海网站联盟是什么
  • 新闻门户网站建设软件开发培训学校三八妇女节
  • 什么是网站建设与维护苏州自学网站建设平台