内容简介:本文只是概念性的知识,内容比较零散,下篇文章再进行代码分析。官方给的解释是高性能socket框架,我的个人理解是实现多进程的通讯的服务框架。与传统的PHP框架不同,并非注重功能的实现,而是专注于性能和通讯服务。
本文只是概念性的知识,内容比较零散,下篇文章再进行代码分析。
Workerman是什么,他的优势在哪?
官方给的解释是高性能socket框架,我的个人理解是实现多进程的通讯的服务框架。
与传统的 PHP 框架不同,并非注重功能的实现,而是专注于性能和通讯服务。
优势:
1.与传统的web服务不同,Workerman第一次运行就将环境变量、对象等资源常驻内存
2.传统的web基本只实现http协议,但Workerman可以实现多种应用层协议(比如http、websocket、text等)
socket:
套接字,是网络中不同主机间双向通信的端点的抽象层,位于TCP/IP四层中传输层和应用层之间,是一种约定或方式的接口。
进程:
进程:是系统资源调用的最小单元,程序和程序之间默认不共享数据和地址空间。想要实现进程间通信可以用:队列、管道、信号量和共享内存、信号等。
孤儿进程:父进程fork出子进程后,父进程自己退出,则子进程为孤儿进程。
僵尸进程:父进程在fork出子进程后,子进程在结束后,父进程并没有调用wait或者waitpid等完成对其清理善后工作,导致改子进程进程ID、文件描述符等依然保留在系统中,极大浪费了系统资源。叫做僵尸进程。
守护进程:是运行在后台的一种特殊进程。创建守护进程的过程:
1.父进程创建子进程,父进程退出。
2.子进程创建新会话
3.禁止子进程重新打开终端
4.设置当前目录为根目录
5.设置文件权限掩码
6.关闭文件描述符
线程:是cpu调用的最小单元,同一进程中的线程共享数据和地址空间。
进程组:每一个进程都属于一个进程组,进程组是一个或多个进程的集合,进程组中有一个进程组长。
会话:是一个或多个进程组的集合,建立会话的进程是会话的首领进程,会话中每个进程组称为一个作业。
libevent:
libevent是用 C语言 编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux 、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。
epoll、poll、select: https://www.cnblogs.com/aspirant/p/9166944.html
都是I/O多路复用模型的实现,对用户请求进行回调执行。
select:当I/O事件发生时,会无差别轮询所有socket完成调度,浪费cpu资源。且最大连接数受内存影响。参考: https://www.cnblogs.com/Anker/p/3258674.html
poll:和select本质上没有区别,但是没有最大连接数限制。参考: https://www.cnblogs.com/Anker/p/3261006.html
epoll:可以理解为event poll,当I/O事件发生时不会采用轮询的方式,而是把哪个流发生了怎样的I/O事件通知我们。参考: https://www.cnblogs.com/Anker/p/3263780.html
epoll提供了三个函数:epoll_create(创建)、epoll_ctl(事件注册)、epoll_wait(事件等待)
epoll在事件注册时已经将已经将fd复制到内核中并未每个fd指定了回调函数
reuseport :
开启监听端口复用后允许多个无亲缘关系的进程监听相同的端口,并且由系统内核做负载均衡,决定将socket连接交给哪个进程处理,避免了惊群效应,可以提升多进程短连接应用的性能。
未开启时:多个进程监听一个socket,没有请求时这些进程处于挂起状态。当有请求时,内核会唤醒这些进程让他们竞争去处理这个连接,这个过程耗费cpu资源,叫做惊群效应。
开启reuseport后:一个端口可以被多个socket同时监听,内核可以做到将客户端连接均匀地发送到监听统一端口的一群 Socket 上。当有客户端连接到来时,内核转发连接到一个 Socket 上,而这个 Socket 只会唤醒自己隶属的那个 Worker,避免惊群效应。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS笔记:进一步认识 ==、isEqual、hash
- JavaSe笔记02-添加判断和字符char的认识
- iOS开发学习笔记:对MVC、MVVM建立认识
- 认识认识LVS负载均衡集群
- 认识一下 SVG
- Netty初步认识
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Twenty Lectures on Algorithmic Game Theory
Tim Roughgarden / Cambridge University Press / 2016-8-31 / USD 34.99
Computer science and economics have engaged in a lively interaction over the past fifteen years, resulting in the new field of algorithmic game theory. Many problems that are central to modern compute......一起来看看 《Twenty Lectures on Algorithmic Game Theory》 这本书的介绍吧!