`
liyixing1
  • 浏览: 958959 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

企业部署

    博客分类:
  • jms
阅读更多
主从备份方式
多个代理同时运行,但是只有一个是活动的(主),主挂了,从的会获得接管工作。

有两种主从方式
无共享主从
主机和备机各自拥有自己的消息存储

备机需要连接到主代理,且需要额外的配置用来报告其当前的状态,而主消息代理不需要
这种额外的配置.主机也有一些可选的配置项

所有消息指令(消息,确认,订阅,日志等)都会从主机拷贝到备机上,配置主/备机后确实会在消息处理过程中引入一些额外的开销.

当一个消息生产者发送持久化消息给主机后,消息生产者需要等待主机的回执然后才能发送下一条消息.主机在将消息拷贝到备机上并且等待备机依次处理完消息(这种处理通常是备机将消息存储已进行持久化).备机处理完后,主机便开始处理消息(存储以便持久化消息,然后分发消息给所有对消息感兴趣的消费者),主机成功消息完处理后才会发送回执给消息生产者.

当主机失效后,备机有以下两种选择:
1. 关闭自身 -- 这样,备机的作用就是保存主机失效之前的状态. 在这种情况下,系统管理员可以手工配置备机为新主机,并再配置一个新的消息代理担当备机的角色.

2. 启动其传输连接其并初始化所有网络连接 --这样,备机自动的变成了新主机

当备机担当起主机的角色后,所有使用失效转移连接器的客户端会自动切换连接到新主机上.
对于使用ActiveMQ的JMS客户端来说,默认使用的就是失效转移传输连接器,这种连接器通常
会被配置成既可以连接到主机也可以连接到备机,配置如下所示:
failover://(tcp://masterhost:61616,tcp://slavehost:61616)?randomize=false

以上模式可能存在一些问题,比如在主键和备机之间的连接还没建立,但是消息一经进入主机,那么备机是无法备份到这部分数据的。

为了防止数据没有完全同步,应该先把所有的代理停止,并且把主机的data目录拷贝到备机。

另外,在主机失效后,你还需要配置一个新的备机。无共享主/备机配置应当在你需要保证主机失效后没有消息丢失,且能接受一些停机时间以便在原来备机成为新主机后为应用程序配置新备机时使用.

将一个代理配置为备机很简单.你只需配置收下面参数的masterConnector服务:

remoteURI —代理主机监听的URI
userName—可选的用户名,当主机需要认证时使用
password—可选的密码,当主机需要认证时使用

可选属性
waitForSlave false 如果配置为true,则主机代理在备机连接好之前,步接收任何客户端和网络连接
shutdownOnSlaveFailure false 如果配额为true,则与备机失去连接后,主机代理会自动关闭.这样就保证了备机与主机永远是同步的.

<services>
<masterConnector 
remoteURI="tcp://remotehost:62001"
userName="Rob" 
password="Davies"
/>
</services>



备机代理和主机代理的transport和network配置成一样的.

可选属性是:shutdownOnMasterFailure属性.当配置这个
属性为启用时,备机主机在主机失效后会安全的关闭,确保消息不会丢失,这样就允许系统管理员手工配置一个新的备机代理

备机属性
shutdownOnMasterFailure false 如果配置为true,则主机失效后,备机代理会自动关闭


备机的配置
<broker masterConnectorURI="tcp://masterhost:62001" shutdownOnMasterFailure="false">
  <persistenceAdapter>
      <journaledJDBC journalLogFiles="5" dataDirectory="${activemq.base}/data/broker2" />
    </persistenceAdapter>

    <transportConnectors>
      <transportConnector uri="tcp://slavehost:61616"/>
   </transportConnectors>
</broker>
需要指定masterConnector

对于最新版本的,该方式已经不推荐了

共享存储主/备机配置.
具有更好的容错。
任一时间仅有一个代理是活动的.使用共享资源存储可以确保在主机代理失效时无需手工干预即可让应用程序从失败状态中恢复.使用共享存储主/备机的另一个好处是对于备机数量没有限制.ActiveMQ可以配置两种方式的共享存储主/备机:关系数据库和基于文件系统的存储.


当使用关系数据库存储消息时,ActiveMQ消息代理会在相关的表上设置一个排他锁以保证
在同一时间只有一个代理可以操作这个表.这是因为代理的状态是由存储机制来维护的并且
这个存储机制被设计成在同一时间只供一个代理使用。

如果你同时运行着的多个代理同时操作数据库,那么只有第一个连接到数据库的代理可以获取那个排他锁.任何其他的代理将等待直到它们获得那个排他锁.等待排他锁的代理被视为备机,因而这种代理不会启动任何的传输练级和网络连接.

你可以同时运行多个代理,但是在同一时间只有一个代理会成为主机代理。如果主机代理失效了,备机代理会获取数据库中的排他锁进而接管主机代理的功能而变成一个新的主机代理.因为这种配置下所有的代理共享同一个数据库存储,所以在新加入或者移除一个代理时步需要收手工修改配置.

<beans>
 
  <!-- Allows us to use system properties as variables in this configuration file -->
  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
   
  <broker xmlns="http://activemq.apache.org/schema/core">
 
    <destinationPolicy>
      <policyMap><policyEntries>
         
          <policyEntry topic="FOO.>">
            <dispatchPolicy>
              <strictOrderDispatchPolicy />
            </dispatchPolicy>
            <subscriptionRecoveryPolicy>
              <lastImageSubscriptionRecoveryPolicy />
            </subscriptionRecoveryPolicy>
          </policyEntry>
 
      </policyEntries></policyMap>
    </destinationPolicy>
   
   
    <persistenceAdapter>
        <jdbcPersistenceAdapter dataDirectory="${activemq.base}/activemq-data"/>
 
        <!-- 
        <jdbcPersistenceAdapter dataDirectory="activemq-data" dataSource="#oracle-ds"/>
        --> 
    </persistenceAdapter>
   
    <transportConnectors>
       <transportConnector name="default" uri="tcp://localhost:61616"/>
    </transportConnectors>
     
  </broker>
   
  <!--  This xbean configuration file supports all the standard spring xml configuration options -->
   
  <!-- Postgres DataSource Sample Setup -->
  <!-- 
  <bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
    <property name="serverName" value="localhost"/>
    <property name="databaseName" value="activemq"/>
    <property name="portNumber" value="0"/>
    <property name="user" value="activemq"/>
    <property name="password" value="activemq"/>
    <property name="dataSourceName" value="postgres"/>
    <property name="initialConnections" value="1"/>
    <property name="maxConnections" value="10"/>
  </bean>
  -->
   
  <!-- MySql DataSource Sample Setup -->
  <!-- 
  <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
    <property name="username" value="activemq"/>
    <property name="password" value="activemq"/>
    <property name="poolPreparedStatements" value="true"/>
  </bean>
  -->  
    
  <!-- Oracle DataSource Sample Setup -->
  <!--
  <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>
    <property name="username" value="scott"/>
    <property name="password" value="tiger"/>
    <property name="poolPreparedStatements" value="true"/>
  </bean>
  -->
       
  <!-- Embedded Derby DataSource Sample Setup -->
  <!-- 
  <bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
    <property name="databaseName" value="derbydb"/>
    <property name="createDatabase" value="create"/>
  </bean>
  -->  
 
</beans>






共享文件系统
采用文件锁的方式,需要使用共享文件系统(如,san,nfs,windows的共享目录等)。

共享文件是推荐的方式,比jdbc拥有更好的性能,比无共享拥有更好的容错。
该方案将KahaDB的高吞吐量和使用共享资源的简单易用结合起来.KahaDB仅仅受到底层文件系统性能的限制.唯一的警告是,环境中使用的共享文件系统必须支持分布式文件锁.
<persistenceAdapter>
  <kahaDB directory="/sharedFileSystem/sharedBrokerData"/>
</persistenceAdapter>

分享到:
评论

相关推荐

    桌面标准化和Windows的企业部署原则

    ### 桌面标准化与Windows企业部署原则 #### 桌面标准化——IT战略的核心环节 桌面标准化被视为现代企业IT战略的重要组成部分,旨在通过统一桌面环境的配置与管理,实现IT资源的有效利用与成本控制。在企业环境中,...

    企业部署工具deploy.cab

    企业部署工具deploy.cab 企业部署工具包DEPLOY.CAB ------------------------------- (在系统安装光盘:\SUPPORT\TOOLS目录下自带) 制作GHOST系统必须用到的工具,是从微软WINDOWS XP系统盘中提出来的,为的是方便...

    IPhone企业部署指南

    IPhone在企业中如何使用?如何保证企业邮件,各种应用的安全?

    云计算在企业部署模式的研究.pdf

    其中一个主要问题是现有云计算技术在企业部署时的困难,不少企业对部署云计算平台感到无所适从。另一个重要问题是企业对云计算安全的担忧。尽管如此,云计算并不是一项全新的技术,它实际上是对现有分布式计算、虚拟...

    Windows7企业部署指南之二(DISM).doc

    【Windows 7 企业部署指南之二——使用 DISM】 DISM(Deployment Image Servicing and Management,部署映像服务和管理)是Windows 7中引入的一个重要的系统维护和部署工具,它取代了早期Windows AIK(Windows ...

    中小企业部署域环境的意义专题

    教程名称:中小企业部署域环境的意义专题课程目录:【】中小企业部署域环境的意义【】中小企业部署域环境的意义【视频】【】中小企业部署域环境的意义(视频) 资源太大,传百度网盘了,链接在附件中,有需要的同学...

    PSPulsewayManager:以下是一个易于使用的Powershell模块来控制Pulseway Manager的某些功能。 虽然Pulseway Manager提供了用于企业部署的GUI,但是从GUI配置某些东西很耗时,而且并不总是那么容易

    虽然Pulseway Manager提供了用于企业部署的GUI,但是从GUI配置某些东西很耗时,而且并不总是那么容易。 同样,使用此模块,理论上您可以根据不同的时间设置不同的规则。 虽然Pulseway没有为您提供该选项,但是您...

    Windows 10企业部署手册(全)

    Microsoft 365是一项新功能来自 Microsoft 的Windows 10会结合使用Office 365企业移动性和安全性(EMS)。 对于 Windows 10 部署,Microsoft 365 包括一个可以指导你完成部署 Windows 10 的整个过程的不错部署顾问。 ...

    Apple苹果iphone企业级部署指南

    Apple苹果iphone企业级部署指南

    在企业部署中使用开源SOA指南pdf

    关键性信息分散在企业的不同系统中,例如,客户关系管理 (CRM) 系统、 企业资源规划 (ERP) 系统、计费系统、电子商务系统和客户支持系统,其中的信 息被封闭在一个应用程序内,而且几乎不对所有其他应用程序开放。从...

    企业部署工具DEPLOY.CAB

    制作GHOST系统必须用到的工具,是从微软WINDOWS XP系统盘中提出来的,为的是方便大家使用.

    部署企业中第一台Windows_Server_2008_R2域控制器

    部署企业中第一台Windows_Server_2008_R2域控制器的详细方法

    华为认证HCNP HCDP IESN部署企业级交换网络实验指导书

    《华为认证HCNP HCDP IESN部署企业级交换网络实验指导书》是一本针对华为认证体系中高级网络专业人士的实战指南。该书详细介绍了如何在企业环境中部署和管理华为的交换网络设备,旨在帮助读者掌握华为网络产品及解决...

    IPV6在企业网络中的部署详细说明

    IPV6在企业网络中的部署详细说明IPV6在企业网络中的部署详细说明IPV6在企业网络中的部署详细说明IPV6在企业网络中的部署详细说明IPV6在企业网络中的部署详细说明IPV6在企业网络中的部署详细说明IPV6在企业网络中的...

    创建用于企业部署的Mozilla Firefox MSI

    本文将深入探讨如何使用WIX(Windows Installer XML)工具集和PowerShell来创建一个用于企业部署的Mozilla Firefox MSI安装包。 **WIX工具集** WIX是一个开源工具集,用于构建Windows安装程序,它使用XML语法来定义...

    VSTO2005系列课程(4):安全性与部署

    2. 企业部署:在企业环境中,IT部门可能更倾向于使用Group Policy来部署VSTO解决方案,这使得管理大规模的安装和更新更为方便。同时,通过GPO可以设置策略限制特定加载项的运行,以保证系统的安全性。 3. 本地安装...

    ESET NOD32 企业版部署说明

    ### ESET NOD32 企业版部署说明 #### 一、概述 ESET NOD32是一款知名的防病毒软件,其企业版提供了强大的安全防护功能,并支持多种部署方式,适用于不同规模的企业环境。本文档将详细介绍如何在企业环境中部署ESET...

    微软 Lync Server 2010 标准版部署体验——规划准备篇

    对于大型企业部署,应规划出满足性能要求的分布式架构。 架构需求是部署Lync Server 2010的重中之重,它涵盖了系统需求、网络架构、Active Directory服务、DNS、证书、端口以及IIS等方面的要求。对于系统需求,Lync...

    零代码 一键部署chatGPT到企业微信应用

    零代码 一键部署chatGPT到企业微信应用 本项目可以实现一键部署ChatGPT到企业微信中,使ChatGPT与企业微信完美融合,手机或电脑上,打开企业微信,就可以使用强大的ChatGPT智能问答。截止目前,本项目可以提供两个...

    java+tomcat自动部署

    Tomcat是一个开源的Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范,是许多小型和中型企业部署Java Web应用的首选。为了实现自动部署,我们需要配置Tomcat服务器以监听特定的文件系统路径或者接收...

Global site tag (gtag.js) - Google Analytics