分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]
  [文章作者:张宴 本文版本:v1.0 最后修改:2010.06.29 转载请注明原文链接:http://blog.zyan.cc/httpsqs_1_3/]

  HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。

  项目网址http://code.google.com/p/httpsqs/
  使用文档http://blog.zyan.cc/httpsqs/
  使用环境:Linux(同时支持32位、64位操作系统,推荐使用64位操作系统)
  软件作者:张宴

  队列(Queue)又称先进先出表(First In First Out),即先进入队列的元素,先从队列中取出。加入元素的一头叫“队头”,取出元素的一头叫“队尾”。利用消息队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取消息队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。

  HTTPSQS 具有以下特征:

  ● 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。
  ● 非常快速,入队列、出队列速度超过10000次/秒。
  ● 高并发,支持上万的并发连接,C10K不成问题。
  ● 支持多队列。
  ● 单个队列支持的最大队列数量高达10亿条。
  ● 低内存消耗,海量数据存储,存储几十GB的数据只需不到100MB的物理内存缓冲区。
  ● 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。
  ● 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。
  ● 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
  ● 查看队列内容时,支持多字符集编码。
  ● 源代码不超过800行,适合二次开发。



  HTTPSQS 1.3 版本增加的功能:

  1、服务器端:

  ● 增加了重要功能:定时将内存缓冲区内容写到磁盘的功能。
  HTTPSQS 1.2 及以前的版本,只有当内存缓冲区满的时候,才将内存中的内容写到磁盘,如果这期间服务器宕机,将导致一部分数据丢失。从 1.3 版本开始,支持了定时(默认5秒钟/次)将内存缓冲区内容同步到磁盘的功能,可以在启动 HTTPSQS 时使用“-s <second>”参数设置同步间隔。在 HTTPSQS 运行过程中,可以通过浏览器访问“http://host:port/?name=your_queue_name&opt=synctime&num=间隔秒数”来实时修改同步间隔,无需重启。

  ● 增加了辅助功能:以JSON格式查看队列状态。
  原有的查询队列状态功能“http://host:port/?name=your_queue_name&opt=status”,适合通过浏览器访问,人工查看,不便于程序处理。新增加的功能“http://host:port/?name=your_queue_name&opt=status_json”,以JSON格式输出队列状态信息,便于客户端程序进行处理,输出的格式示例如下:
{"name":"xoyo","maxqueue":1000000,"putpos":4562,"putlap":2,"getpos":900045,"getlap":1,"unread":104517}


  ● 增加了以下四项启动参数:
-s <second> 同步内存缓冲区内容到磁盘的间隔秒数(默认值:5)
-c <num> 内存中缓存的最大非叶子节点数(默认值:10000)
-m <size> 数据库内存缓存大小,单位:MB(默认值:100)
-i <file> 保存进程PID到文件中(默认值:/tmp/httpsqs.pid)


  2、客户端:

  ● PHP客户端Class增加了Keep-alive长连接断线自动检测、自动重连功能,PHP客服端守护进程从HTTPSQS读取数据时,不用考虑连接异常断开处理。非常适合PHP客服端作为守护进程,从队列GET读取数据,或者批量往队列中写入数据的应用。

  ● PHP客户端Class增加了函数$httpsqs->status_json($host, $port, $charset, $name);、$httpsqs->synctime($host, $port, $charset, $name, $num);、$httpsqs->pstatus_json($host, $port, $charset, $name);、$httpsqs->psynctime($host, $port, $charset, $name, $num);,详细使用说明请见:http://blog.zyan.cc/httpsqs/



  HTTPSQS 1.1/1.2 版本如何升级到 HTTPSQS 1.2 版本:

  ●服务器端版本完全兼容:编译安装 HTTPSQS 1.3,替换 HTTPSQS 1.1/1.2,然后“kill httpsqs的进程ID”,按原来的启动参数启动 HTTPSQS 即可,数据完全兼容。

  ●客户端版本完全兼容:HTTPSQS 1.3 版本的PHP客户端,仍可以直接操作 HTTPSQS 1.1/1.2。两个版本的PHP客户端函数使用方式、参数相同,1.3 版本的PHP客户端与 1.2 版本相比,增加了status_json()、synctime()、pstatus_json()、psynctime()四个函数。



  HTTPSQS 的生产环境应用:

  ●金山通行证(https://my.xoyo.com
  队列应用类型:手机短信上行、手机短信下发、邮件下发
  队列应用要求:稳定性高,存储数据量大
  队列部署结构:一主、一备两台 HTTPSQS 热备模式

  ●金山用户行为分析系统(http://kbi.xoyo.com
  队列应用类型:用户鼠标点击、访问URL原始数据采集
  队列应用要求:并发性能高,存储数据量大
  队列部署结构:多台 HTTPSQS 应用层哈希分布式模式

  ●金山逍遥网站内搜索
  队列应用类型:索引准实时更新。在金山游戏官网中,新闻、论坛帖子、客服公告、SNS社区等发生的增、删、改操作,文本内容实时写入HTTPSQS队列,全站搜索引擎增量索引准实时(1分钟内)更新的数据源取自HTTPSQS。

  ●金山逍遥网全站通用评论系统
  队列应用类型:评论发表

  ●金山《剑侠情缘》电视连续剧四大角色人物选秀活动(http://zt.xoyo.com/haixuan/
  队列应用类型:用户上传的照片异步裁剪、缩放处理

  ●新浪邮箱(http://mail.sina.com.cn
  队列应用类型:用户登陆日志记录



  HTTPSQS 1.3 版本的详细使用说明,请访问: http://blog.zyan.cc/httpsqs/

  CentOS 5.4 Linux 下的 PHP(FastCGI) 需要连接相关部门的SQL Server 2000数据库,配置了扩展FreeTDS扩展。

  1、编译安装FreeTDS
mkdir -p /data0/software/
cd /data0/software/
wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar zxvf freetds-stable.tgz
cd freetds-0.82/
./configure --prefix=/usr/local/webserver/freetds --with-tdsver=8.0 --enable-msdblib
make && make install
cd ../

echo "/usr/local/webserver/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
ln -s /usr/local/webserver/freetds/lib/libsybdb.so.5.0.0 /usr/local/webserver/freetds/lib/libsybdb.so.4
/sbin/ldconfig

rm -f /usr/local/webserver/freetds/etc/freetds.conf
vi /usr/local/webserver/freetds/etc/freetds.conf

  输入以下内容:
引用
[global]
        # TDS protocol version
;       tds version = 4.2

        # Whether to write a TDSDUMP file for diagnostic purposes
        # (setting this to /tmp is insecure on a multi-user system)
;       dump file = /tmp/freetds.log
;       debug flags = 0xffff

        # Command and connection timeouts
;       timeout = 10
;       connect timeout = 10

        # If you get out-of-memory errors, it may mean that your client
        # is trying to allocate a huge buffer for a TEXT field.
        # Try setting 'text size' to a more reasonable limit
        text size = 64512

        host = mssql.yourdomain.com
        port = 1433
        tds version = 8.0
        client charset = UTF-8


  2、编译安装PHP自带MSSQL扩展
  进入本地已存在的php-5.2.XX源码包目录:
cd /data0/software/php-5.2.XX/ext/mssql/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/webserver/freetds/
make && make install


  3、在php.ini配置文件中增加mssql.so
vi /usr/local/webserver/php/etc/php.ini

  增加一行:
引用
extension = "mssql.so"


  4、重启PHP FastCGI
/usr/local/webserver/php/sbin/php-fpm restart


  5、测试文件(test_mssql.php):
  职位名称:金山游戏KSG-逍遥网系统工程师
  所属部门:KSG-逍遥网XOYO
  招聘人数:2人
  工作地点:北京金山软件大厦
  相关描述:http://job.kingsoft.com/intro.php?id=372

  工作职责:
  1、Linux/Unix 服务器安装、配置、调优;
  2、常用环境搭建,如:apache、php、mysql、nginx、memcache、svn、vpn、iSCSI等;
  3、系统脚本编写,数据统计;
  4、配合逍遥网动态应用云计算架构平台开发。

  任职资格:
  1、熟悉网络理论(如OSI七层模型,TCP状态机),网络协议(TCP/IP)等;
  2、熟悉各种网络设备的配置调试及故障分析;
  3、熟悉UNIX系统,具备一定的语言开发能力(Perl,PHP,C,shell等)及相关开发工作经验;
  4、有大型社区网站运维经验者优先,熟悉分布式架构;
  5、愿意积极主动的思考如何把工作做好;
  6、有团队合作精神,能够承受较大的工作压力。

  简历请发至 zhangyan2[at]kingsoft.com(发邮件时[at]请改成@) 或 hr@kingsoft.com(如投给hr邮箱,邮件主题请包含关键词“系统工程师”,便于邮件自动识别分发)



  职位名称:金山游戏KSG-逍遥网PHP工程师
  所属部门:KSG-逍遥网XOYO
  招聘人数:4人
  工作地点:北京金山软件大厦
  相关描述:http://job.kingsoft.com/intro.php?id=494

  工作职责:
  1、熟悉apache+php5 + mysql 开发,1年以上开发经验;
  2、有PHP主流框架的使用经验,能自己写一套MVC框架更佳;
  3、熟悉各种设计模式,并能应用在开发当中;
  4、熟悉json+AJAX技术和模板技术,了解css+div和JavaScript;
  5、熟悉Apache、MySQL和Linux的日常管理和维护,熟悉分布式架构;
  6、有Linux下C语言开发经验者优先;
  7、具有文档编写能力,面向对象的编程思想,优良的编程风格和习惯;
  8、较强的团队协作能力、沟通能力和学习能力。

  任职资格:
  1、1年及以上PHP web应用程序开发;
  2、熟练使用CSS,HTML,javascript;
  3、扎实的SQL知识,熟练使用MySQL;
  4、良好的SQL ,PL/SQL编程技巧,有在Mysql下的编程;
  5、具有出色的独立工作能力及团队合作精神。

  简历请发至 zhangyan2[at]kingsoft.com(发邮件时[at]请改成@) 或 hr@kingsoft.com(如投给hr邮箱,邮件主题请包含关键词“PHP”,便于邮件自动识别分发)



  金山软件公司

  金山软件公司,自1989年第一款办公软件产品WPS1.0投放市场以来,目前已经成为中国最知名的软件企业之一,是中国领先的应用软件产品和互联网服务供应商。

  金山软件在珠海、北京、成都、大连、深圳五地分设研发中心,2005年成立日本合资公司。公司目前主要涉及软件和网游两大核心业务,创造了金山词霸、WPS Office、金山毒霸、剑侠情缘、封神榜等众多知名产品。

  2007年10月9日,金山软件在香港联交所主板成功上市,股份编号3888。

  金山在不断成长的20年中,经历了岁月的洗礼与沉淀。一直以来,金山执着于对技术的创新,在2000多名公司员工中,从事研发相关工作的人员超过总体的60%。因为坚持的奋斗与努力,金山人相信,创造出世界上一流的软件产品、创造一家世界一流的软件公司、让我们的软件运行在每一台电脑上,都一定是可以实现的梦想。

  金山游戏

  金山从1995年开始进入游戏产业,成立珠海西山居工作室。1996年之后,《中关村启示录》、《剑侠情缘》、《朝鲜战争》等单机游戏陆续发布。2003年,金山进入网游产业,做植根于中华文化的网游产品。同年西山居工作室推出首款网游《剑侠情缘网络版》并大获成功。

  2004年,金山游戏业务开始飞速发展,陆续成立烈火、亚丁等工作室,并推出《封神榜》、《春秋Q传》等系列产品。与此同时,《剑侠情缘网络版》首度进军台湾、马来西亚等海外市场。2005年6月《剑侠情缘网络版》登陆越南,迅速占领越南网游80%市场份额。

  2009年,金山游戏(之前网游事业部)作为独立公司运营,简称“KSG”。如今,金山游戏主要面向计算机游戏和数字电视娱乐产业,是集自主研发和独立运营于一体的中国最知名的数字娱乐产品和服务供货商之一,代表作品包括:剑侠情缘系列、封神榜系列等,其中“剑侠系列”游戏被誉为“中国原创武侠游戏第一品牌”。目前,金山游戏产品注册人数超过1亿4千万。

  金山游戏拥有员工超过1200人,由研发和运营两大体系构成,设有西山居、烈火、亚丁、鲸彩、上水轩、七尘斋六大游戏工作室,主要从事大型MMO游戏自主研发,并且控股多家游戏工作室,同时运营超过10款大型MMO游戏。金山游戏运营中心设有网游运营、业务发展、业务拓展、市场、区域营销、运维、客户服务等相关运营体系,服务于亿万用户;同时,在全国七大片区设立20多个分公司和办事处,覆盖了全国渠道网络。

  金山逍遥Xoyo.com

  金山逍遥Xoyo.com是金山游戏官方网站,为金山旗下的各款游戏产品提供网络营销服务,包括金山公司网游介绍、客户服务、在线充值、玩家社区等内容建设和在线服务支持。

  作为金山游戏未来发展战略中的重要组成部分,金山逍遥Xoyo.com致力于发挥网络营销多途径、低成本的优势,帮助公司打造各工作室与产品品牌,降低整体营销成本;同时以“吸引新用户、服务老用户”为目标,为金山游戏用户提供高品质的服务。
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]