Workerman学习笔记(一)初步认识

栏目: IT技术 · 发布时间: 4年前

内容简介:本文只是概念性的知识,内容比较零散,下篇文章再进行代码分析。官方给的解释是高性能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,避免惊群效应。

参考: https://www.jianshu.com/p/97cc8c52d47a


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

CSS

CSS

麦克法兰 / 江苏东南大学 / 2007-6 / 65.00元

《CSS(使用指南)(影印版)》主要内容:层叠样式表(CSS)能让你内心的设计思想迸发出来并得以实现。不过,将CSS与网站底层的HTML页面进行整合是一件非常困难的工作,有时甚至复杂得令人沮丧——这导致多数Web设计者不得不放弃一些奇思妙想。《CSS: The Missing Manual》可以消除Web设计工作的痛苦,并且带给你: HTML——重新入门。如果你是HTML新手,你会学到如何以......一起来看看 《CSS》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换