暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle gds的启示

白鳝的洞穴 2021-05-18
2298
记得几年前在西安参加“Oracle中国大客户技术论坛”这个传统会议的时候(这个会议是由Oracle全球研发副总监和中国大客户代表的技术交流会,主要是听取中国用户对Oracle产品新技术新功能的需求)绝大多数与会代表提出了增加在Oracle Dataguard/Active Dataguard环境上,客户端的自动切换功能的需求,当时Oracle官方承诺这个功能肯定可以有。
Oracle对大客户的需求响应确实是不错的,之前有好几个Oracle RAC功能上的改进也是中国区大客户提出的需求。这一次,中国客户的这个需求也得到了Oracle的积极响应,几年后,在Oracle  12.1里出现了一个新的服务,GDS,全局数据服务。

GDS服务让处于两个数据中心,通过ADG/OGG等复制手段进行复制的两套系统可以根据预定的规则进行自动切换。这种切换不仅仅是数据库主备角色的切换,还可以让oracle数据库的客户端应用基于FCF的框架实现自动切换。
GDS服务可以让基于Oracle dataguard/active dataguard或者OGG的应用系统的高可用架构更加清晰,用户使用起来更加方便。Oracle ADG/OGG/dataguard broker/GDS这些组件整合在一起,可以实现全自动的应用切换。再结合GDS支持的FCF(Oracle Fast Connection Failover),可以实现快速的应用自动故障切换。再结合一些0数据丢失技术(比如Farsync 远程同步备库技术),可以实现RPO=0,RTO<90秒的自动化高可用场景。,实现应用级的高可用。
GDS采用的是一种类似DB PROXY的方式,应用软件可以通过GDS服务的端口(缺省1522)像是连接普通普通的Oracle数据库一样进行连接。把复杂的故障切换、数据延时策略等都进行了很好的封装。大大的提升了用户使用OGG/ADG等高可用复制产品的体验。GDS包含下面的一些组件:
  • Global Service Manager (GSM):

-数据库连接监听器
-连接时或者运行时负载均衡
-数据库服务间的故障切换
  • GDS Catalog

-存储 GDS配置数据
  • GDSCTL

-GDS 配置管理命令行工具
  • GDS Pool

-数据库全局服务组
  • GDS Region

-一组数据库与应用客户端,用以区分本地与远程
-支持按region设置不同的连接策略
  • Global Service

-多个主数据库与复制数据库的数据库服务
GSM/GS负责根据规则实现Oracle TNS服务的代理,从而实现应用软件的负载均衡与主备数据库之间的自动故障切换;GDS CATALOG要存储在一个Oracle数据库SCHEMA里,存储了整个GDS的配置数据;GDSCTL是一个类似于srvctl的命令行工具,可以实现GDS的配置与操作命令;GDS POOL定义了一个数据库全局服务组,可以把主备数据库配置在一个GDS POOL中,通过角色驱动的自动化策略实现主备自动切换;GDS Region用于区分本地与外地,从而为主备访问,读写分离访问等提供负载均衡以及访问策略方面的隔离策略。
熟知RAC技术的DBA从上面GDS的各个组件的设计就可以看出,不同于我们现在的一些开源数据库的高可用组件,这是一套十分严密,高度融合的体系,把Oracle以往的一些高可用解决方案都做了紧密的集成,能够支撑十分复杂的高可用,异地双活,读写分离等应用场景。
实际上我们的国产数据库厂商也应该学习学习Oracle的工作思路,在数据库领域,除了极难提升的内核核心技术以外,增加对应用场景的支持也十分重要。GDS所能够支持的场景可以覆盖绝大多数用户的应用需求,如果能把高可用切换,0数据丢失,读写分离这些做好,提供一个类似Oracle GDS的组件,那么比你去提供一个经常出问题的RAC或者SHARDING要有用的多。数据库厂商应该多看看客户到底需要什么,而不是闷头去做一些实际上没有什么人会用或者敢用的东西。
文章转载自白鳝的洞穴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论