再谈SOA管控平台-多中心(5.9)

在4月11日曾经写过一篇文章谈到SOA管控平台的多中心,今天就上篇文章有些没有思考清楚的地方进一步进行说明。在我们谈多中心的时候,都是谈数据中心的双活模式下如何构建多中心。
数据库的单活和双活模式
首先还是谈下数据库,对于数据库如果单活模式相对来说比较简单,即所有APP应用集群都只和A数据中心打交道,而B数据中心仅仅是一个备库,同时A数据中心的数据库实现实时单向同步复制到B数据中心。
接着谈两个数据中心双活模式,如果两个数据中心的数据库都同时承担读写任务,那么势必存在两个数据库中心的数据库要实现双向同步复制问题,这个时候很容易导致数据库数据在复制的时候出现冲突。因此在这里最好的方式还是实现两个数据中心的读写分离模式。
即所有的CUD操作全部放在A数据中心,而所有的读操作则基于就近原则,即APP Server如果在数据中心A,那么读操作就访问数据中心A的数据库,如果APP Server在数据中心B,那么读操作就访问数据中心B的数据库。这样实现数据库读压力在两个数据中心的负载均衡,同时又解决了需要双向数据同步复制的问题。
对于SOA管控平台的部署,则实际上部署一套管控平台,并在上层进行全局负载均衡,将两个数据中心的APP Server全部接入到上层负载均衡设备。当然也可以设计两级负载均衡,即在两个数据中心各自先进行负载均衡,然后再将负载均衡后的Cluster集群接入到上层负载均衡设备。
在以上模式下,如果数据中心A完全宕机如何处理?
在上面模式下可以看到,如果数据中心A出现宕机,则首先是全局负载均衡设备的访问请求会全部路由到数据中心B的App Server上,这个时候App Server上的所有读写操作必须全部落地到数据中心B的数据库。即数据中心B的数据库会变成主库,同时在数据中心A恢复后,数据中心A变化为读库,单向复制逻辑变化为数据中心B->数据中心A。
这个逻辑和我们平时将的MySql的双Master架构是一个道理。
全局负载均衡和HA架构
对于双数据中心模式下,全局负载均衡是必须,同时全局负载均衡设备还必须在两个数据中心进行HA架构部署以确保单个数据中心完全宕机的时候没有任何影响。
全局负载均衡最终暴露的地址,可以绑定DNS域名,最终提供DNS域名地址给最终消费方。
全局负载均衡策略的设置,注意可以多考虑就近访问的原则进行,比如在数据中心A中的业务系统,在访问集成平台提供的服务接口的时候,通过负载均衡设备路由后建议是优先考虑路由到数据中心A的App Server上,由于消费端和提供端都在数据中心A,这样的路由可以确保获得最优的性能。
关于Weblogic Cluster集群的安装和配置问题
在双数据中心的情况下,建议还是在两个数据中心单独进行Weblogic Cluster的安装和部署,即两个独立数据中心可以通过各自的Admin集群独自进行管理。而同时又将两个Cluster集群的所有节点全部接入到上层的全局复制设备上。
在这种模式下,OSB服务的部署则需要调用Admin的JMX接口分别在两个数据中心独立进行部署,但是最终部署的内容是完全相同的内容。而对于OSB本身的数据库也不再需要进行相关的数据库复制和配置同步。
如果A数据中心完全宕机,还需要部署服务,则需要对所有服务部署和变更进行记录,在数据中心A恢复后全部在数据中心A执行相同的操作一次。要实现这种能力需要在SOA管控平台进行相关的定制化变更才能支持。