`
witcheryne
  • 浏览: 1094163 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

[翻译]ActiveMQ的拓扑结构,以及个别协议的使用

阅读更多

        原文可以参考这里: http://activemq.apache.org/topologies.html

        今天在研究如何为ActiveMQ做集群,在找文档的过程中,发现这篇文章,感觉对理解ActiveMQ工作方式很有用,在这里打算把这篇文章翻译一下,权当做个笔记:, 自己解释的部分会使用"引用"表示出来.

一. 拓扑结构

我 写道
这个图就不翻译了, 一些名词做下解释:

1. Store and Fowrward Network Federation:

个人理解,就是一个消息路由分发系统, Broker(消息中间人)接收到消息后,会通过这个系统对消息进行存储或者分发,当然Broker属于ActiveMQ服务器端的一部分(内嵌Broker除外)

2. Broker(消息中间人)

感觉跟那个 Message Provider 说的是同一东西,在刚开始接触JMS时, 总是被这两个名词搞晕. JMS规范中叫Provider, ActiveMQ叫Broker. Broker可以在activemq.xml文件中进行配置.(Broker 和 Message Provider 好像有区别,不过我是这么理解,如果有明白的希望给解释一下)
 


二. 部分协议的解释以及拓扑结构解释

               1. VM 协议:

                          这个协议主要用于单元测试中,限制JMS只能在单一的JVM运行, 使用方式如下:

 

vm://localhost

                          我们还一个使用它划分消息组. 例如, 如果要在同一JVM中,使用不同的JMS网络逻辑,则需要进行如下配置:

 

vm://localhost/foo

                         这样可以确保不同的部分之间可以不相互影响, 不过我们也可以使用唯一topic(主题)和queue(列队)的destination 来确保消息在同一逻辑网络中进行通信.

我 写道
这里看的人一头雾水, 这里需要解释一下.
在接触JMS之前,我研究过Pushlet 的,他是基于JMS 发布订阅模式的服务器推送框架,他的主题是以树状结构进行管理. "/"代表根主题, 如果给该主题发送消息,则所有订阅者都可以收到消息.如果如题结构如下所示:
            /root/topic1
            /root/topic2
那么订阅/root/topic2的订阅者是不会接收到/root/topic1主题的消息,但是如果有发布者给/root主题发消息,则订阅topic1和topic2的订阅者都可以收到该消息.

不知道ActiveMQ中是否有这个机制,如果有, 后面这个分组的配置,可能就是为了避免这个问题.

                 2. Client - Server 方式:

                           这个是最有效的最快的通讯方式. 客户端可以通过TCP 或者SSL 协议来连接 Message Broker, 当然,可也支持NIO (非阻塞IO) 或者 其他协议

                          We can load balance clients across brokers and provide broker failover so that we have a logical cluster of brokers with HA . (这句话没能完全理解,直接贴出来)

                          C-S的使用方式, 在Broker进行如下配置:

我 写道
关于什么是HA ?
HA : High Availability. 高可用性的缩写
典型的方式就是持有多个服务器的实例(也就是Message Broker), 当一个连接失败的时候,你可以根绝 failover 的配置,快速连接到其他实例上(也就是其他Broker上), 这样可提供高可用性和resilience
 

                     TCP:

tcp://somehost:port

                     SSL:

ssl://somehost:port

                           我们也可是使用 Discorvery  的方式查找可用的Broker来无缝的链接到一个broker集群中.

 

                  3. Embedded Broker 内嵌 Broker 的方式:

                            这种方式与Client-Server方式类似,不同的是,客户端中内嵌了一个Broker. 这样可以使得客户端和Broker(服务器)的通讯在同一个JVM进行.这种方式不用使用真实的网络. 如果需要,可以让内嵌的Broker与网络上的Broker或者客户端进行链接并通讯.

                           This can avoid the extra hop required to go from producer to broker to consumer - which is a great optimisation for RMI / RPC style situations, where you want the performance benefits (reduced latency) of point to point networking but with the scalabilty of a flexible messaging fabric. (这段话还是没能完全理解.)

                           Embedded Brokers 也可以简化部署. 他只需要一个较小的process需运行.

                           内嵌Broker的另一应用场景是隔离每一服务 , 可以使他们独立的进行消息存储和转发.这样可以使得远程Brokers 在出错死掉的情况下,也不影响内嵌Broker的运行.  如果整个网络都瘫痪了, 每个服务都可以使用自己身内嵌的Broker进行消息的发布.

                           你可以在这里找到 Embedded broker 的配置:

                           http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

 

                    4. Peer to Peer  点对点 的方式:

                    5. JXTA

 

写道
后面两种方式,不是很理解,暂时不做翻译,以后搞明白了再不上
 

 

 

 

 

  • 大小: 30.6 KB
0
2
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics