net.neoremind.fountain.datasource
类 AbstractHADatasource<T extends MysqlDataSource>

java.lang.Object
  继承者 net.neoremind.fountain.datasource.AbstractHADatasource<T>
所有已实现的接口:
MysqlDataSource
直接已知子类:
HANormalMysqlDataSource

public abstract class AbstractHADatasource<T extends MysqlDataSource>
extends Object
implements MysqlDataSource

mysql ha 支持的数据源抽象。该实现使用组装模式,实现MysqlDataSource接口。 支持泛型,mysqlbinlog、databus数据源的ha都可以基于此类实现。

该ha数据源包含多个MysqlDataSource,使用 DatasourceChoosePolicy来选择数据源,初始化或者当前数据源断开时都可以 使用 DatasourceChoosePolicy选择的新的数据源。

作者:
zhangxu

字段摘要
protected  T currentDataSource
          记录当前选中的数据源
protected  DatasourceChoosePolicy datasourceChoosePolicy
          数据源选择策略
protected  List<T> mysqlDataSourceList
          备选的数据源列表
 
构造方法摘要
AbstractHADatasource()
           
 
方法摘要
protected  void checkDataSourceListEmpty()
          检查备选数据源是否为空,如果为空则抛出异常
protected  void chooseMysqlDataSource()
          从备选数据源列表中选中可用的数据源源,具体的选择会被委托到DatasourceChoosePolicy 中, 选中的数据源需要使用DatasourceChooseCallbackHandler来回调做一些初始化操作。
 void close()
          关闭数据源
protected abstract
<E> E
doHaTask(String command, String method, TaskExcutor<E> taskExecutor)
          在ha的环境中封装一批类似的业务逻辑,比如执行sql,查询表的元数据等,本身是一种策略模式,被用于模板方法中
 DatasourceChoosePolicy getDatasourceChoosePolicy()
           
 String getIpAddress()
          获取当前数据源的ip地址
protected abstract  org.slf4j.Logger getLogger()
          获取当前的logger对象
 List<T> getMysqlDataSourceList()
           
 int getPort()
          获取当前数据源的端口
 boolean isOpen()
          数据源是否已经处于打开状态
 void open()
          打开一个数据源,用以读取数据
protected abstract  void prepareChoosedDatasouce(T choosedDattasource)
          初始化选中的数据源
 ResultSetPacket query(String query)
          执行查询sql
 TableMeta queryTableMeta(String tableFullName)
          查询给定表的schema
protected  void safeCloseCurrent()
          安全的关闭数据源,并记录日志
 void setDatasourceChoosePolicy(DatasourceChoosePolicy datasourceChoosePolicy)
           
 void setMysqlDataSourceList(List<T> mysqlDataSourceList)
           
 OKPacket update(String query)
          执行修改数据的sql
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

mysqlDataSourceList

protected List<T extends MysqlDataSource> mysqlDataSourceList
备选的数据源列表


currentDataSource

protected volatile T extends MysqlDataSource currentDataSource
记录当前选中的数据源


datasourceChoosePolicy

protected DatasourceChoosePolicy datasourceChoosePolicy
数据源选择策略

构造方法详细信息

AbstractHADatasource

public AbstractHADatasource()
方法详细信息

getMysqlDataSourceList

public List<T> getMysqlDataSourceList()

setMysqlDataSourceList

public void setMysqlDataSourceList(List<T> mysqlDataSourceList)

getDatasourceChoosePolicy

public DatasourceChoosePolicy getDatasourceChoosePolicy()

setDatasourceChoosePolicy

public void setDatasourceChoosePolicy(DatasourceChoosePolicy datasourceChoosePolicy)

doHaTask

protected abstract <E> E doHaTask(String command,
                                  String method,
                                  TaskExcutor<E> taskExecutor)
                       throws NoSuchAlgorithmException,
                              IOException
在ha的环境中封装一批类似的业务逻辑,比如执行sql,查询表的元数据等,本身是一种策略模式,被用于模板方法中

参数:
command -
method -
taskExecutor -
返回:
抛出:
NoSuchAlgorithmException
IOException

prepareChoosedDatasouce

protected abstract void prepareChoosedDatasouce(T choosedDattasource)
                                         throws IOException,
                                                NoSuchAlgorithmException,
                                                TimeoutException
初始化选中的数据源

参数:
choosedDattasource -
抛出:
IOException
NoSuchAlgorithmException
TimeoutException

getLogger

protected abstract org.slf4j.Logger getLogger()
获取当前的logger对象

返回:

open

public void open()
          throws IOException,
                 NoSuchAlgorithmException,
                 TimeoutException
从接口 MysqlDataSource 复制的描述
打开一个数据源,用以读取数据

指定者:
接口 MysqlDataSource 中的 open
抛出:
IOException
NoSuchAlgorithmException
TimeoutException

isOpen

public boolean isOpen()
从接口 MysqlDataSource 复制的描述
数据源是否已经处于打开状态

指定者:
接口 MysqlDataSource 中的 isOpen
返回:

close

public void close()
从接口 MysqlDataSource 复制的描述
关闭数据源

指定者:
接口 MysqlDataSource 中的 close

getIpAddress

public String getIpAddress()
从接口 MysqlDataSource 复制的描述
获取当前数据源的ip地址

指定者:
接口 MysqlDataSource 中的 getIpAddress
返回:

getPort

public int getPort()
从接口 MysqlDataSource 复制的描述
获取当前数据源的端口

指定者:
接口 MysqlDataSource 中的 getPort
返回:

update

public OKPacket update(String query)
                throws IOException,
                       NoSuchAlgorithmException
从接口 MysqlDataSource 复制的描述
执行修改数据的sql

指定者:
接口 MysqlDataSource 中的 update
返回:
抛出:
IOException
NoSuchAlgorithmException

query

public ResultSetPacket query(String query)
                      throws IOException,
                             NoSuchAlgorithmException
从接口 MysqlDataSource 复制的描述
执行查询sql

指定者:
接口 MysqlDataSource 中的 query
返回:
抛出:
IOException
NoSuchAlgorithmException

queryTableMeta

public TableMeta queryTableMeta(String tableFullName)
                         throws IOException,
                                NoSuchAlgorithmException
从接口 MysqlDataSource 复制的描述
查询给定表的schema

指定者:
接口 MysqlDataSource 中的 queryTableMeta
返回:
抛出:
IOException
NoSuchAlgorithmException

checkDataSourceListEmpty

protected void checkDataSourceListEmpty()
                                 throws DataSourceInvalidException
检查备选数据源是否为空,如果为空则抛出异常

抛出:
DataSourceInvalidException

chooseMysqlDataSource

protected void chooseMysqlDataSource()
                              throws IOException,
                                     NoSuchAlgorithmException
从备选数据源列表中选中可用的数据源源,具体的选择会被委托到DatasourceChoosePolicy 中, 选中的数据源需要使用DatasourceChooseCallbackHandler来回调做一些初始化操作。

抛出:
IOException
NoSuchAlgorithmException

safeCloseCurrent

protected void safeCloseCurrent()
安全的关闭数据源,并记录日志



Copyright © 2016 neoremind. All rights reserved.