Skip to content
mengshi edited this page Jan 27, 2014 · 1 revision

Group Datasource 是构建于Atom Datasource之上的数据源,他的目标是管理多组数据完全相同的数据库,比如通过mysql或通过oracle进行数据复制后的主备数据库。主要用来解决读写分离,主备切换的问题。

 

功能

主备切换

    支持进行主备的对调切换,状态对调后备库变为主库,主库变为备库。

 

读写分离

    针对mysql replication机制进行的数据主备复制,可以直接使用Group Datasource来支持读写分离。读写分离支持权重设置,允许对不同库使用不同的权重。

 

线程保护

    线程安全保护,也是Group Datasource目前提供的重要的功能。
    因为在数据库挂掉的时候,数据库会抛出一系列的异常来告知应用系统某个数据库已经挂掉了。TDDL group datasource会捕捉所有异常,判断是否是一个因为数据库不可恢复的问题导致异常抛出。如果是,则进入重试模式。
    在重试模式中,只允许一个线程进行数据库操作,只有这一个线程操作成功,没有抛出数据库不可恢复异常时,才允许其他线程并行操作该数据库。

    这样如果一个数据源挂掉,业务系统内多线程调用请求不会因为同时等待单个数据库超时而消耗大量请求能力,导致app server因为请求来不及处理而挂掉。

 

Hint功能

    由于主备之间可能有一定的延迟,数据在某一时间点可能不一致,因此有一些查询需要指定在主机或者备机上进行。Group Datasource 提供了由业务完全自主控制读取和访问数据库的能力。

    Group Datasource允许用户通过hint的方式,强制指定SQL在主机或者备机上执行。


目标群体

  1. 需要主备结构,备库可读场景的用户
  2. 有可能进行主备切换的用户

Clone this wiki locally