tddl+diamond(二)

diamond的相关原理介绍,我们已经通过其他的文章进行了讲解,这篇文章我们着重讲解下diamond的初始化配置,以及tddl的初始化配置。

下载、部署diamond

diamond的svn下载地址:http://code.taobao.org/svn//diamond/trunk(下载16版本的diamond,我们稍后要用到tddl,因此我们不能下载diamond的最新版本20,因为tddl的最新的源代码中调用diamond的源代码部分都是建立在diamond的16版本前的,比如调用的:diamond-client功能包下的com.taobao.diamond.manager.impl.DefaultDiamondManager的类,在tddl中就使用该类的Builder内部类,但是在16版本以后的diamond该类的源代码就发生了很大的变化,当然可以通过该svn的历史看到diamond之后版本的修改情况,如果是自己的工程需要用到tddl,那么我们可以选择最新版本的diamond进行下载)

下载完成后,mvn 一次(建议不要用eclipse下meven插件通过meven builder执行,最好在命令行执行(diamond根目录中,pom.mxl所在的目录,直接执行mvn jar:jar,一次生成每个子模块相应的jar文件))。

因为我们将diamond用作tddl的配置管理系统,而tddl也是meven项目,因此我们需要在注册中心,对diamond进行注册,便于tddl配置,注册diamond-client到注册中心(到生成好的diamond-client-2.0.5.3.taocode-SNAPSHOT.jar的所在目录,执行下述命令):
mvn install:install-file -Dfile=diamond-client-2.0.5.3.taocode-SNAPSHOT.jar -DgroupId=com.taobao.diamond -

DartifactId=diamond-client -Dversion=2.0.5.3.taocode-SNAPSHOT  -Dpackaging=jar  

命令行如果提示build success,表示成功,我们可以查看下注册的情况:

 

下载、部署tddl

tddl的svn下载地址:http://code.taobao.org/svn//tddl-dynamic-datasource/trunk

下载后,我们maven build该项目根目录下的pom.xml,发现错误,那么我们依次按照下述步骤来排除错误:

1)因为项目需要依赖ojdbc14,但是通过mvn build下载相关jar时,报错下面内容无法下载:http://repo.maven.apache.org/maven2/com/oracle/ojdbc14/10.2.0.3.0/ojdbc14-10.2.0.3.0.jar
进入网站去查看发现该文件已经不存在了,因此只能修改pom.xml文件中相关内容(注释掉根目录
下的pom.xml、tbdatasource、tddl-atom-datasource目录下的pom.xml文件的ojdbc14的依赖)

2)注释掉根目录以及下述目录(tddl-interact)下pom.xml文件中的一个插件内容(artifactId为maven-surefire-plugin的插件,该插件用作单元测试,因此我们可以不需要该插件,如果可以自己查看相关单元测试的类,然后引入到自己的项目中进行测试)。

3)tddl-common模块包中的类中会调用diamond项目的类,这个时候我们将在diamond的根据目下
执行:mvn -Dmaven.test.skip=true clean package install assembly:assembly -U    对源代码打包,然后把相关的client和utils的源代码jar包拷贝到tddl-common的对应目录中:

4)由于以下类都是单元测试类,对功能没有影响:

注释com.taobao.tddl.common.util.TimesliceFlowControlTest文件中的内容所有内容,只留类名

注释com.taobao.tddl.jdbc.atom.common.TAtomConfParserUnitTest类中的所有内容,只留类名
注释com.taobao.tddl.jdbc.atom.common.TAtomConURLToolsUnitTest类中的所有内容,只留类名
注释com.taobao.tddl.jdbc.atom.StaticTAtomDataSourceUnitTest类中的所有内容,只留类名
注释com.taobao.tddl.jdbc.atom.TAtomDataSourceUnitTest类中的所有内容,只留类名
注释com.taobao.tddl.jdbc.group目录下的类中的所有内容,只留类名(包含group下的子包的类)

com.taobao.tddl.common.util.TimesliceFlowControl类中的注释全部拿掉

 

经过上述的步骤后,我们就可以对tddl根目录下的pom.xml文件进行maven build了!

 

