消息队列中间件选型
推荐使用ZeroMQ
ZeroMQ:号称最快最轻量级的消息队列系统,尤其是大吞吐量的需求场景。专门为高吞吐量/低延迟的场景开发,金融项目使用比较多。
MSMQ:微软集成的消息队列,寄宿在Window服务里,性能稳定,优于ActiveMQ,但是无法跨平台,。
ActiveMQ:类似于ZemoMQ,跨平台,它易于实现高级场景,而且只需付出低消耗,它可以部署于代理模式和P2P模式,ActiveMQ被誉为Java世界的中坚力量,但是跑不过MSMQ,需要安装Java环境。
Redis:是一个Key-Value的NoSQL数据库,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用,Redis数据大小超过了10K,Redis则慢的无法忍受,出队时无论数据大小,Redis都表现出非常好的性能。
MemcacheQ:持久化消息队列,轻量级的消息队列
1 简单易用,处理速度快
2 多条队列,并发性能好
5 与memcache的协议兼容。只要装了memcache的extension就可以,不用额外的插件。
6 在zend framework中使用也很方便。
关于多线程同步
线程同步目的:解决因线程不同步而对数据造成破坏的问题。
如:一个类中有一个成员变量A和多个线程,如果线程不同步的话,这两个线程有可能同时访问同一个变量A,这样的话,就会出现问题,最后执的结果A到底是几呢,这时就需要使用多线程同步来解决问题。
线程同步后:线程1访问A变量,会加锁(监视器),访问结束后才会去掉锁。