37

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

 4 years ago
source link: http://blog.sina.com.cn/s/blog_493a84550102yrkq.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ERvyiuN.jpg!web

在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管控平台进行相关的定制化变更才能支持。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK