tddl動態資料來源主要分為2層,每一層都實現了jdbc規範,以方便地整合到各種orm框架或者直接使用.每一層都各司其職.
tatomdatasource(tddlatomds)這一層並沒有實現真正的資料來源邏輯,而是依賴了乙個近似第三方的包-我們從jboss剝離出來的datasource,這一層的職責主要是將單個資料來源的配置放置到diamond伺服器中,實現資料來源配置的集中管理和動態變更.減少運維成本.tatomdatasource實際對應了乙個真正的資料來源.
tddl動態資料來源暫時支援mysql和oracle,但是因為每一層都是jdbc的實現,所以很容易擴充套件支援其他實現jdbc規範的資料來源.
基本功能
(1)主備資料庫動態容災切換
支援進行主備的對調切換,狀態對調後備庫變為主庫,主庫變為備庫
(2)相同資料分片讀寫分離
針對mysqlreplication機制進行的資料主備複製,可以直接使用groupdatasource來支援讀寫分離。讀寫分離支援權重設定,允許對不同庫使用不同的權重。
(3)讀重試
一台資料庫掛掉後,如果是個fatalexception(有定義),那麼會進入讀重試,以確保盡可能多的資料訪問可以在正常資料庫中訪問。
(4)資料庫掛掉排除,單執行緒重試
使用try–lock機制來進行執行緒保護,在第一次捕捉到fatalexception以後,只允許乙個執行緒進入資料庫進行資料訪問,直到資料庫可以正常的工作為止
(5)流量控制,資料庫保護
延展×××
(1)指定資料庫訪問(threadlocal)
一組對等資料庫中,寫庫一般只配置乙個,其餘資料庫都為備庫,因為通過複製機制,所以主備主鍵有延遲,對於各種型別的讀(實時讀和延遲讀),可以使用groupdatasourceroutehelper.executebygroupdatasourceindex(intdatasourceindex)指定需要訪問的資料庫.
(2)指定資料庫訪問(hint)
這是指定資料庫訪問的另外一種方式.這種方式是在sql之前加注釋,告知tddl動態資料來源該選擇第幾個資料庫.類似:/*+tddl_group()*/select*fromnormaltbl_0001wherepk=?變幻groupindex的數字即可指定具體的第幾個庫,從0開始.
基本功能
(1)資料來源配置集中管控
(2)定期密碼變更
(3)jboss資料來源連線池的配置管理和推送
延展×××
(1)動態建立,新增,減少資料來源
(2)資料庫r,w,na狀態通知,以及讀寫訪問控制,如置為na則資料庫所有訪問會直接丟擲sqlexception
(3)資料庫保護
tddl的動態資料來源配置都放置在diamond配置中心,而一條diamond配置包括乙個全域性唯一的dataid和group,tddl的配置資料也不例外,以下主要說明tddl動態資料來源的dataid拼寫以及每乙個dataid下資料的內容.(詳細示例請參考示例使用說明文件)
1.tgroupdatasource的配置
group中的配置主要是配置一組對等的資料的讀寫權重
dataid組成規範:「com.taobao.tddl.jdbc.group_v2.4.1_」+dbgroupkey
配置內容(示例):tddl_sample_0:r10w10p0,tddl_sample_0_bac:r10w0p0
其中tddl_sample_0和tddl_sample_0_bak就是下一層需要的dbkey,後面r為讀權重,w為寫權重
2.tatomdatasource的配置
global
dataid組成規範:「com.taobao.tddl.atom.global.」+dbkey
配置內容:
屬性key
說明ip
資料例項的ip
port
資料例項的埠
dbname
資料庫名稱
dbtype
mysql,oracle
dbstatus
rw,na
配置內容:
屬性key
說明username
該應用使用的使用者名稱
oraclecontype
oci,thin,如果db為mysql,則不用理會
minpoolsize
最小連線池
maxpoolsize
最大連線池
idletimeout
連線的最大空閒時間
blockingtimeout
等待連線的最大時間
preparedstatementcachesize
oracle專用
writerestricttimes
單位timesliceinmillis寫限制,預設空不限制
readrestricttimes
單位timesliceinmillis讀限制,預設空不限制
threadcountrestrict
併發執行緒限制,預設空不限制
timesliceinmillis
限制的時間單位
connectionproperties
連線引數
user
dataid組成規範:「com.taobao.tddl.atom.passwd.」+dbname+」.」+dbtype+」.」+username
配置內容:
屬性key
說明encpasswd
密碼enckey
金鑰
動態資料來源 mysql
前言 最近開發時遇到這樣乙個場景 在一段定時任務中需要將a資料庫中查詢的結果處理後,然後插入b資料庫,這是就考慮到用動態資料來源,在這裡記錄一下配置過程,僅供參考 一 在spring.xml新增配置 二 新增相應的工具類 public inte ce datasourceentry 資料來源切換實現...
spring 動態資料來源
spring 可以設定動態資料來源,這樣可以對程式來透明的支援切換操作不同的資料庫。這篇文章寫得非常不錯。測試通過,並準備在專案中使用這個方法。還有幾個問題希望大家給點意見 首先說一下我的需求 資料庫結構都是一樣,但具體有多少個資料庫不確定 視具體使用者而定 使用者操作那個資料庫要根據登入的時候進行...
birt 動態資料來源
有兩種方法 1.date set編輯器中有property binging的屬性,的query text輸入 var query select d.u.name from deal d,user u server s where s.id u.server id and u.id d.user id...