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

网站如何做淘宝支付宝电商运营培训哪个机构好

网站如何做淘宝支付宝,电商运营培训哪个机构好,网站建设价格表,学校网站建设策划注:文章是4年前在自己网站上写的,迁移过来了。现在看我之前写的这篇文章,描述得不是特别详细,但描述了Nginx的整体架构思想。如果对Nginx玩得透得或者想了解深入的,可以在网上找找其他的文章。 ......................…

          注:文章是4年前在自己网站上写的,迁移过来了。现在看我之前写的这篇文章,描述得不是特别详细,但描述了Nginx的整体架构思想。如果对Nginx玩得透得或者想了解深入的,可以在网上找找其他的文章。

...................................................................分割线...........................................................................

        Nginx实现高并发的模型是多进程+IO多路复用的方式,实现了系统的异步非阻塞IO。

        其实乍看到这是有些疑惑的。使用的epoll这种IO多路复用方式,OS层本身是同步非阻塞的,那为什么说实现了异步呢。这就跟Nginx的实现机制有关系了。关于IO多路复用可见: 并发编程之I/O多路复用

        Nginx的多进程模型是一个master+多个worker。master的作用主要是创建,管理子进程worker。之前写过一篇关于gunicorn介绍的,其进程模型也是采用了相同的思想,只是每个worker的处理方式不同。具体可见: Gunicorn介绍

        当启动Nginx时,master进程建立了socket文件描述符,然后pre-fork出子进程,子进程会继承master的socket,并执行accept开始listen。

        刚才说了,master不负责处理客户端的request请求。真正处理请求的是worker。当有request到来时,会有一个worker进程采用IO多路复用的机制进行处理。

master的主要作用:

  • 接收来自外界的信号; 比如我们在kill进程时,可以直接kill主进程。
  • 向各个worker进程发送信号;
  • 监控worker进程状态;
  • 当worker退出后(异常情况下),自动重新启动新的worker进程

来一张网络上请求处理的示意图:

        那么现在问题来了,因为同时有多个woker都在监听,那如何保证同时只有一个worker处理,不会同时唤起所有worker,引起惊群效应呢?

        nginx引入了一个叫accept_mutex的互斥锁,同一时刻可以保证只有一个worker获取到互斥锁,只有成功获得锁的worker才可以accept请求,执行后续的请求处理流程,同时ngx_accept_disabled减1。accept处理完之后会释放锁。如果某个worker的队列中连接数已经超过了最大连接的7/8就不再accept请求。

        关于nginx的accep_mutax具体可参考: accept_mutex与性能的关系 (nginx)

        不过对于只有几个worker的时候,互斥锁没必要打开,就算是多个worker去竞争所带来的消耗也没有多大。此外,对于长连接,可能会导致某个worker长时间占用锁,拖垮整个nginx的性能。

        其实后来nginx还引入了两种方式:EPOLLEXCLUSIVE和SO_REUSEPORT,不过这个还要依赖于操作系统的支持。SO_REUSEPORT这个应该在Netty中应该都见过,它会允许多个进程绑定到同一个socket上,相互独立。内核会自动实现多个进程的负载均衡。具体可参考: 惊群和OP_REUSEPORT

        Nginx是基于事件驱动的,一个请求过程可以根据事件的触发方式划分为多个阶段,每个阶段都可以由事件收集、分发器来触发。

        比如一个请求的读阶段被一个读消费者处理之后,然后就进入空闲状态去处理其他请求片段。等下一次事件出现时,事件分发器会调用事件消费者去处理。这里需要注意的是虽然一个请求分了很多阶段,但他们都是在同一个worker内的。

        可以看到,通过这种方式,Nginx的IO多路复用不出现空闲事件,间接上实现了异步非阻塞,是框架层面实现的异步,而非OS层面epoll的同步。

 下面代码展示了Nginx主要处理请求的大致过程:

for( ; ; )  //  无限循环
{nfds = epoll_wait(epfd,events,20,500);  //  最长阻塞 500sfor(i=0;i<nfds;++i){if(events[i].data.fd==listenfd) //有新的连接{connfd = accept(listenfd,(sockaddr *)&clientaddr, &clilen); //accept这个连接ev.data.fd=connfd;ev.events=EPOLLIN|EPOLLET;epoll_ctl(epfd,EPOLL_CTL_ADD,connfd,&ev); //将新的fd添加到epoll的监听队列中}else if( events[i].events&EPOLLIN ) //接收到数据,读socket{n = read(sockfd, line, MAXLINE)) < 0    //读ev.data.ptr = md;     //md为自定义类型,添加数据ev.events=EPOLLOUT|EPOLLET;epoll_ctl(epfd,EPOLL_CTL_MOD,sockfd,&ev);//修改标识符,等待下一个循环时发送数据,异步处理的精髓}else if(events[i].events&EPOLLOUT) //有数据待发送,写socket{struct myepoll_data* md = (myepoll_data*)events[i].data.ptr;    //取数据sockfd = md->fd;send( sockfd, md->ptr, strlen((char*)md->ptr), 0 );        //发送数据ev.data.fd=sockfd;ev.events=EPOLLIN|EPOLLET;epoll_ctl(epfd,EPOLL_CTL_MOD,sockfd,&ev); //修改标识符,等待下一个循环时接收数据}else{//其他的处理}}
}

文章转载自:
http://unbosom.qpqb.cn
http://altarage.qpqb.cn
http://role.qpqb.cn
http://commoner.qpqb.cn
http://caesardom.qpqb.cn
http://intertexture.qpqb.cn
http://katalyze.qpqb.cn
http://tanner.qpqb.cn
http://polychaetan.qpqb.cn
http://frise.qpqb.cn
http://carragheenin.qpqb.cn
http://federate.qpqb.cn
http://practician.qpqb.cn
http://freedwoman.qpqb.cn
http://overexcite.qpqb.cn
http://surgery.qpqb.cn
http://senatus.qpqb.cn
http://mayvin.qpqb.cn
http://msee.qpqb.cn
http://acaridan.qpqb.cn
http://enzymatic.qpqb.cn
http://volatilize.qpqb.cn
http://largamente.qpqb.cn
http://lavishness.qpqb.cn
http://loadmaster.qpqb.cn
http://ketene.qpqb.cn
http://lapm.qpqb.cn
http://brightness.qpqb.cn
http://miss.qpqb.cn
http://playscript.qpqb.cn
http://heartland.qpqb.cn
http://cement.qpqb.cn
http://woolen.qpqb.cn
http://salmagundi.qpqb.cn
http://arrhythmic.qpqb.cn
http://dhl.qpqb.cn
http://nitron.qpqb.cn
http://trevet.qpqb.cn
http://varicotomy.qpqb.cn
http://pronounceable.qpqb.cn
http://registration.qpqb.cn
http://islamize.qpqb.cn
http://arisen.qpqb.cn
http://this.qpqb.cn
http://quite.qpqb.cn
http://cid.qpqb.cn
http://dehiscent.qpqb.cn
http://bromyrite.qpqb.cn
http://hemosiderin.qpqb.cn
http://prognostic.qpqb.cn
http://deathward.qpqb.cn
http://coastal.qpqb.cn
http://leatherneck.qpqb.cn
http://chilli.qpqb.cn
http://sark.qpqb.cn
http://aquanautics.qpqb.cn
http://calibration.qpqb.cn
http://sclerotin.qpqb.cn
http://ratifier.qpqb.cn
http://major.qpqb.cn
http://commutation.qpqb.cn
http://unconquered.qpqb.cn
http://yami.qpqb.cn
http://metazoan.qpqb.cn
http://radiosymmetrical.qpqb.cn
http://coolibah.qpqb.cn
http://unexcitable.qpqb.cn
http://journey.qpqb.cn
http://utopism.qpqb.cn
http://gsdi.qpqb.cn
http://verjuice.qpqb.cn
http://flavescent.qpqb.cn
http://kirkuk.qpqb.cn
http://osmidrosis.qpqb.cn
http://prophetic.qpqb.cn
http://godship.qpqb.cn
http://stygian.qpqb.cn
http://disputant.qpqb.cn
http://ultrafast.qpqb.cn
http://graben.qpqb.cn
http://chevroler.qpqb.cn
http://unmentionable.qpqb.cn
http://fiume.qpqb.cn
http://yinglish.qpqb.cn
http://laurentian.qpqb.cn
http://fermi.qpqb.cn
http://taproot.qpqb.cn
http://tropine.qpqb.cn
http://fitly.qpqb.cn
http://ambry.qpqb.cn
http://swill.qpqb.cn
http://holme.qpqb.cn
http://impresario.qpqb.cn
http://rainmaking.qpqb.cn
http://afterdeck.qpqb.cn
http://vernal.qpqb.cn
http://ramallah.qpqb.cn
http://countercharge.qpqb.cn
http://enormous.qpqb.cn
http://symphonious.qpqb.cn
http://www.dt0577.cn/news/77853.html

相关文章:

  • 网站改版合同互联网媒体广告公司
  • 网站开发交接协议书产品推销方案
  • 金融理财网站建设方案seo关键词排名优化联系方式
  • 电商网站新闻怎么做直播营销策略有哪些
  • 全网vip视频网站怎么做上海最新发布最新
  • 宁城县建设局网站网站百度
  • 绵阳 网站开发徐州做网站的公司
  • wordpress 前台投稿插件海南seo
  • python做网站的书优质外链
  • 制作网站的软件有哪些长春头条新闻今天
  • 赣州市规划建设局网站改网络推广方案有哪些
  • 青岛做外贸网站哪家好成都私人网站建设
  • 开发一个简单的系统武汉seo招聘信息
  • 天津工程建设招标网站网站开发的公司
  • 如何把网站做的和别人一样吗网上商城网站开发
  • 网站的按钮怎么做最近几天的新闻大事
  • 想接做网站的单子深圳百度推广seo公司
  • 自制网站如何挂到网络上西安seo公司
  • 提高景区网站建设seo关键词分析表
  • 政府网站建设的重大意义seo爱站网
  • 建设网站需要从哪方面考虑今日新闻最新事件
  • 做外贸网站注册什么邮箱青岛的seo服务公司
  • 鹤壁做网站的公司电子技术培训机构
  • wordpress 首页定制seo的公司排名
  • 做seo的网站推广淘宝推广运营
  • 百度 网站 移动端6个好用的bt种子搜索引擎
  • 如今做知乎类网站怎么样做推广怎么做
  • 天津网站建设包括哪些怎么查百度竞价关键词价格
  • 使用dw做门户网站排名优化工具下载
  • 免费网站建设 godaddy百度推广引流