此章节具体介绍一下淘宝TDDL具体配置和使用

1. Spring配置文件配置:
================spring-mybatis.xml 中配置=============
<bean id="dataSource" class="com.taobao.tddl.group.jdbc.TGroupDataSource" init-method="init" destroy-method="destroyDataSource">
<!-
appName gome_market_search_index :应用名称 名字随意起 有意义即可
dbGroupKey gome_market_search_index_group_0 :db组 名字随意起有意义即可 主要作用: 可以配置多个数据源 作为一组
->
<property name="appName" value="gome_market_search_index" />
<property name="dbGroupKey" value="gome_market_search_index_group_0" />
</bean>

2.1 用一张图了解TDDL配置

2.2 TDDL需要结合diamond使用,以下是diamond需要的相关配置,必须配置到默认组下 DEFAULT_GROUP

   
2.3===========配置数据源(ip端口等)===========
##com.taobao.tddl.atom.global.数据源名称 (gome_market_search_index_db_0)
com.taobao.tddl.atom.global.gome_market_search_index_db_0

##数据库ip地址
ip=10.144.43.141
#数据库端口
port=3306
##数据库名称
dbName=gome_market_prod
##数据库类型
dbType=mysql
#数据库状态
dbStatus=RW 2.4===========配置数据源(连接池)==============
##com.taobao.tddl.atom.app.应用名称.数据源名
com.taobao.tddl.atom.app.gome_market_search_index.gome_market_search_index_db_0

#数据库用户
userName=root
#最小连接数
minPoolSize=50
#最大连接数
maxPoolSize=100
#连接的最大空闲时间
idleTimeout=10
#等待连接的最大时间
blockingTimeout=5000
#预处理缓存大小
preparedStatementCacheSize=50
#数据库连接属性
connectionProperties=autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 2.5===========配置数据库(com.taobao.tddl.atom.passwd.数据库名.mysql.用户名)==========
com.taobao.tddl.atom.passwd.gome_market_prod.mysql.root ##数据库密码 root
encPasswd=-64d29910cc13d220ea2e89c490b1e4bf
encKey=f97xK9qh3BSXv5iy 2.6============配置dbGroup=====================
com.taobao.tddl.jdbc.group_V2.4.1_gome_market_search_index_group_0 #w0r1 0个读库连接 1个读库连接
gome_market_search_index_db_0:w0r1

上记2.5章节encPasswd 需要加密操作,根据encKey加密

SecureIdentityLoginModule.java  将代码拷贝到工程运行

package service;

import java.math.BigInteger;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec; import org.apache.commons.lang.StringUtils; public class SecureIdentityLoginModule { private static byte[] ENC_KEY_BYTES = "This is a finger".getBytes(); private String userName; private String password; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getDecodedPassword() throws Exception {
return new String(decode(password));
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((password == null) ? 0 : password.hashCode());
result = prime * result + ((userName == null) ? 0 : userName.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
SecureIdentityLoginModule other = (SecureIdentityLoginModule) obj;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (userName == null) {
if (other.userName != null)
return false;
} else if (!userName.equals(other.userName))
return false;
return true;
} public static String encode(String encKey, String secret) throws NoSuchAlgorithmException, NoSuchPaddingException,
InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
byte[] kbytes = SecureIdentityLoginModule.ENC_KEY_BYTES;
if (StringUtils.isNotBlank(encKey)) {
kbytes = encKey.getBytes();
}
SecretKeySpec key = new SecretKeySpec(kbytes, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encoding = cipher.doFinal(secret.getBytes());
BigInteger n = new BigInteger(encoding);
return n.toString(16);
} public static String encode(String secret) throws NoSuchPaddingException, NoSuchAlgorithmException,
InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
return SecureIdentityLoginModule.encode(null, secret);
} public static String decode(String encKey, String secret) throws NoSuchPaddingException, NoSuchAlgorithmException,
InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
byte[] kbytes = SecureIdentityLoginModule.ENC_KEY_BYTES;
if (StringUtils.isNotBlank(encKey)) {
kbytes = encKey.getBytes();
}
SecretKeySpec key = new SecretKeySpec(kbytes, "AES");
BigInteger n = new BigInteger(secret, 16);
byte[] encoding = n.toByteArray();
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decode = cipher.doFinal(encoding);
return new String(decode);
} public static char[] decode(String secret) throws NoSuchPaddingException, NoSuchAlgorithmException,
InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
return SecureIdentityLoginModule.decode(null, secret).toCharArray();
} public static void main(String[] args) throws Exception {
System.out.println("Encoded password: " + new String(SecureIdentityLoginModule.encode("f97xK9qh3BSXv5iy","root")));
System.out.println("decoded password: " + new String(SecureIdentityLoginModule.decode("5a826c8121945c969bf9844437e00e28"
)));
}

}

如果没有配置encKey 需要在diamond配置 一个dms组 dataid:decryptPasswordUrl   需要配置密码验证策略  建议不使用

3.工程pom文件中引入依赖  注意:此依赖不作为公共依赖

<dependency>
<groupId>com.taobao.tddl</groupId>
<artifactId>tddl-matrix</artifactId>
<version>5.1.7.g1-SNAPSHOT</version>
<exclusions>
<exclusion>
<artifactId>tddl-repo-demo</artifactId>
<groupId>com.taobao.tddl</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.taobao.tddl</groupId>
<artifactId>tddl-config-diamond</artifactId>
<version>5.1.7.g1-SNAPSHOT</version>
</dependency>

4.使用中遇到的问题解决  maven工程排除此版本的依赖即可

淘宝TDDL配置以及使用的更多相关文章

  1. [转帖]剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER)

    剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER) 博客分类: 原博客地址: http://qq85609655.iteye.com/blog/2035176 distrib ...

  2. TDDL-剖析淘宝TDDL

    TDDL-剖析淘宝TDDL 学习了:https://blog.csdn.net/sumj7011/article/details/78286741 Taobao Distribute Data Lay ...

  3. 带你剖析淘宝TDDL——Matrix层的分库分表配置与实现

    前言 在开始讲解淘宝的TDDL(Taobao Distribute Data Layer)技术之前,请允许笔者先吐槽一番.首先要开喷的是淘宝的社区支持做的无比的烂,TaoCode开源社区上面,几乎从来 ...

  4. 笔者带你剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER)

    注:本文部分内容引用本人博客http://gao-xianglong.iteye.com/blog/1973591   前言 在开始讲解淘宝的TDDL(Taobao Distribute Data L ...

  5. 淘宝TDDL深入浅出

    前言 在开始讲解淘宝的 TDDL(Taobao Distribute Data Layer) 技术之前,请允许笔者先吐槽一番.首先要开喷的是淘宝的社区支持做的无比的烂, TaoCode 开源社区上面, ...

  6. npm淘宝镜像配置

    npm config set registry https://registry.npm.taobao.org

  7. 淘宝分布式数据层TDDL

    剖析淘宝 TDDL ( TAOBAO DISTRIBUTE DATA LAYER ) 注:原文:http://gao-xianglong.iteye.com/blog/1973591   前言 在开始 ...

  8. TDDL:来自淘宝的分布式数据层

    淘宝根据自身业务需求研发了TDDL(Taobao Distributed Data Layer)框架,主要用于解决分库分表场景下的访问路由(持久层与数据访问层的配合)以及异构数据库之间的数据同步,它是 ...

  9. 淘宝分布式数据层:TDDL[转]

    淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个 ...

随机推荐

  1. python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)

    pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...

  2. 【转载】redis优化

    原文链接 批量操作优化: 在使用redis的时候,客户端通过socket向redis服务端发起请求后,等待服务端的返回结果. 客户端请求服务器一次就发送一个报文 -> 等待服务端的返回 -> ...

  3. Linux学习笔记之Xshell配色方案定制

    点击 Xshell 面板顶部的如下按钮. 点击 Browse 按钮,弹出如下面板,选择 ANSI Colors on Black,然后点击右侧save as 按钮,命名为 zkl.   这里其实就是复 ...

  4. Android中的颜色值

    1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如: 1 2 3 public static final class color {     public static final ...

  5. 20145103《JAVA程序设计》课程总结

    每周读书笔记链接汇总 假期笔记 http://www.cnblogs.com/20145103fwh/p/5248170.html 第一周读书笔记 http://www.cnblogs.com/201 ...

  6. 北京电子科技学院(BESTI)实验报告2

    北京电子科技学院(BESTI)实验报告2 课程: 信息安全系统设计基础 班级:1452.1453 姓名:(按贡献大小排名)郑凯杰 .周恩德 学号:(按贡献大小排名)20145314 .20145217 ...

  7. 20145327实验三 敏捷开发与XP实践

    敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 程序缩进: 结对git的应用 PSP 步骤 耗时 百分比 需求分析 15m 12.5% 设计 30m 25% 代码实现 45m 37.5 ...

  8. HAL编译问题

    1 make:进入目录'/opt/FriendlyARM/tiny4412/android/android-4.1.2'make: *** 没有规则可以创建“out/target/product/ge ...

  9. minSdk(API 21) > deviceSdk(API 17)解决

    运行一个开源的项目出现“minSdk(API 21) > deviceSdk(API 17)”的提示,因为我用的是手机是sdk(API17)的,而项目要求是最低版本是minSdk(API 21) ...

  10. zip unzip tar 压缩解压

    yum install -y unzip zip    yum安装zip -r mydata.zip mydata    mydata目录压缩为mydata.zipunzip mydata.zip - ...