Java使用starling分布式消息队列异步处理事务
来源:互联网 发布:php采集微信文章 编辑:程序博客网 时间:2024/05/10 02:31
介绍:
Starling是一个支持MemCache协议的轻量级持久化服务器。Starling是让创建网络访问队列或者多个队列异常简单,也就是说多点和多台机器间的异步工作进程。它是著名微博客网站Twitter开发用来处理大量的队列消息,以及保持服务的响应。Starling已经在生产环境中使用,不仅是Twitter在使用,FiveRuns同样在使用。FiveRuns甚至还根据自己的应用做了改进 ,他们认为网站速度快了很多.
这是一个支持memcache协议的轻量级持久化服务器,因此使用php/perl/ruby/java等多种客户端都没问题,可以将较慢的处理逻辑通过消息队列放在后台处理,同时也支持多点分布式处理。
由于starling是目前twitter在生产环境中运行的,经过实践检验过,稳定性应该不成问题。
安装:
1.安装linux下的开发工具包,最好使用red hat的添加删除程序安装.
(1)在可视化窗口下载打开"添加删除程序",找到"开发->开发工具"打钩,更新.插入 对应的linux安装盘.
2.安装ruby和ruby gem
(1)安装钱的准备
检查系统是否已经安装了 ruby,
#rpm -qa | egrep '(ruby)|(irb)'
如果已安装,而且不是你所要的版本,则需要先卸载她,如,
#rpm -e ruby-docs-1.8.1-7.EL4.2 /
ruby-1.8.1-7.EL4.2 /
irb-1.8.1-7.EL4.2 /
ruby-libs-1.8.1-7.EL4.2 /
ruby-mode-1.8.1-7.EL4.2 /
ruby-tcltk-1.8.1-7.EL4.2 /
ruby-devel-1.8.1-7.EL4.2
(2)安装 Ruby
假设 Ruby 安装到 /usr/local/ruby
#mkdir /usr/local/ruby
#tar -zxvf ruby-1.8.4.tar.gz
#cd ruby-1.8.4
#./configure --prefix=/usr/local/ruby
#make
#make install
(3)设置路径
#vi /etc/profile
在该文件中加入,
RUBY_HOME=/usr/local/ruby
PATH=$PATH:$RUBY_HOME/bin
export RUBY_HOME PATH
(4)检查是否安装成功
重新登录,
#ruby -v
如果能显示 ruby 的版本信息(ruby 1.8.4 (2005-12-24) [i686-linux]),则说明已安装成功。
(5)安装 Ruby Gems
#tar -zxvf rubygems-0.9.0.tgz
#cd rubygems-0.9.0
#ruby setup.rb
(6)检查是否安装成功
#gem -v
如果能显示 gem 的版本信息(0.9.0),则说明已安装成功。
3.安装和运行 Starling
(1)输入gem install memcache-client starling命令,自动安装starling.
(2)输入#starling --help检查是否安装成功,输出帮助信息及安装成功.
(3)启动Starling
#starling -h 0.0.0.0 -d -p 22122
#netstat –lnp
编写Java客户端程序:
java客户端将使用,XMemcached作为memcache的client. XMemcached是一个基于java nio的memcached客户端。具有速度快,支持分布式访问多个memcached服务的特点.
1.下载XMemcached http://xmemcached.googlecode.com/files/xmemcached-1.2.0-stable-include-dependencies.zip
2.把下载的zip解压,把里面的jar包都加到一个java项目的classpath中,还需要额外增加一个log4j的包,不然会报错.
3.写一个放数据和一个取出数据的类
=============放数据============================
public class SetQueueTest {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//连接starling
//XMemcachedClient是线程安全的,可以被多线程使用
XMemcachedClient client= new XMemcachedClient("192.168.4.243", 22122);
while(true){
//存储操作
if (!client.set("hello", 0, "dennis"+System.currentTimeMillis())){
System.err.println("set error");
}
else{
System.out.println("ok");
}
Thread.sleep(2);
}
}
}
=============取数据==================
public class GetQueueTest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//连接starling
//XMemcachedClient是线程安全的,可以被多线程使用
XMemcachedClient client= new XMemcachedClient("192.168.4.243", 22122);
//存储操作
while(true){
String name=(String)client.get("hello");
//如果队列中已经没有数据了,休息一下再试
if(name==null){
Thread.sleep(5);
continue;
}
System.out.println(name);
}
}
}
性能测试
这是别人用php测试的结果,仅供参考.
测试条件:
key的长度16B
value的长度100B,
8个并发写入进程
每个进程插入10,000条记录
平均每个进程花了7秒完成写入操作,那么照这样计算:
10000 * 8 / 7 = 每秒写入11428次
- Java使用starling分布式消息队列异步处理事务
- Java使用starling分布式消息队列异步处理事务
- Java使用starling分布式消息队列异步处理事务
- 使用消息队列实现分布式事务
- 基于消息队列和消息应用状态处理分布式事务
- 消息队列实现分布式事务
- 使用事件和消息队列实现分布式事务
- 使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案(三)
- 使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案
- 使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案(三)
- Java 异步消息处理
- Java 异步消息处理
- java之异步消息队列
- 分布式之分布式事务的消息队列模式实现
- 消息中间件mq处理分布式事务
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
- Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
- oracle临时表的用法总结
- Bbossgroups 正则表达式工具类使用介绍
- Struts2 + jquey.uploadify 实现无刷新带进度条上传
- VFP视频第一季上传
- Tomcat与Apache集成
- Java使用starling分布式消息队列异步处理事务
- 硬盘安装UBUNTU 9.10
- BBlean最初级的入门教程(纯文字) 【转自:深度技术论坛】
- sun virtualbox:配置双网卡实现本机对虚拟机的访问
- 大话Cassandra数据模型
- I/O流(java如何实现与外界数据的交流)
- 基于Cassandra搭建简单Blog程序后台
- 多线程技术学习(一)
- PLSQL基础知识点总结