`

[翻译]Petals ESB 拓扑结构及集群

阅读更多

       原文地址:https://doc.petalslink.com/display/petalsesb30/Topology+Configuration       

       Petals是一个完全的分布式ESB 拓扑结构,支持动态分配和固定路由两种方式。而拓扑结构的集群只需要配置一下$PETALS_HOME/conf/topology.xml 和$PETALS_HOME/conf/server.properties 就可以完成。

       本文档将会指导你如何组建一个Petals ESB的集群。

定义你的主域名模式

Petals ESB 动脚三种不同的域名模式:

  • standalone : 单机模式,独立运行,不能增加节点.
  • static : 静态模式,在Petals ESB运行时不可能增加新的节点.
  • dynamic :动态模式, 拓扑是根据规则定时检测,Petals ESB在运行时自动监测到新增加的节点.

下面将根据不同的域模式分别讲述它的配置方式.

选择域模式

Standalone mode:单机模式

这个很简单,你只要启动一台Petals ESB服务就行,而不需要关心其它的.

自从Petals ESB 3.0以后不再支持这种模式,取而代之的是使用master/slave(主从模式),而静态节点可以在主机的模式下进行配置.


Static mode:静态模式

这种模式往往用于你熟悉你的企业总线的硬件设备环境,而且业务需求和环境基本是不变的,采用这种模式.

当然了,你选择这种模式时,如果需要再增加一个新的设备,你不得不停止掉你的服务器,修改每一台服务器的topology.xml再重新启动服务.

如果静态节点有一个崩溃时,是不影响整个拓扑结构的使用的,但是会影响发送到这个静态节点所接收的信息.因为Petals ESB完全是无状态的.

也就是说,稳定性是静态模式的一个不足.(Add)


Dynamic mode:动态模式

在很多的业务场景中,你需要更多的Petals ESB 运算节点参与到你的总线拓扑结构当中去.节点的数量往往根据业务量的需求不断的增加.

动态模式因为总是修改topology.xml文件,会导致整个拓扑结构发生变化,所以生产环境里应该注意运维的管理.

使用静态模式

配置topology.xml文件

如果使用静态模式,则应修改topology.xml文件当中,如下的细节:

<tns:domain mode="static" name="PEtALS">

查看 : static-topology-sample.xml

使用动态模式

配置topology.xml文件

如果使用动态模式,则应修改topology.xml文件当中,如下的细节:

<tns:domain mode="dynamic" name="PEtALS">

See : dynamic-topology-sample.xml


配置更新频率

在动态模式下,如上描述的一样,我们会定时检查更新配置文件,第一次更新会在30秒后进行,以后根据定义的参数进行更新,配置参数在$PETALS_HOME/conf/server.properties的topology.update.period 属性里,参考如下:

#Topology update period (in seconds)
topology.update.period=101

配置子域名模式

定义完成主域名的模式.你也可以对你的子域名配置不同的模式 :

  • standalone : 独立模式,也就是只有一个ESB提供服务.
  • flooding : 水淹(洪泛)模式,每一个子域名都有很多节点,并且互相通讯的.
  • master-slave : 主从模式,子域名可以有很多节点,但很多伯从节点只有一个主节点.

域模式不会影响消息之间的传递,只会影响消息在各节点听传播路径或者广播路径.下面针对子域名的不同模式进行描述.

配置单机模式

  在单机模式里,Petals ESB集群会限制这一个独立的节点,也就是说,你的配置应该是,有一个独立模式的主域,并且有一个独立模式的子域,并且只有一个节点,如下图所示.



 
警告
自从Petals ESB 3.0以后不再支持这种模式,取而代之的是使用master/slave(主从模式),而静态节点可以在主机的模式下进行配置.

配置水淹(洪泛)模式

在水淹(洪泛)模式里, 新终端可能在每时都被加入进来,通讯节点有可以随时发生变化和更改,但是消息会随时选择不同的路径传递到他的下一个节点.参考如下的图示.



 

在子域定义为水淹(洪泛)模式时,每个子域至少一个节点,而消息在一个节点只传递一次.

警告
这个模式只适用于主域是静态模式下才能生效.

配置主从模式

在主从模式里, 每个子节点定期取得主节点的配置文件,这样一来,每个节点都能够知道集群当中每个节点的服务和终端.在未来,这种策略将从主机上发布他的配置,这样的配置,业务消息的传递还是从一个发出地直接到另外一个目的地. 如下图当中所示,左图是节点部署拓扑结构,右边是消息传递路径.



 

子域选择主从模式时,这个域必须有一个主机,子域节点可以是无数个.

说明
这种子域模式可以在动态主域模式和静态主域模式当中运用.在静态主域模式下,每个集群的节点都需要在topology.xml文件当中声明,在动态主域模式下,你只能注册到主机节点或者注册为本地节点.

声明配置文件说明

如上所述,会修改和配置topology.xml文件,下面就对这个文件进行详细的描述.

通用配置

每一个Petals ESB窗口都必须声明如下的配置参数,如下:

<tns:container name="0" type="master">
    <tns:description>description of the container 0</tns:description>
    <tns:host>localhost</tns:host>
    <tns:user>petals</tns:user>
    <tns:password>petals</tns:password>
    <tns:webservice-service>
        <tns:port>7600</tns:port>
        <tns:prefix>petals/ws</tns:prefix>
    </tns:webservice-service>
    <tns:jmx-service>
        <tns:rmi-port>7700</tns:rmi-port>
    </tns:jmx-service>
    <tns:transport-service>
        <tns:tcp-port>7800</tns:tcp-port>
    </tns:transport-service>
    <tns:registry-service>
        <tns:port>7900</tns:port>
    </tns:registry-service>
</tns:container>

详细的属性描述如下 :

属性 默认值 是否必须 描述 webservice-service       jmx-service       transport-service       registry-service      
name 0 yes 容器的名字
mode master yes 节点的模式 (master, slave, peer, standalone)
description description of the container 0 no 容器的描述
host localhost yes 容器的主机名或者域名.
user petals no jmx用户名
password petals no jmx密码
port 7600 yes 管理员的Web服务端口(关于集群等信息...)
prefix petals/ws yes Web服务的相对路径
rmi-port 7700 yes jmx服务端口
tcp-port 7800 yes NIO非阻塞传输端口,异步模式
port 7900 yes 注册服务端口号

配置单机模式

ESB容器被定义成单机模式的情况如下:

<tns:container name="0" type="standalone">
    ...
</tns:container>
警告
同样,自从Petals ESB 3.0以后不再支持这种模式,取而代之的是使用master/slave(主从模式),而静态节点可以在主机的模式下进行配置.

配置单个容器

ESB容器将会以下的配置形式完成每个容器的配置:

<tns:container name="0" type="peer">
    ...
</tns:container>

这种配置只用在子域是水淹(洪泛)模式时有效.

配置主机模式

ESB容器将会以下的配置形式完成每个容器的配置:

<tns:container name="0" type="master">
    ...
</tns:container>

使用主从模式时,必须有且只有一个主机.

配置从机模式

ESB容器将会以下的配置形式完成每个容器的配置:

<tns:container name="0" type="slave">
    ...
</tns:container>

使用主从模式时,从机的数量不做限制.

如果主域使用动态模式,对于从机模式,你需要在定义topology.xml文件当中主机的配置文件和从机的配置文件, 这样在第一次启动ESB从机容器时才会获取到主机注册的从机列表.

警告
你可以同时把从机使用不同的配置定义相同的容器名字,这样主机只会找到最新的容器了,用于在生产环境里不Down的情况下,实现动态部署.

配置本地容器

如上所见, topology.xml文件将会定义一个集群的生产服务环境,当然了,你所做的这一切还需要通知到你的服务器配置文件server.properties,其中参数server.properties就是描述你容器的名字的.

#这个属性的值,是容器的名字,在分布式环境下,你必须和topology.xml定义的容器名字一致.
petals.container.name=0

注意,容器的名字petals.container.name一定要和topology.xml文件当中的一致.否则,Petals ESB不会正常启动.

总结一下

如下是topology.xml有效的配置关系:

Domain mode主域模式 Subdomain mode从域模式 Container mode容器模式 支持 不必声明
standalone standalone standalone
dynamic master-slave master, slave
static flooding peer
static master-slave master, slave

附录

默认配置

topology.xml如下 :

<?xml version="1.0" encoding="UTF-8"?>
<tns:topology xmlns:tns="http://petals.ow2.org/topology"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://petals.ow2.org/topology petalsTopology.xsd">
    <tns:domain mode="static" name="PEtALS">
        <tns:description>The static domain configuration</tns:description>
        <tns:sub-domain name="subdomain1" mode="master-slave">
            <tns:description>description of the subdomain</tns:description>
            <tns:container name="0" type="master">
                <tns:description>description of the container 0</tns:description>
                <tns:host>localhost</tns:host>
                <tns:user>petals</tns:user>
                <tns:password>petals</tns:password>
                <tns:webservice-service>
                    <tns:port>7600</tns:port>
                    <tns:prefix>petals/ws</tns:prefix>
                </tns:webservice-service>
                <tns:jmx-service>
                    <tns:rmi-port>7700</tns:rmi-port>
                </tns:jmx-service>
                <tns:transport-service>
                    <tns:tcp-port>7800</tns:tcp-port>
                </tns:transport-service>
                <tns:registry-service>
                    <tns:port>7900</tns:port>
                </tns:registry-service>
            </tns:container>
        </tns:sub-domain>
    </tns:domain>
</tns:topology>

下载地址 : default-topology.xml

Flooding:洪泛法

来自度娘
在OSPF协议中,当链路状态发生变化时要用Flooding向所有路由器发送信息。
此算法不要求维护网络的拓扑结构和相关的路由计算,仅要求接收到信息的节点以广播方式转发数据包。例如,源节点希望发送一段数据给目标节点。源节点首先通过网络将数据副本传送给它的每个邻居节点,每个邻居节点再将数据传送给各自的除发送数据来的节点之外的其他。如此继续下去,直到数据传送目标节点或者数据设定的生存期限为0为止。

作者附加

  建议使用默认的方式,也就是主域使用静态模式,子域使用主从模式,这也是默认的安装模式,

Domain mode主域模式 Subdomain mode从域模式 Container mode容器模式 支持 不必声明
static master-slave master, slave

如果你想做集群,再COPY一份Petals ESB设置一下topology.xml文件,发下的配置就行.

<?xml version="1.0" encoding="UTF-8"?>
<tns:topology xmlns:tns="http://petals.ow2.org/topology"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://petals.ow2.org/topology petalsTopology.xsd">
    <tns:domain mode="static" name="PEtALS">
        <tns:description>The static domain configuration</tns:description>
        <tns:sub-domain name="subdomain1" mode="master-slave">
            <tns:description>description of the subdomain</tns:description>
            <tns:container name="0" type="slave">
                <tns:description>description of the container 0</tns:description>
                <tns:host>localhost</tns:host>
                <tns:user>petals</tns:user>
                <tns:password>petals</tns:password>
                <tns:webservice-service>
                    <tns:port>8600</tns:port>
                    <tns:prefix>petals/ws</tns:prefix>
                </tns:webservice-service>
                <tns:jmx-service>
                    <tns:rmi-port>8700</tns:rmi-port>
                </tns:jmx-service>
                <tns:transport-service>
                    <tns:tcp-port>8800</tns:tcp-port>
                </tns:transport-service>
                <tns:registry-service>
                    <tns:port>8900</tns:port>
                </tns:registry-service>
            </tns:container>
        </tns:sub-domain>
    </tns:domain>

导读:

  1.  Petals ESB 简介 
  2. Petals ESB 安装部署

  3. Petals ESB 开发之一 代理Web Service 

  4. Petals ESB 开发之二    协议转换
  5. Petals ESB 开发之三    服务消息转换
  6. Petals ESB 开发之四 调试代码

  7. [翻译]Petals ESB 拓扑结构及集群 

  8.  Petals ESB 集群实战

 

  • 大小: 27.9 KB
  • 大小: 70.6 KB
  • 大小: 64.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics