`
yale
  • 浏览: 361274 次
  • 性别: 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是专门从事可编程逻辑器件的半导体制造商,它提供从低功耗移动设备到高性能通信系统的多种产品线。在...

    Diamond 3.9 lisence万能版.zip

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

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

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

    Lattice Diamond官网下载简明教程

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

    taobao Diamond 部分maven jar包

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

    Diamond软件

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

    lattice Diamond多种解密方法

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

    Lattice_Diamond_Crack

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

    Diamond3.2破解文件

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

    Lattiece Diamond3.5 万能License

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

    Crystal Impact Diamond 3.1破解补丁

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

    Black_Diamond_EA (1)_forexearobot_forex_Diamond_DiamondEA下载_blac

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

    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 软件提供了几个关键的可用性优势,包括...

    Night Diamond五套指针.rar

    在"Night Diamond五套指针"这个压缩包中,包含了五种不同风格的夜光钻石指针设计,每一种都独具匠心,将钻石的璀璨与夜晚的神秘完美结合。这些指针在黑暗环境中尤为引人注目,不仅美观,还增加了操作的辨识度。 ...

    lattice diamond 3.7 license

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

    diamond picture.c

    diamond

    diamond2中文教程

    diamond2中文教程是diamond化學軟體的中文用户手册,旨在幫助用戶快速上手使用diamond軟體。下面是该教程中涉及到的知识点: 1. diamond軟體的基本概念:diamond是一款晶体和分子结构可视化軟體,能够对晶体和分子...

Global site tag (gtag.js) - Google Analytics