swoole_process应用之master-worker-tasker

年初时候为了给其他部门推送数据,所以利用swoole_process开发了一个数据推送的服务。最近发觉好些童鞋都需要开发类似功能的东西,PHP大会休息时间Rango也被问了同样的东西,所以就聊聊我们这边的这个服务吧。自我感觉功能和进程模型做的挺不错。 不多说,先上图,然后对着图慢慢解释 从上面的图来看,从功能上来看分为3种进程,分别为master、worker、tasker进程,很熟悉吧,swoole的server模型就是这样的。接下来分别说说每种进程是怎么工作的。 Mast

swoole_process之进程间通信

博客好久没更新了,这大半年来主要精力放在了折腾swoole上,公司项目也上线了几个swoole的服务于中间件,最近马上也要上线一个中间件。swoole_server、swoole_process等都用的比较多了,现在就来慢慢总结。 从 swoole_process文档 中可以看出,swoole_process进程间支持3种通信方式: 1、管道pipe 2、IPC msgqueue 3、信号 接下来就详细介绍下每一种通信的原理以及实现。 1、管道pipe 关于管道文档中是

记一次服务器性能瓶颈排查

从昨天开始发觉自己香港的机器负载很高,昨天比较忙,没搭理它,今早来看负载已经到20+了,我的机器12核的,发觉不行了,得查一下 先用top然后看到每个核的us其实很小,但是wa很高导致load到了20+,首先想到的就是硬盘的问题 从上面的图种看到,CPU的0号核最明显,18.1%的us,idle为0,而wa已经到80.6%了 接下来就是查看硬盘瞬时的写入和读取的量有多大,使用命令dstat后就是下图数据 这个命令看到了每一秒的cpu的负载,硬盘的读取与写入的数据量,网络的

减小innodb数据文件ibdata1

自己的vps上的mysql安装的是5.5版本,并且使用的innodb引擎,使用了一段时间后发觉硬盘占用很吓人,一顿 du -sh * 后看到是mysql的ibdata1文件居然30G+,瞬间差异了,哪来的那么多数据,然后仔细查了下各个库,总共都才6G的数据,怎么可能占了30G,然后网上找了下资料才知道ibdata1在删除表的数据的时候提及也不会减少,所以才会涨的这么大,下面就是解决的步骤,我的系统是Centos 6.4 64bit。 首先先把数据里的文件导出来 mysql

RFC1867文件上传的实现

文件上传是这个很普遍的问题,图片上传到网络相册、网盘上传文件、文章附带图片上传等都涉及到文件的上传。在写代码的时候各种编程语言都封装好了上传的操作,程序员操作起来也很简单,但是这样也就造成了很多人只懂操作,不知道原理。 前段时间搞小文件存储系统的时候,涉及到一个问题,就是关于文件上传的实现。我的提供了对外下载并存储的服务,意思就是接口接收一个外部图片的链接,比如:http://pic.5442.com/2013/0328/10/19.jpg 这个是别人网站的一个图片,如果它用

PHP7的HashTable实现

PHP开发的主干已经切换到大版本7了,这个版本Zend引擎改变很大,可以说是一个全新的版本,因此新的Zend引擎被命名为NG。在这个大版本中变量以及hash表变动也很大。所以在这里把自己的学习过程和成果记录下来,毕竟好记性不如烂笔头啊。 数据结构 HashTable的结构定义在Zend/zend_types.h,之前的php版本中被定义在Zend/Zend_hash.h文件中。 HashTable中的每一个元素都被保存在一个Bucket结构中,新的结构定义如下: typed

cc和抓取的防御方法

最近个人站被一SB给爬了,之前没发现,都爬了几个月了。之所以是SB就是拿着个火车头就认为自己爬遍网络无阻拦了。记录一下最近对防抓的研究和理解 防抓可以分为主动和被动,主动被动是对于网站来说的。下面的策略都得先过滤掉蜘蛛 被动防御 1.统计单位时间内单个IP的访问次数 2.统计单位时间内单个UA的访问次数(针对火车头) 主动防御 1.302跳转 2.js跳转 3.cookie验证 前两个没啥好说的,很简单的,着重说一下后面三个的实现方式 302跳

分布式小文件系统fastdfs与weedfs的对比

最近拿一台双核1G的kvm vps搭建了一个图片的服务器,前面用百度云加速扛着,有了个专业图片存储及CDN的样子。每天还是有50W左右的PV,流量在30G左右。总结一下最近接触过的两个分布式小文件系统weedfs和fastdfs。 fastdfs的详细介绍看这里=》传送门 weedfs官方地址=>传送门 在两个系统中都有一个负责管理存储节点或者存储卷的服务,weedfs中叫master,而fastdfs中叫做tracker。下面是在文档中对各自的master的解释 Fas

图片存储下载系统(openresty+ttserver+fastdfs)

先说说这个系统是咋么回事。这个系统有两个接口: 第一个接口是图片链接上传接口,抓取脚本抓取到别人的图片链接后,直接将图片链接上传到这里,然后这个接口将链接生成一个16位的码,然后以这个码为key,图片原始链接为value存入ttserver中,然后将码返回给客户端,客户端下次就用这个码拼接图片链接来访问本张图片 第二个就是图片访问接口了,用拼接好的链接来访问图片,首先会用这个16位的码在ttserver中有没有存本码对应的fastdfs的访问链接,有的话直接返回图片内容;没

Jenkins hash

http://en.wikipedia.org/wiki/Jenkins_hash_function http://burtleburtle.net/bob/hash/integer.html http://cool.sinaapp.com/?p=460