TDDL動態資料來源開源 基本說明

2021-09-24 14:33:38 字數 3034 閱讀 7057

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...