March 28, 2015
windows下安装rabbitmq的php扩展amqp(原创)
"从php官方下载相应的版本 http://pecl.php.net/package/amqp,我这里使用的是1.4.0版本( http://pecl.php.net/package/amqp/1.4.0/windows) 根据当前使用的php版本选择相应的扩展dll,下载后是一个压缩包,里面有两个dll扩展(php_amqp.dll和rabbitmq.1.dll)。\n我的环境是64位的,php5.5.12.所以使用的是 http://windows.php.net/downloads/pecl/releases/amqp/1.4.0/php_amqp-1.4.0-5.5-ts-vc11-x64.zip\n1.将php_amqp.dll放在php的ext目录里,然后修改php.ini文件,在文件的最后面添加两行\n[amqp\\] extension=php_amqp.dll 2.将rabbitmq.1.dll文件放在php的根目录里(也就是ext目录的父级目录),然后修改apache的httpd.con文件,文件尾部添加一行\nLoadFile …"
March 6, 2015
关于Pull Request的十个建议(转)
"Pull Request是Bitbucket、GitHub等源代码托管系统为了方便开发者之间协作而提供的一个功能,它提供了一个用户友好的Web界面来帮助审查人员进行代码审查。开发人员可以通过GitHub发出Pull Requests要求请求他人将程序拉下来进行代码审查。一个好的Pull Request不仅仅只是代码的事情,还牵涉到代码审查者对代码的审查,所以开发者不仅要写出好的代码,还必须迎合审查者的审查工作,才能给使得自己贡献的代码顺利通过审查并合并到master分支。现对丹麦的程序员、软件架构师、独立顾问Mark Seemann在自己博客中发布的一篇题为《关于Pull Request的十个建议》的文章进行一个全面的整理,以供读者阅读和参考。具体内容如下:\n1. 进行较小的Pull Request 一个小且集中的Pull Request会使得提交的代码更加容易通过审核。据Mark Seemann根据自己的经验透漏,对提交代码进行审查所花费的时间是随着代码大小呈指数增长,而非线性增长;Pull Request多大才合适与Pull Request做了什么相关,最好少于12个文件的改变。如 …"
December 6, 2014
Linux 下添加硬盘/新建分区(fdisk + mkfs.ext4 + mount)
"此教程只供参考,未进行整理!\n使用fdisk命令查看新添加的硬盘\n会看到类似这种页面信息的(说明:这里的图为已经有两个硬盘在使用了, 新添加的硬盘为sdc,尚未使用)\n第一步:添加硬盘/新建分区(fdisk) 第二步:格式化分区(mkfs.ext4) 第三步:加载分区(mount) 1、第一步:添加硬盘/新建分区(fdisk)\na、查看当前系统所有硬盘及分区情况:fdisk -l\nb、在指定的硬盘(例:/dev/sdb)上创建分区:fdisk /dev/sdb , 根据提示进行下一步操作,如:查看帮助(h),新建分区(n),删除分区(d),查看分区情况(p)\nc、分区成功后,写分区表并退出(w)\n注:fdisk 支持硬盘最大尺寸为 2TB,更详细说明请参看 Linux 在线手册(man fdisk)或百度一下。\n2、第二步:格式化分区(mkfs.ext4)\n对新建分区(例:/dev/sdb1)进行格式化:mkfs.ext4 /dev/sdb1 。\n3、第三步:加载分区\na、创建分区挂接目录,例:mkdir /disk-cache-1 和 mkdir /disk-cache-2\nb、 …"
September 14, 2014
使用git-flow来帮助管理git代码
"对git不熟悉的我,经常把git提交搞得很乱,导致在master上有许多无用的commit,最终决定好好地看一下git的使用教程,却不小心发现了还有一个git-flow的工具可以帮助我管理好git项目的代码。\ngit-flow在ubuntu上使用比较简单。首先安装,可以通过apt-get来获取。命令如下:\nsudo apt-get install git-flow\n如果是在windows下,可以参考这篇文章进行安装: http://my.eoe.cn/sunxun/archive/158.html\n如果你的git已经装好,则方便多了,下载下面两个地址的文件,并解压出getopt.exe和libintl3.dll放到git的安装目录的bin目录下。 http://sourceforge.net/projects/gnuwin32/files/util-linux/2.14.1/util-linux-ng-2.14.1-bin.zip/download …"
August 13, 2014
基本调优工具
"一 mpstat – 查看CPU使率信息 vmstat – 报告虚存统计数据 iostat – 报告CPU状态和存储I/O统计数据 netstat – 报告络栈各项参数 ps – 系统上运的进程及其状态 top – 报告占CPU和内存最的进程 sar – 报告系统活动状态 pidstat – 检查具体某个进程的CPU和内存情况 perf – 综合性能检查具\n二 sysctl – 调整内核参数 strace – 跟踪进程的执 dtrace – 综合跟踪具 stap – 综合跟踪具 taskset – 绑定执CPU pmap – 报告进程内存映射信息 free – 报告物理帧和虚拟帧信息 dmesg – 系统启动信息,包括对各设备的监测 /proc – 各项系统参数读写接\n三 /sys – 额外系统参数读写接 iotop – 类似top,但于检测I/O ionice – 类似nice,但于设置进程的I/O优先级 ifcong – 监测与配置络接 tcpdump – 捕获某个络接上的流量 nicstat – 监测卡状态 sysctl – 调整内核参数 strace – …"
August 2, 2014
RabbitMQ中的ack介绍
"no_ack 的用途:确保 message 被 consumer “成功”处理了。这里“成功”的意思是,(在设置了 no_ack=false 的情况下)只要 consumer 手动应答了 Basic.Ack ,就算其“成功”处理了。\n对于ack简单的说就是“消费者”先从queue里读取一条数据,然后去处理,等处理完了,再给queue一个 ack 回应,表示处理完了,这时queue就将这条数据从队列中删除。如果不回应给队列ack的话,则这条消息仍然存在在queue中(这个也属于一种应用场景)。\n在 no_ack=true 的情况下,RabbitMQ 认为 message 一旦被 deliver 出去了,就已被确认了,所以会立即将缓存中的 message 删除。所以在 consumer 异常时会导致消息丢失。\nno_ack=false(此时为 手动应答)\n在这种情况下,要求 consumer 在处理完接收到的 Basic.Deliver + Content-Header + Content-Body 之后才回复 Ack 。而这个 Ack 是 AMQP 协议中的 Basic.Ack 。 …"
August 1, 2014
认识 RabbitMQ 消息队列
"RabbitMQ架构图 rabbitmq 架构图\n基本概念 Broker:简单来说就是消息队列服务器实体。 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 Queue:消息队列载体,每个消息都会被投入到一个或多个队列。 Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。 Routing Key:路由关键字,exchange根据这个关键字进行消息投递。 vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。 producer:消息生产者,就是投递消息的程序。 consumer:消息消费者,就是接受消息的程序。 channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。\n操作流程 (1)客户端连接到消息队列服务器,打开一个channel。 (2)客户端声明一个exchange,并设置相关属性。 (3)客户端声明一个queue,并设置相关属性。 (4)客户端使用routing key,在exchange和queue之间建立好绑定关系。 (5)客户端投 …"
August 1, 2014
将rabbitmq 里的消息持久化
"消息持久设置: 将交换机置为可持久;\n将通道置为可持久\n消息发送时设置可持久。\n当我们“生产”了一条可持久化的消息,尝试中断MQ服务,启动消费者获取消息,消息依然能够恢复。相反,则抛出异常。\n上面三条必须全部设置,不然消息将无法持久化。"
August 1, 2014
rabbitmq 添加远程访问功能
"刚刚安装过的rabbitmq 消息队列,并启用了插件管理功能,3.3.1版中,处于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,其他的IP无法直接使用这个账号。 这对于服务器上没有安装桌面的情况是无法管理维护的,除非通过在前面添加一层代理向外提供服务,这个又有些麻烦了,这里通过配置文件来实现这个功能。\n只要编辑 /etc/rabbitmq/rabbitmq.config 文件,添加以下配置就可以了。\n[ {rabbit, [{tcp_listeners, [5672]}, {loopback_users, [“asdf”]}]} ].\n现在添加了一个新授权用户asdf,可以通过外网使用这个用户名和密码访问.(记得要先用命令添加这个命令才行,#rabbitmqctl add_user asdf pwd123456)我是通过在管理平台里直接添加的用户和密码的,我的测试环境装有桌面的。 参考文档: http://www.rabbitmq.com/access-control.html\n# rabbitmqctl add_user asdf …"
August 1, 2014
【架构】关于RabbitMQ
"1 什么是RabbitMQ? RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然: 单向解耦 双向解耦(如:RPC)\n例如一个日志系统,很容易使用RabbitMQ简化工作量,一个Consumer可以进行消息的正常处理,另一个Consumer负责对消息进行日志记录,只要在程序中指定两个Consumer所监听的queue以相同的方式绑定到同一个exchange即可,剩下的消息分发工作由RabbitMQ完成。\n使用RabbitMQ server需要:\nErLang语言包;\nRabbitMQ安装包;\nRabbitMQ同时提供了java的客户端(一个jar包)。\n2 概念和特性 2.1 交换机(exchange): 1. 接收消息,转发消息到绑定的队列。四种类型:direct, topic, headers and fanout\ndirect:转发消息到routigKey指定的队列\ntopic:按规则转发 …"