当前位置: 首页 > news >正文

网站建设松江公司深圳市建设招标网

网站建设松江公司,深圳市建设招标网,wordpress导出全站链接,南京网站优化网站建设公司jgroups传输消息ElasticMQ是一个消息服务器#xff0c;具有Scala#xff0c;Java和与Amazon SQS兼容的接口。 它通过跨服务器群集复制消息来支持有保证的消息传递#xff0c;并通过日志记录实现消息持久性。 消息复制是ElasticMQ的核心功能之一。 但是#xff0c;如果您看一… jgroups传输消息 ElasticMQ是一个消息服务器具有ScalaJava和与Amazon SQS兼容的接口。 它通过跨服务器群集复制消息来支持有保证的消息传递并通过日志记录实现消息持久性。 消息复制是ElasticMQ的核心功能之一。 但是如果您看一下代码则只有少数几个类最长的类有76行请记住这是Scala虽然;。 这是因为ElasticMQ使用JGroups作为基础通信库。 JGroups已经很老了特别是对于Java库而言-JGroups的第一版是在1999年。 但是它离过时和过时还差得很远–它具有一个不错的API可以毫无问题地工作拥有一个良好的社区。 并且因为任何Java库都可以与Scala很好地协作。 JGroups具有许多有用的功能 可靠的组播 集群管理 故障检测 节点发现 多年的性能改进 它们广泛用于在ElasticMQ中实施复制。 以下是其完成方式的摘要。 ElasticMQ集群如何工作 在单个ElasticMQ集群中一个节点始终是主节点。 您只能对此节点执行操作。 然后将每个操作的结果复制到其他成员。 有两种与阻止相关的选项 复制可以是完全异步的也可以等待直到至少一个或所有节点确认该操作。 为了确保在群集分区的情况下不会从不同的分区收到相同的消息只有具有至少一半1节点操作的分区处于活动状态。 ElasticMQ中的中心概念是消息存储。 存储器执行命令例如发送消息命令删除消息命令等。 复制层只是任何其他存储的包装。 但是请注意我们只能复制产生的存储突变因此在执行命令后而不是原始命令本身。 例如如果命令是“接收消息”则在每台计算机上执行该命令的结果可能会有所不同。 因此如果接收到消息成功我们仅复制消息可见性的更改在ElasticMQ中类似于Amazon SQS 如果接收到消息则在指定的时间段内阻止后续接收该消息。 您可以在JGroupsReplicatedStorage中看到此基本逻辑。 初始化集群 但是在我们进行复制本身之前首先要做的是初始化集群。 这是在ReplicatedStorageConfigurator中完成的。 作为参数我们需要一个JGroups配置文件该文件是协议的堆栈。 您实际上并不需要知道每种协议的功能以及所有这些配置参数的含义。 最有用的两个是udp.xml和tcp.xml 。 如果您的网络中有多播则应使用第一个如果所有通信都应通过TCP例如在EC2上则应使用第二个。 在后一种情况下您还需要提供初始IP列表。 该列表不必详尽无遗只需列出种子即可。 拥有协议栈ElasticMQ创建一个JChannel并将其连接这仅意味着连接到集群。 实际上这就是使用JGroups创建集群所需要做的所有工作-非常简单对吧 正如您在ReplicatedStorageConfigurator的末尾看到的那样连接之后的第一件事是对channel.getStatenull0的调用。 这将转到当前的主节点稍后会进行更多有关主节点选举获取状态当前的队列和消息并将其应用于当前的节点请参阅非常简单的JGroupsStateTransferMessageListener-处理发送和接收。 这里有两点要注意。 首先此传输不会阻止整个群集正常运行。 其次如果在状态转移期间执行了某项操作则该操作也会被复制。 因此可能会在新节点上执行一次命令两次。 但这无关紧要因为每个复制的命令都是幂等的因此可以多次应用。 在其他情况下必须实施某些应用程序侧机制以防止此类情况。 复制数据 最后我们进入核心复制命令。 在发送方这由JGroupsReplicationMessageSender处理。 同样这不是一个非常复杂的类。 它使用来自JGroups的MessageDispatcher “构建块”除了在整个集群中对消息进行多重处理之外还使您能够等待直到指定数量的节点接收到它为止。 在接收方我们有JGroupsRequestHandler 。 同样非常简单。 收到消息后它仅发送到存储。 集群管理 您可能还注意到SetMaster特殊消息。 用户需要此权限才能读取当前主节点的节点地址。 主选举决定哪个节点是主节点完全由JGroups处理。 JGroups中没有特定的算法来选举主节点但是我们可以利用以下事实每个节点都有相同的集群视图由JGroups View类表示。 我们要做的只是从该列表中获取第一个或最后一个或第3个等等-只要在所有节点上都相同即可并将其设置为主节点。 群集视图由最后一个“核心”复制类JGroupsMembershipListener处理 。 那里发生了两件事。 每当新节点加入或离开集群时都会调用viewAccepted回调。 每个具有View类的实例很好等于:)的节点。 主机在单独的线程中广播其地址这是ElasticMQ服务器地址而不是内部JGroups集群通信地址。 在一个JGroups回调方法中执行阻塞操作是一个非常容易的错误。 您绝对不应该那样做因为整个堆栈都可以锁定。 我们还需要FLUSH协议该协议始终在集群设置期间添加 此协议可确保在所有节点都安装新视图之前没有发送新消息因此我们确保新节点始终接收主信息。 成员资格侦听器还处理集群合并。 同样JGroups为我们提供了合并分区的视图以及新的合并视图。 在ElasticMQ中除了主分区最大分区以外的所有分区都请求状态转移就像连接到集群之后一样。 这样数据将保持一致状态。 加起来 还值得注意的是使用ScalaTest对ElasticMQ的复制进行了全面测试。 每个测试都会创建一个内存存储集群创建新节点或模拟节点崩溃。 请参见JGroupsReplicatedStorageTest类。 有了JGroups的机制就可以轻松实现集群通信。 但是与往常一样您需要记住一些有关并发的陷阱例如新节点加入时可能会发生集群活动分区和合并可能随时发生正常消息和集群视图更改之间没有顺序 可以在状态转移期间发送消息等等。 但是JGroups 教程和手册都非常全面并且得到了论坛的其他帮助感谢Bela您应该一切顺利。 您可以通过下载ElasticMQ的独立发行版或以嵌入式方式运行它来尝试实践复制的工作方式。 参考来自Adam Warski博客的Blog的 JCG合作伙伴 Adam Warski使用JGroups在ElasticMQ中实现消息复制 。 翻译自: https://www.javacodegeeks.com/2012/06/elasticmq-message-replication-with.htmljgroups传输消息
http://wiki.neutronadmin.com/news/10815/

