`
yale
  • 浏览: 356709 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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数据库和表的创建:

create database diamond;
create table config_info (                                       
               id bigint(64) PRIMARY KEY NOT NULL auto_increment,                
               data_id varchar(255) default NULL,                             
               group_id varchar(128) default NULL,                            
               content longtext NOT NULL,                                     
               md5 varchar(32) default NULL,                                  
               gmt_create datetime NOT NULL default '2013-05-01 00:00:00',    
               gmt_modified datetime NOT NULL default '2013-05-01 00:00:00',                                            
               UNIQUE KEY `uk_config_datagroup` (`data_id`,`group_id`)          
             ) ;

 

 

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

 

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

 

5)tddl库和表的创建:

    AtomDataSource库和表

CREATE DATABASE `qatest_normal_0`
CREATE TABLE `normaltbl_0001` (
`pk` int(11) PRIMARY KEY  NOT NULL,
`id` int(11) DEFAULT NULL,
`gmt_create` date DEFAULT "2010-12-17",
`name` varchar(30) DEFAULT NULL,
`floatCol` float(9,3) DEFAULT "0.000"

) 

 

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

 

CREATE DATABASE `qatest_normal_0_bac`;
use est_normal_0_bac;
CREATE TABLE normaltbl_0001 (
pk int(11) PRIMARY KEY NOT NULL,
id int(11) DEFAULT NULL,
gmt_create date DEFAULT "2010-12-17",
name varchar(30) DEFAULT NULL,
floatCol float(9,3) DEFAULT "0.000"
) 

 

 

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

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

    Global配置

dataId:com.taobao.tddl.atom.global.qatest_normal_0
group:DEFAULT_GROUP
content:
ip=127.0.0.1
port=3306
dbName=qatest_normal_0
dbType=mysql
dbStatus=RW

 

   App配置

dataId:com.taobao.tddl.atom.app.tddl_sample.qatest_normal_0

group:DEFAULT_GROUP

content:

userName=tddl

minPoolSize=1

maxPoolSize=2

idleTimeout=10

blockingTimeout=5

preparedStatementCacheSize=15

connectionProperties=characterEncoding=gbk

 

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

dataId:com.taobao.tddl.atom.passwd.qatest_normal_0.mysql.tddl
group:DEFAULT_GROUP
content:
encPasswd=xxxxxxx(密文,请用tddl-atom-datasource工程下的JbossPasswordDecode的方法进行
编译获得)

  

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

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

dataId:com.taobao.tddl.jdbc.group_V2.4.1_group_sample

group:DEFAULT_GROUP

content:

qatest_normal_0:r10w10,qatest_normal_0_bac:r10w0

 

   配置Atom(qatest_normal_0_bac)数据源

   Global配置

   

dataId:com.taobao.tddl.atom.global.qatest_normal_0_bac

group:DEFAULT_GROUP

content:

ip=127.0.0.1

port=3306

dbName=qatest_normal_0_bac

dbType=mysql

dbStatus=WR

     

 App配置

 

dataId:com.taobao.tddl.atom.app.tddl_sample.qatest_normal_0_bac

group:DEFAULT_GROUP

content:

userName=tddl

minPoolSize=1

maxPoolSize=2

idleTimeout=10

blockingTimeout=5

preparedStatementCacheSize=15

connectionProperties=characterEncoding=gbk

  

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

dataId:com.taobao.tddl.atom.passwd.qatest_normal_0_bac.mysql.tddl

group:DEFAULT_GROUP

content:

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的实现细节。

 

 

分享到:
评论
5 楼 shiqiang1 2014-12-11  
<dependency>
<groupId>com.taobao.diamond</groupId>
<artifactId>diamond-client</artifactId>
<version>3.7.0-sopen</version>
</dependency>

<dependency>
<groupId>com.taobao.diamond</groupId>
<artifactId>diamond-utils</artifactId>
<version>2.0.5.4.taocode-SNAPSHOT</version>
</dependency>





<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>


增加上面两个依赖包,然后在跳过测试,我的可以编译成功,但是不知道能不能用
4 楼 heisedalihua 2014-03-19  
setting.xml如何配置呢??????????
3 楼 tanyiliang 2013-10-16  
现在diamond 16版本的找不到了,如果用20版本集成tddl,有修改方案么,DefaultDiamondManager这个类
2 楼 xj1990129 2013-08-27  
请问能加你QQ吗?
1 楼 xj1990129 2013-08-26  
非常感谢博主的文章,困扰我两天的问题解决的.真心的感谢你

相关推荐

Global site tag (gtag.js) - Google Analytics