原文地址: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服务就行,而不需要关心其它的.
Static mode:静态模式
这种模式往往用于你熟悉你的企业总线的硬件设备环境,而且业务需求和环境基本是不变的,采用这种模式.
当然了,你选择这种模式时,如果需要再增加一个新的设备,你不得不停止掉你的服务器,修改每一台服务器的topology.xml再重新启动服务.
Dynamic mode:动态模式
在很多的业务场景中,你需要更多的Petals ESB 运算节点参与到你的总线拓扑结构当中去.节点的数量往往根据业务量的需求不断的增加.
使用静态模式
配置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 属性里,参考如下:
配置子域名模式
定义完成主域名的模式.你也可以对你的子域名配置不同的模式 :
- standalone : 独立模式,也就是只有一个ESB提供服务.
- flooding : 水淹(洪泛)模式,每一个子域名都有很多节点,并且互相通讯的.
- master-slave : 主从模式,子域名可以有很多节点,但很多伯从节点只有一个主节点.
域模式不会影响消息之间的传递,只会影响消息在各节点听传播路径或者广播路径.下面针对子域名的不同模式进行描述.
配置单机模式
在单机模式里,Petals ESB集群会限制这一个独立的节点,也就是说,你的配置应该是,有一个独立模式的主域,并且有一个独立模式的子域,并且只有一个节点,如下图所示.
配置水淹(洪泛)模式
在水淹(洪泛)模式里, 新终端可能在每时都被加入进来,通讯节点有可以随时发生变化和更改,但是消息会随时选择不同的路径传递到他的下一个节点.参考如下的图示.
在子域定义为水淹(洪泛)模式时,每个子域至少一个节点,而消息在一个节点只传递一次.
配置主从模式
在主从模式里, 每个子节点定期取得主节点的配置文件,这样一来,每个节点都能够知道集群当中每个节点的服务和终端.在未来,这种策略将从主机上发布他的配置,这样的配置,业务消息的传递还是从一个发出地直接到另外一个目的地. 如下图当中所示,左图是节点部署拓扑结构,右边是消息传递路径.
子域选择主从模式时,这个域必须有一个主机,子域节点可以是无数个.
声明配置文件说明
如上所述,会修改和配置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>
详细的属性描述如下 :
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>
配置单个容器
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从机容器时才会获取到主机注册的从机列表.
配置本地容器
如上所见, topology.xml文件将会定义一个集群的生产服务环境,当然了,你所做的这一切还需要通知到你的服务器配置文件server.properties,其中参数server.properties就是描述你容器的名字的.
注意,容器的名字petals.container.name一定要和topology.xml文件当中的一致.否则,Petals ESB不会正常启动.
总结一下
如下是topology.xml有效的配置关系:
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:洪泛法
作者附加
建议使用默认的方式,也就是主域使用静态模式,子域使用主从模式,这也是默认的安装模式,
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>
导读:
- Petals ESB 简介
-
Petals ESB 安装部署
-
Petals ESB 开发之一 代理Web Service
- Petals ESB 开发之二 协议转换
- Petals ESB 开发之三 服务消息转换
-
Petals ESB 开发之四 调试代码
-
[翻译]Petals ESB 拓扑结构及集群
-
Petals ESB 集群实战