EOS6 集群的原理介绍和配置

集群中的节点的数据同步的过程中,会相互发送通知,这是利用UDP协议的IP多播来实现的。IP多播是一台主机一次同时发送单一的数据包到多台主机的TCP/IP通讯网络技术。IP多播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255。使用同一个IP多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。任何一个主机,都可以向多播组发送数据包(UDP的数据报),多播组内的所有主机都可以收到这个信息。

实际上,真正的多播地址包含两部分,多播用IP地址和一个端口号,如 225.1.1.1:6280 就是一个组合,构成一个唯一的多播地址,配置有相同多播地址的节点(如缓存)就能收到发送方发往这个地址的UDP数据(即数据报,Datagram)。集群中的节点间相互通知就是利用这个原理实现数据通讯的。

在集群的底层实现中,采用了JGroups的技术,JGroups在多播的地址上,又增加了一个过滤条件,就是通道(channel),每一个通道要取一个唯一的名称,称为通道名称。配置有相同多播地址,并且通道名称一致的节点,才构成一个JGroups集群通道。也就是说,构成一个JGroups集群通道的唯一标志是:"多播IP + 端口 + 通道名"。

安装完EOS服务器后,每个应用可以看成是一个集群的节点,应用的系统变量配置中缺省配置了McastAddr和McastPort ,代表了多播的IP地址和端口号,如果用户不更改的话,所有EOS应用都是一致的,下面就看通道名称了。系统变量的ChannelName默认没有配置,这是为了使用默认的通道名称生成规则,规则如下:

EOSDomain_管理服务器IP:管理服务器管理端口号, 如EOSDomain_192.168.1.25:6080。

这样,一个EOS域中的所有服务器中的应用都在一个统一大的集群环境下,能收到相互发送的集群通知。因为一个域只有一个管理服务器,因此一个域中的所有服务器的通道名称是一致的。如果用户改掉缺省的多播地址配置,或改掉通道名称,则会形成另一个集群环境。

由于配置了多播地址和端口的节点都会收到通知,只是JGroups通过通道名做了一次过滤,所以,缺省EOS安装的情况下,处于不同域的服务器也会相互收到通知(因为多播地址设置是一样的),这同样会增加JGroups的底层通知的过滤开销,为降低开销,用户可以单独为一个集群配置多播地址和多播端口,这样,从最底层的UDP协议就收不到其他节点发来的消息了。

当然,用户也可以只配置通道名,配置了通道名,就不使用默认的通道名称,这样也可以形成一个单独的集群环境,但JGroups的通道过滤开销仍然没有消除。

如果在一个网络环境下安装的EOS服务器不多的话,缺省的集群配置一般就可以满足集群的负载需要了,用户可以不用另行配置。

那么,不同的缓存之间的数据又是如何同步的呢?

EOS缺省建立了三个系统缓存,业务字典缓存、服务注册信息缓存和在线用户缓存,分别用来存放业务字典数据、用于客户端访问的服务注册信息、登陆系统的用户信息。Governor还提供了用户创建自己的业务数据缓存的功能。不同的缓存接收到的通知数据不能混乱,否则就可能造成业务缓存A中的数据错误同步到缓存B中,那就乱套了。

为了区分不同的缓存数据,EOS又增加了一层过滤条件,就是集群名称,在Governor的缓存配置中,我们可以看到有集群名称这个属性(但缺省是空的)。当缓存的集群名称不填写时,系统使用默认规则为每个缓存定义了一个集群名称,规则是:

对应组中服务器的应用:组名:应用名:缓存名
对独立服务器中的应用:服务器名称:应用名:缓存名
因此,只有在相同多播地址和端口、相同通道名且相同集群名称的缓存,才能互相接收到各自的集群通知,以便进行集群的数据同步,这就是缓存的集群同步的原理。总结一下,构成一个缓存的集群的唯一标志是:"多播IP + 端口 + 通道名 + 集群名称"。

如果是组的应用,配置缓存的时候,缓存就自动支持集群的(支持集群的选项被勾选)。如果是独立服务器的应用,配置缓存默认是不支持集群的,用户可以勾选"支持集群"选项,让其支持集群,这时候,需要填写集群名称(如果不填写,使用默认的集群名称,是无法和其他独立服务器构成一个集群的)。另外一个选择是填写多播地址和多播端口,如果不填写,默认使用应用配置的多播地址和端口,如果填写,则缓存使用自己的多播地址和多播端口。

对组中的应用的缓存,也可以修改集群名称,不使用默认的集群名称,这样,缓存的数据同步就和组没有关系了。你可以任意配置成这个组应用的缓存和其他组应用或其他独立服务器的应用的缓存进行集群同步。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值