[翻译]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 拓扑结构及集群_第1张图片
 
警告
自从Petals ESB 3.0以后不再支持这种模式,取而代之的是使用master/slave(主从模式),而静态节点可以在主机的模式下进行配置.

配置水淹(洪泛)模式

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


[翻译]Petals ESB 拓扑结构及集群_第2张图片
 

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

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

配置主从模式

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


[翻译]Petals ESB 拓扑结构及集群_第3张图片
 

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

说明
这种子域模式可以在动态主域模式和静态主域模式当中运用.在静态主域模式下,每个集群的节点都需要在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 集群实战

 

你可能感兴趣的:(ESB,petals)