相关文章:

  • 网站建设每年需要交多少钱wordpress博客导出
  • iis 发布asp网站西安网站建设网站推广
  • 帮别人做网站维护违法上海市工程建设
  • 深圳外贸网站建设公司价格投资理财网站建设规划书
  • 做课题的网站有多少是备案的哪个网站做照片书最好
  • 石家庄网站排名优化哪家好广州门户网站制作公司
  • 文化类网站是不是休闲娱乐类网站网站原创内容优化
  • 建立网站要多少钱专业的网站建设多少钱
  • 厦工品牌网站设计360做网站吗
  • 虚拟服务器和如何创建网站专业的设计网站有哪些
  • 网站后台如何做下载连接本地营销型网站建设
  • 网站做支付宝接口江苏省城乡建设网站
  • 广东网站备案网络营销就是网上消售吗
  • 网站开发课程改革wordpress修改生效
  • wordpress mofileseo外链优化方法
  • wordpress的vps建站流程百度地图关键词优化
  • 网站 语言选择网站建设全程揭秘pdf
  • 校园网站建设特色怎么做网站二维码
  • 网站页面设计稿线上推广方法
  • 门户网站建设要求目前做啥网站致富
  • app网站如何做推广方案cms建站系统开源
  • 北京的电商平台网站有哪些内容网络推广员每天的工作是什么
  • 淄博做网站wordpress纯代码屏蔽谷歌字体
  • 可以做网站吗wordpress列表分页
  • 傻瓜式网站制作网站开发5人小组分工
  • 广西网站推广企业网站模板下载价格多少
  • 乐清企业网站建站软件开发是怎么开发的啊
  • 软件定制网站优化 seo一站式大宗商品价格查询网站
  • vs手机网站开发wordpress主题 vieu
  • 自己做网站 需要哪些东西新建站点的步骤