您的位置:首页 > 运维架构 > Linux

消息中间件学习笔记系列--1

2014-08-20 17:02 197 查看
消息中间件
简介

主要以开发和架构师的角度消息中间件(会用代码的方式连消息中间件) 消息中间件是在消息的传输过程中保存消息的容器。

互联网消息中间件应用场景

1. 用户注册异步处理案例(即网站用户注册)(使用推消息模型、拉消息模型都可以)
网站用户注册,注册成功后会过一会发送邮件确认或者短信。 2. 日志分析使用案例(使用推消息模型、拉消息模型都可以)
把日志进行集中收集,用于计算PV、用户行为分析。 3.数据复制案例
1)将数据从源头复制到多个目的地,一般是要求顺序或者保证因果序列;
2)用于跨机房数据传输、搜索、离线数据计算等。
4. 延迟消息发送和暂存案例(使用拉消息模型比较好)
1)把消息中间件当成可靠的消息暂存地;
2)定时进行消息传递,比如模拟用户秒杀访问,进行系统性能压测。

5. 消息广播案例(使用推消息模型比较好)
1) 缓存数据同步更新;
2) 往应用推送数据。

消息中间件分类

(push)推消息模型:消息生产者将消息发送给消息传递服务,消息传递服务又将消息推给消息消费者。
(pull)拉消息模型:消费者请求消息服务接收消息,消息生产者从消息中间件拉该消息。(一般适合点对点模型)
注:1)服务端指的是消息中间件; 2)客户端可以理解为消息的消费者。
中间件实战 1. metaq简介(属于拉消息模型)
2.Metaq安装步骤:

