课程咨询 :13623629309

太原PHP培训 > 达内新闻 > 太原php培训:一分钟让你的程序支持队列和并发
  • 太原php培训:一分钟让你的程序支持队列和并发

    发布:太原PHP培训      来源:伯乐在线      时间:2016-09-22

  • 工作了的开发同学想必都会给运营、产品等同事跑过数据。在豆瓣,基本每个工程师都在用DPark,原理就是把任务拆分,利用DPark集群,在多台服务器上同时运行这些任务可以快速的获得结果。但是有些需求不能使用DPark,比如有频繁的数据库操作,想象一下,一跑起来就会出现大量集群的进程连接数据库,让数据库压力骤增,甚至影响现有服务;

    有些需求用DPark有点杀鸡用了宰牛刀的感觉,占用了DPark集群资源,但是不用的话,跑一次任务就得几十分钟;如果酱厂外的同学也想这么爽,或者我们在没有DPark环境的地方(如本地)跑,怎么达到这个目的呢?有点常识的同学马上说,你这机器上是多核CPU么?是的话,多进程呗。对,确实这样会有非常明显的速度的提高,但是你充分利用了多进程的并发了么?

    为啥这么说呢?假设你有1w个小任务,要在一个16核CPU的服务器运行,把任务按某种条件hash之后取16的余数分配给对应的进程,这是不是效率可以提升到单进程的16倍呢?大部分场景下达不到,因为任务不均衡,也就是任务完成的时间是最后一个完成其全部任务的进程结束决定的,也就是那个短板,在它没有完成前,剩下的那15个进程都是闲着,看着它,那这段时间就是没有充分利用。

    更有经验的人说,可以使用队列啊。这也是对的,我们把这1w个任务都丢给这个队列,这16个进程执行完就从队列中取,这样就充分利用了吧?确实。我们再深入一下,有些任务是相对独立的,比如写文件,1w个任务写1w个文件,大家互不相关,上述解法够用。但是很多时候执行完任务需要反馈(也就是要执行的结果),这就是还需要额外一个队列或者带锁的全局变量之类的东西存储这个中间值,不要笑我,之前还用SQLite之类的数据库存过这种中间结果,等全部完成后再从数据库把这些结果整理合并。

    还要考虑程序的通用性,考虑多进程之间如何良好的通信… 无论是新手还是老手都好烦啊。

    达内时代科技集团致力于培养面向电信和金融领域JavaC++C#/.Net3G/Android3G/IOSPHP、嵌入式、软件测试、UID、网络营销、网络工程、会计、UEDwebUnity3D、大数据、童程童美等17大方向中高端软件人才课程与少儿教育课程。选择太原php培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!想找工作的求职者可以加QQ3373924515(太原达内就业服务部)咨询了解。

上一篇:太原php培训班:网络直播乱象频出,人工智能是解决之道吗?

下一篇:太原php培训机构:一分钟让你的程序支持队列和并发(2)

最新开班日期  |  更多

php高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-29

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-29

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-29

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-29

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56