`
yale
  • 浏览: 359889 次
  • 性别: 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  
非常感谢博主的文章,困扰我两天的问题解决的.真心的感谢你

相关推荐

    分布式数据层TDDL.zip

    可分析的日志打印,日志流控,动态变更TDDL必须要依赖diamond配置中心(diamond是淘宝内部使用的一个管理持久配置的系统,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管理,同时diamond也已开源)。...

    diamond3_读取_micaps_diamond3_气象_3类数据_

    例如,使用Python的`pandas`库配合`struct`模块来解析二进制文件,或者使用`netCDF4`库处理NetCDF格式的Diamond3数据。 3. 使用第三方工具:有一些开源工具或库专注于处理气象数据,如`MetPy`(Python)、`ncl`...

    diamond 中文版 lattice软件

    《Lattice Diamond中文版软件详解》 在计算机科学与电子工程领域,电路设计是一项至关重要的工作,而Lattice公司的Diamond软件则是其中的一款杰出工具。它为用户提供了丰富的硬件描述语言(HDL)编译、仿真、综合...

    Lattice Diamond 3.1 User Guide

    Lattice Diamond 3.1是一款由Lattice Semiconductor Corporation开发的FPGA设计软件工具。Lattice Semiconductor是专门从事可编程逻辑器件的半导体制造商,它提供从低功耗移动设备到高性能通信系统的多种产品线。在...

    taobao Diamond 部分maven jar包

    **二、Maven Jar包的使用与作用** 在标题和描述中提到的“taobao Diamond 部分maven jar包”,意味着这些jar包是用于构建和运行与Diamond相关的Java应用程序的依赖。Maven是一个项目管理工具,它帮助开发者管理项目...

    Lattice厂家开发软件Diamond安装文件 License

    在 FPGA 开发领域,Lattice 公司的 Diamond 软件是一款不可或缺的工具,它提供了全面的设计环境,用于开发、仿真和编程基于 Lattice FPGA 的项目。本资源包含的是 Diamond 开发软件的安装文件以及 License 文件,...

    Diamond 3.9 lisence万能版.zip

    《Lattice Diamond 3.9 License 万能版解析与应用》 在电子设计自动化(EDA)领域,Lattice Diamond 是一款广泛使用的 FPGA 设计工具,由 Lattice Semiconductor 公司提供。它集成了逻辑综合、布局布线、仿真、硬件...

    Lattice Diamond官网下载简明教程

    《Lattice Diamond官方下载简明教程》 在电子设计领域,FPGA(Field-Programmable Gate Array)因其灵活性和高性能而被广泛应用。Lattice Semiconductor公司是一家知名的FPGA解决方案提供商,其开发工具Lattice ...

    Diamond软件

    《Diamond软件:绘制晶体结构的得力助手》 在理论计算领域,理解并模拟晶体结构是至关重要的。而Diamond软件,作为一个专为晶体结构展示和分析设计的强大工具,深受科研人员喜爱。它以其直观的界面、强大的功能以及...

    lattice Diamond多种解密方法

    lattice diamond 的license 多种解密方法,让你在lattice diamond芯片开发上,大展身手!

    Crystal Impact Diamond 3.1破解补丁

    Crystal Impact Diamond 3.1破解补丁。安装Crystal Impact Diamond 3.1后,将破解补丁复制粘贴到Diamond对应安装目录覆盖原文件即可。

    Diamond3.2破解文件

    diamond升级到了3.2i, 经测试原来的破解yourlicense在3.2H之前仍然有效!到这里下载3.2I,http://download.csdn.net/detail/daipengren/4424598 安装后,下载附件中的yourlicense覆盖原文件即可

    Black_Diamond_EA (1)_forexearobot_forex_Diamond_DiamondEA下载_blac

    《黑钻EA(1):外汇交易的钻石策略解析》 在外汇交易的世界里,一款优秀的自动交易系统能够为投资者带来稳定且高效的投资回报。"Black_Diamond_EA (1)_forexearobot_forex_Diamond_DiamondEA下载_blac" 提到的...

    Lattiece Diamond3.5 万能License

    多次验证,万能License ,无限制 多个版本的Diamond软件,均可使用,只需要将该Licesne放入Diamond安装路径的license文件下即可。。

    lattice diamond 3.7 license

    《Lattice Diamond 3.7 License详解》 在电子设计自动化(EDA)领域,Lattice Semiconductor公司的Lattice Diamond是一款至关重要的软件工具。该软件专为编程、仿真和设计莱迪思(Lattice)系列的现场可编程逻辑门...

    diamond picture.c

    diamond

    Lattice_Diamond_Crack

    Lattice Diamond的有效破解在网上目前找不到,这个是我从厂家要到的,亲测Lattice_Diamond.2.0.0.154有效破解

    Lattice Diamond 3.12 Reveal User Guide

    Lattice Diamond 3.12 Reveal User Guide Lattice Diamond 3.12 Reveal User Guide 是一款高级的 FPGA 片上调试工具,旨在帮助用户更方便地 debug 和优化 FPGA 设计。Reveal 软件提供了几个关键的可用性优势,包括...

    美国钻石公司数据采集卡DIAMOND-MM-32-AT 技术手册

    ### 美国钻石公司数据采集卡DIAMOND-MM-32-AT 技术手册 #### 描述 美国钻石公司的DIAMOND-MM-32-AT是一款高性能的数据采集卡,采用PC/104格式设计,具备全面的功能。该模块提供32路模拟输入通道(16位分辨率),可...

Global site tag (gtag.js) - Google Analytics