1) 安装Java运行环境(即安装JDK);
2) 安装配置Zookeeper;
[root@test1 q-soft]# pwd /home/renyongbin/q-soft [root@test1 q-soft]# ll total 31284 -rw-r--r--. 1 root root 14540 Nov 5 2012epel-release-6-8.noarch.rpm -rw-r--r--. 1 root root 14312618 Jun 30 02:22 metaq-server-1.4.6.2.tar.gz -rw-r--r--.1 root root 17699306 Jun 30 02:10zookeeper-3.4.6.tar.gz [root@test1 q-soft]# mkdir zk1 zk2 zk3 [root@test1q-soft]# lsepel-release-6-8.noarch.rpm zk1 zk3 metaq-server-1.4.6.2.tar.gz zk2 zookeeper-3.4.6.tar.gz[root@test1q-soft]# cp zookeeper-3.4.6.tar.gz zk1[root@test1q-soft]# cd zk1[root@test1zk1]# tar zxvf zookeeper-3.4.6.tar.gz[root@test1 zk1]# lszookeeper-3.4.6 zookeeper-3.4.6.tar.gz[root@test1zk1]# cd zookeeper-3.4.6[root@test1 zookeeper-3.4.6]# pwd/home/renyongbin/q-soft/zk1/zookeeper-3.4.6[root@test1zookeeper-3.4.6]# mkdir dataDir dataLogDir (dataDir用于存放数据文件,dataLogDir用于存放日志文件)[root@test1zookeeper-3.4.6]# cd conf[root@test1conf]# mv zoo_sample.cfg zoo.cfg[root@test1 conf]# pwd/home/renyongbin/q-soft/zk1/zookeeper-3.4.6/conf[root@test1conf]# cat zoo.cfg 修改第12行的路径,并且在其下面增加日志路径相关配置文件,在第15行(即clientPort=2181下面)下面增加如下配置(红色标识部分): 1# The number of milliseconds of each tick 2tickTime=2000 3 #The number of ticks that the initial 4 #synchronization phase can take 5 initLimit=10 6 #The number of ticks that can pass between 7 #sending a request and getting an acknowledgement 8syncLimit=5 9 #the directory where the snapshot is stored. 10 #do not use /tmp for storage, /tmp here is just 11 #example sakes. 12dataDir=/home/renyongbin/q-soft/zk1/zookeeper-3.4.6/dataDir 13dataLogDir=/home/renyongbin/q-soft/zk1/zookeeper-3.4.6/dataDir14 # theport at which the clients will connect 15clientPort=218116 server.1=127.0.0.1:8880:777017 server.2=127.0.0.1:8881:777118 server.3=127.0.0.1:8882:7772[root@test1 conf]# cd ..[root@test1 zookeeper-3.4.6]# pwd/home/renyongbin/q-soft/zk1/zookeeper-3.4.6[root@test1 zookeeper-3.4.6]# cd ..[root@test1 zk1]# pwd/home/renyongbin/q-soft/zk1[root@test1 zk1]# cp -rf zookeeper-3.4.6/home/renyongbin/q-soft/zk2/[root@test1 zk1]# cp -rf zookeeper-3.4.6/home/renyongbin/q-soft/zk3/[root@test1 zk1]# cd ..[root@test1 q-soft]# pwd/home/renyongbin/q-soft[root@test1 q-soft]# cd zk2/[root@test1 zk2]# lszookeeper-3.4.6[root@test1 zk2]# cd zookeeper-3.4.6/[root@test1 zookeeper-3.4.6]# cd dataDir/[root@test1 dataDir]# lsmyid zoo.cfg[root@test1 dataDir]# vim myid [root@test1 dataDir]# cat myid 2[root@test1 dataDir]# cd ..[root@test1 zookeeper-3.4.6]# cd conf[root@test1 conf]# vim zoo.cfg [root@test1 conf]# cat zoo.cfg (红色部分是修改后的)# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/home/renyongbin/q-soft/zk2/zookeeper-3.4.6/dataDirdataLogDir=/home/renyongbin/q-soft/zk2/zookeeper-3.4.6/dataDir# the port at which the clients will connectclientPort=2182server.1=127.0.0.1:8880:7770server.2=127.0.0.1:8881:7771server.3=127.0.0.1:8882:7772 [root@test1 conf]#cd ..
[root@test1 zookeeper-3.4.6]# cd ..[root@test1 zk2]# cd ..[root@test1 q-soft]# pwd/home/renyongbin/q-soft[root@test1 q-soft]# cd zk3[root@test1 zk3]# pwd/home/renyongbin/q-soft/zk3[root@test1 q-soft]# cd zk3[root@test1 zk3]# pwd/home/renyongbin/q-soft/zk3[root@test1 zk3]# cd zookeeper-3.4.6/[root@test1 zookeeper-3.4.6]# cd dataDir/[root@test1 dataDir]# vim myid [root@test1 dataDir]# cat myid 3 [root@test1dataDir]# cd ..
[root@test1 zookeeper-3.4.6]# cd conf[root@test1 conf]# vim zoo.cfg [root@test1 conf]# cat zoo.cfg (红色部分为修改后的)# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between# sending a request and getting anacknowledgementsyncLimit=5# the directory where the snapshot isstored.# do not use /tmp for storage, /tmp here isjust # example sakes.dataDir=/home/renyongbin/q-soft/zk3/zookeeper-3.4.6/dataDirdataLogDir=/home/renyongbin/q-soft/zk3/zookeeper-3.4.6/dataDir# the port at which the clients willconnectclientPort=2183server.1=127.0.0.1:8880:7770server.2=127.0.0.1:8881:7771server.3=127.0.0.1:8882:7772 [root@test1 conf]#cd ..
[root@test1 zookeeper-3.4.6]# cd bin[root@test1 bin]# pwd/home/renyongbin/q-soft/zk3/zookeeper-3.4.6/bin [root@test1 bin]#ls
README.txt zkCleanup.sh zkCliNaNd zkCli.sh zkEnvNaNd zkEnv.sh zkServerNaNd zkServer.sh 开始启动zookeeper:
Zk3:
[root@test1 bin]# ./zkServer.sh startJMX enabled by defaultUsing config:/home/renyongbin/q-soft/zk3/zookeeper-3.4.6/bin/../conf/zoo.cfgStarting zookeeper ... STARTED Zk2:
[root@test1bin]# cd /home/renyongbin/q-soft/zk2/zookeeper-3.4.6/bin[root@test1 bin]# ./zkServer.sh startJMX enabled by defaultUsing config:/home/renyongbin/q-soft/zk2/zookeeper-3.4.6/bin/../conf/zoo.cfgStarting zookeeper ... STARTED Zk1:
[root@test1bin]# cd /home/renyongbin/q-soft/zk1/zookeeper-3.4.6/bin
[root@test1 bin]# ./zkServer.sh startJMX enabled by defaultUsing config:/home/renyongbin/q-soft/zk1/zookeeper-3.4.6/bin/../conf/zoo.cfgStarting zookeeper ... STARTED验证是否安装成功,以zk1为例:
[root@test1bin]# pwd
/home/renyongbin/q-soft/zk1/zookeeper-3.4.6/bin
[root@test1 bin]# ./zkCli.sh -server127.0.0.1:2181
若出现如下类似的表明安装成功:
WATCHER::

WatchedEvent state:SyncConnected type:Nonepath:nullls(自己输入的命令)[zk: 127.0.0.1:2181(CONNECTED) 1] ls (自己输入的命令)[zk: 127.0.0.1:2181(CONNECTED) 2] ls(自己输入的命令)[zk: 127.0.0.1:2181(CONNECTED) 3] ls /(自己输入的命令)[zookeeper][zookeeper][zk: 127.0.0.1:2181(CONNECTED) 4] ls/zookeeper[quota][zk: 127.0.0.1:2181(CONNECTED) 5] ls/zookeeper/quota[][zk: 127.0.0.1:2181(CONNECTED) 6] get/zookeeper/quota cZxid = 0x0ctime = Wed Dec 31 19:00:00 EST 1969mZxid = 0x0mtime = Wed Dec 31 19:00:00 EST 1969pZxid = 0x0cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 0numChildren = 0 退出zk1: [zk:127.0.0.1:2181(CONNECTED) 7] quitQuitting...2014-08-18 21:31:57,133 [myid:] - INFO [main:ZooKeeper@684] - Session:0x147ebd7a7c20000 closed2014-08-18 21:31:57,133 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@512]- EventThread shut down
3. 安装metaq
[root@test1 bin]# cd ..[root@test1 zookeeper-3.4.6]# cd ..[root@test1 zk1]# cd ..[root@test1 q-soft]# lsepel-release-6-8.noarch.rpm zk1 zk3metaq-server-1.4.6.2.tar.gz zk2 zookeeper-3.4.6.tar.gz[root@test1 q-soft]# tar zxvfmetaq-server-1.4.6.2.tar.gz [root@test1 q-soft]# lsepel-release-6-8.noarch.rpm taobao zk2 zookeeper-3.4.6.tar.gzmetaq-server-1.4.6.2.tar.gz zk1 zk3 [root@test1 q-soft]# cd taobao/[root@test1 taobao]# cdmetamorphosis-server-wrapper/[root@test1 metamorphosis-server-wrapper]#cd conf/[root@test1 conf]# pwd/home/renyongbin/q-soft/taobao/metamorphosis-server-wrapper/conf[root@test1 conf]# lsasync_slave.properties notifyadaper samsa_master.propertiesgregor_slave.properties notifySlave.properties server.inijettyBroker.properties sample.server.ini timetunnel.properties[root@test1 conf]# vim server.ini[root@test1 conf]# cat server.ini (红色部分为修改后的) [system]brokerId=0numPartitions=1serverPort=8123dashboardHttpPort=8120unflushThreshold=0unflushInterval=10000maxSegmentSize=1073741824maxTransferSize=1048576deletePolicy=delete,168deleteWhen=0 0 6,18 * * ?flushTxLogAtCommit=1stat=true;; Update consumers offsets to current maxoffsets when consumers offsets are out of range of current broker's messages.;; It must be false in production.Butrecommend to be true in development or test.updateConsumerOffsets=true[zookeeper]zk.zkConnect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183zk.zkSessionTimeoutMs=30000zk.zkConnectionTimeoutMs=30000zk.zkSyncTimeMs=5000;; Topics section[topic=test][topic=meta-test][topic=x1] (增加一个队列)[root@test1 conf]# cd ..[root@test1 metamorphosis-server-wrapper]#cd bin/[root@test1 bin]# pwd/home/renyongbin/q-soft/taobao/metamorphosis-server-wrapper/bin

未完待续......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息