当两个maven项目都可以正确build后,导入tddl下tddl-sample的maven项目(

Tddl 动态数据源的开源代码中,有一个tddl-sample 工程, 该工程演示了如何使用tddl动态数据源.但需要一些配置支持,下面截图中发现多了一个jar包,因为我们要对tddl的atom进行测试,并测试diamond的效果,因此需要导入我们之前tddl build好的相关jar包,如果测试group,同样导入生成好的groupj的ar包):

 

配置diamond和tddl的测试环境

1)MySQL用户的创建

创建一个tddl用户:密码为tddl,并赋予相应的权限,创建完成后,将数据库的配置信息(IP,用户名,密码)替换diamond-server工程的src/resources/jdbc.properties文件中的db.url,db.user,db.password属性内容,这里建立的库名,用户名和密码,必须和jdbc.properties中对应的属性相同,user.properties文件存放的是登录到diamond-server服务器中的用户名和密码,可以自由进行管理(默认用户名/密码:abc/123);

目录位置:

 

上述配置完成后,在diamond-server源代码根目录下,执行mvn clean package -Dmaven.test.skip,成功后会在diamond-server/target目录下生成diamond-server.war,我们生成好的war发布到tomcat下,tomcat的webapps下diamond-server的项目的根目录中需要建立文件diamond,文件内容是diamond-server的地址列表,一行一个地址,地址为IP,如:127.0.0.1,tomcat端口最好保持8080,不需要对tomcat进行任何改动.

 

2)客户端获取服务端地址,在本地host文件中添加(com.taobao.diamond.common.Constants.Java的初始化配置中定义了a.b.c,可以修改其源代码配置):

ip    a.b.c

 

3)diamond数据库和表的创建:

Java代码   收藏代码
  1. create database diamond;  
  2. create table config_info (                                         
  3.                id bigint(64) PRIMARY KEY NOT NULL auto_increment,                  
  4.                data_id varchar(255default NULL,                               
  5.                group_id varchar(128default NULL,                              
  6.                content longtext NOT NULL,                                       
  7.                md5 varchar(32default NULL,                                    
  8.                gmt_create datetime NOT NULL default '2013-05-01 00:00:00',      
  9.                gmt_modified datetime NOT NULL default '2013-05-01 00:00:00',                                              
  10.                UNIQUE KEY `uk_config_datagroup` (`data_id`,`group_id`)            
  11.              ) ;  

 

 

4)启动tomcat,即启动了diamond-server:

 

这个时候我们经过相应的配置,就可以来动态管理你自己web项目的配置信息了,最好把你的web项目和diamond server是部署在不同机器上的,端口号一定是8080,不能修改(所以必须部署在不同的机器上),由于我们是tddl来测试配置的项目,因此我们无需配置,只需要发布diamond-server到tomcat下即可。

 

5)tddl库和表的创建:

    AtomDataSource库和表

Java代码   收藏代码
  1. CREATE DATABASE `qatest_normal_0`  
  2. CREATE TABLE `normaltbl_0001` (  
  3. `pk` int(11) PRIMARY KEY  NOT NULL,  
  4. `id` int(11) DEFAULT NULL,  
  5. `gmt_create` date DEFAULT "2010-12-17",  
  6. `name` varchar(30) DEFAULT NULL,  
  7. `floatCol` float(9,3) DEFAULT "0.000"  
  8.   
  9. )   

 

  GroupDataSource库和表的脚本和上面脚本部分一样,只需要添加不一样的脚本:

 

Java代码   收藏代码
  1. CREATE DATABASE `qatest_normal_0_bac`;  
  2. use est_normal_0_bac;  
  3. CREATE TABLE normaltbl_0001 (  
  4. pk int(11) PRIMARY KEY NOT NULL,  
  5. id int(11) DEFAULT NULL,  
  6. gmt_create date DEFAULT "2010-12-17",  
  7. name varchar(30) DEFAULT NULL,  
  8. floatCol float(9,3) DEFAULT "0.000"  
  9. )   

 

 

6)登录后进入后台管理界面,然后点击“配置信息管理”—— “添加配置信息”,在输入框中输入dataId、group、内容,最后点击“提交”即可(tddl的配置方式来源于http://rdc.taobao.com/team/jm/archives/1642):

    在diamond中配置Atom数据源(下述配置主要是管理tddl的动态数据源,如果是自己公司的项目,请自己添加相关dataId、group等)

    Global配置

Java代码   收藏代码
  1. dataId:com.taobao.tddl.atom.global.qatest_normal_0  
  2. group:DEFAULT_GROUP  
  3. content:  
  4. ip=127.0.0.1  
  5. port=3306  
  6. dbName=qatest_normal_0  
  7. dbType=mysql  
  8. dbStatus=RW  

 

   App配置

Java代码   收藏代码
  1. dataId:com.taobao.tddl.atom.app.tddl_sample.qatest_normal_0  
  2.   
  3. group:DEFAULT_GROUP  
  4.   
  5. content:  
  6.   
  7. userName=tddl  
  8.   
  9. minPoolSize=1  
  10.   
  11. maxPoolSize=2  
  12.   
  13. idleTimeout=10  
  14.   
  15. blockingTimeout=5  
  16.   
  17. preparedStatementCacheSize=15  
  18.   
  19. connectionProperties=characterEncoding=gbk  

 

   User配置(dataId最后一段'.tddl’和用户名紧相关,如果数据库用户名不是tddl,请修改这个dataId)

Java代码   收藏代码
  1. dataId:com.taobao.tddl.atom.passwd.qatest_normal_0.mysql.tddl  
  2. group:DEFAULT_GROUP  
  3. content:  
  4. encPasswd=xxxxxxx(密文,请用tddl-atom-datasource工程下的JbossPasswordDecode的方法进行  
  5. 编译获得)  

  

  在diamond中配置Group数据源(下述配置主要是管理tddl的动态数据源,如果是自己公司的项目,请自己添加相关dataId、group等)

    配置Group一组对等的数据的读写权重

Java代码   收藏代码
  1. dataId:com.taobao.tddl.jdbc.group_V2.4.1_group_sample  
  2.   
  3. group:DEFAULT_GROUP  
  4.   
  5. content:  
  6.   
  7. qatest_normal_0:r10w10,qatest_normal_0_bac:r10w0  

 

   配置Atom(qatest_normal_0_bac)数据源

   Global配置

   

Java代码   收藏代码
  1. dataId:com.taobao.tddl.atom.global.qatest_normal_0_bac  
  2.   
  3. group:DEFAULT_GROUP  
  4.   
  5. content:  
  6.   
  7. ip=127.0.0.1  
  8.   
  9. port=3306  
  10.   
  11. dbName=qatest_normal_0_bac  
  12.   
  13. dbType=mysql  
  14.   
  15. dbStatus=WR  

     

 App配置

 

Java代码   收藏代码
  1. dataId:com.taobao.tddl.atom.app.tddl_sample.qatest_normal_0_bac  
  2.   
  3. group:DEFAULT_GROUP  
  4.   
  5. content:  
  6.   
  7. userName=tddl  
  8.   
  9. minPoolSize=1  
  10.   
  11. maxPoolSize=2  
  12.   
  13. idleTimeout=10  
  14.   
  15. blockingTimeout=5  
  16.   
  17. preparedStatementCacheSize=15  
  18.   
  19. connectionProperties=characterEncoding=gbk  

  

 User配置(dataId最后一段’.tddl’和用户名紧相关,如果数据库用户名不是tddl,请修改这个dataId)

Java代码   收藏代码
  1. dataId:com.taobao.tddl.atom.passwd.qatest_normal_0_bac.mysql.tddl  
  2.   
  3. group:DEFAULT_GROUP  
  4.   
  5. content:  
  6.   
  7. encPasswd=xxxxxxx(密文,请用tddl-atom-datasource工程下的JbossPasswordDecode的方法获得)  

 

 经过上述步骤后,tddl的数据源配置信息已经通过diamond-server添加到数据库diamond的config-info表中了,一共7条记录。

        下面我们就可以通过代码去测试看看是否diamond-server存储的tddl的数据源是否正常被tddl例子调用了(atom、group相关的依赖已经在pom.xml中默认添加了,我们无需再次添加):

 

 

            我们直接运行tddl-simple的com.taobao.tddl.sample.atom.AtomSample.java单元测试类,没有什么问题,如果是想更多的了解diamond以及tddl,我们可以把domind-client的单元测试类依次debug运行,这样我们可以更多的了解tddl以及diamond的实现细节。


转载于:http://yale.iteye.com/blog/1860019

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值