php-redis扩展

PS:Redis的客户端实际上担负了通过网络协议与Redis Server进行通信的过程,通信的过程必须遵循协议规范,让客户的调用更加符合特定语言的使用习惯。现有PHP客户端:rediska、phpredis、Predis、Redisent。这些客户端中,有纯PHP的实现方案,也有二进制版本的实现方案。这里我们选择二进制版本的phpreids。

Redis安装部署

Redis安装部署 PS:redis是一个性能非常优秀的内存数据库,通过key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

MySQL数据备份和binlog数据恢复案例分析

PS:MySQL遭到攻击篡改数据,利用从库的备份和主库的Binlog进行不完全恢复!

mysql binlog详解

PS:一般线上MySQL服务器,为了数据存储安全,都会默认开启binlog功能,以便恢复日后服务器故障或者更改删除等误操作的数据,而坏处是binlog日志文件增长速度快,很快会占满磁盘空间,所以对binlog日志文件的处理显得格外重要!

gearman应用-分布式图库系统设计

PS:现有图库系统通过rsync将图片同步到存储上。用户上传图片后,不能做到实时访问(图片要经过网络传输后才能落地)。另外老的系统为每张用户图片存储多种规格,网页改版后还需要重新裁切新规格,造成存储的浪费。多种规格的小图片占用系统大量inode,甚至inode先于磁盘空间被耗尽,剩余空间不能使用。

MySQL Replication(Master与Slave基本原理及配置)

MySQL Replication(Master与Slave基本原理及配置) PS:MySQL主从复制!

Gearman分布式任务处理系统(六)持久化存储

PS:对于队列持久化的问题,是一个值得考虑的问题。持久化必然影响高性能。gearman支持后台工作任务的持久化,支持drizzle、mysql、memcached的持久化。对于client提交的background job,Job server除了将其放在内存队列中进行派发之外,还会将其持久化到外部的持久化队列中。一旦Job server发生问题重启,外部持久化队列中的background job将会被恢复到内存中,参与Job server新的派发当中。这保证了已提交未执行的background job不会由于Job server发生异常而丢失。并且我测试发现如果开启了持久化,那么后台工作任务会先将工作任务写到持久化介质,然后在入内存队列,再执行。非后台工作任务,由于client与job server是保持长连接的状态,如果工作任务执行异常,client可以灵活处理,所以无须持久化。

Gearman分布式任务处理系统(五)通信协议

PS:Gearman工作在TCP上,默认端口为4730,client与job server、worker与job server的通信都基于此tcp的socket连接。client是工作任务的发起者,worker是可以注册处理函数的工作任务执行者,job server为工作的调度者。

Gearman-PHP扩展源码编译

PS:Gearman-PHP扩展源码编译过程

Gearman分布式任务处理系统(四)Gearmand源码编译

PS:Gearmand源码编译过程