`

diamond_使用与简介

 
阅读更多

 

它是什么

diamond为应用系统提供了获取配置的服务,应用不仅可以在启动时从diamond获取相关的配置,

而且可以在运行中对配置数据的变化进行感知并获取变化后的配置数据.

 

为什么需要它

diamond的特点是简单、可靠、易用:

简单:整体结构非常简单,从而减少了出错的可能性。

可靠:应用方在任何情况下都可以启动,在承载阿里核心系统并正常运行多年来,没有出现过任何重大故障。

易用:客户端使用只需要两行代码,暴露的接口都非常简单,易于理解。

 

常见应用场景

  1. 分表分库的DB服务器地址.
  2. 中间件的服务地址.
  3. 经常变化的开关,配置.

简单使用

引入

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

  

客户端代码(推荐使用方式3,若想绕过其它使用方式,强制使用方式三,DefaultDiamondManager最后一个参数写成true)

DiamondClientExample
package com.taobao.diamond.client;
import java.util.concurrent.Executor;
import com.taobao.diamond.manager.DiamondManager;
import com.taobao.diamond.manager.ManagerListener;
import com.taobao.diamond.manager.impl.DefaultDiamondManager;
/**
 * <pre>
 * diamond-server的ip列表依次按如下方式<1>,<2>,<3>寻找,寻到配置的ip列表就结束寻找,没寻找到就报异常.
 * 使用diamond时,
 *
 * 方式<1>:
 *      DefaultDiamondManager构造器中如果指定了ip列表,则以这个ip列表为准
 * 方式<2>:
 *      类路径下,增加配置文件ServerAddress,其中指定ip列表
 * 新方式<3>(兼容老方式):
 *      diamond-client首次启用会自动添加.diamond.domain文件到用户目录下
 *      客户端会使用文件中配置的域名来访问diamond-server
 *      各环境域名:
 *      diamond.sit.ds.gome.com.cn
 *      diamond.uat.ds.gome.com.cn
 *      diamond.pre.ds.gome.com.cn
 *      diamond.live.ds.gome.com.cn
 *
 * 文件.diamond.domain说明:
 *  (1)windows和mac的操作系统默认内容是diamond.sit.ds.gome.com.cn,可以自行修改
 *  (2)linux操作系统不设置默认内容,需要修改.diamond.domain来选择域名
 *  (3)若要兼容老的域名访问方式,请在.diamond.domain中配置a.b.c,同时在/etc/hosts配置a.b.c指向自己的nginx
 *
 *
 * </pre>
 *
 * @author liutingfeng
 *
 */
public class DiamondTestClient {
    public static DiamondManager manager;
    public static void main(String[] str) {
        initDiamondManager();
    }
    private static void initDiamondManager() {
        manager = new DefaultDiamondManager("group_test", "dataId_test", new ManagerListener() {
            public void receiveConfigInfo(String configInfo) {
                restart();
            }
            public Executor getExecutor() {
                return null;
            }
        },true);//true表示强制使用域名
        restart();
    }
    private static void restart() {
        String availableConfigureInfomation = manager.getAvailableConfigureInfomation(5000);
        System.out.println("availableConfigureInfomation=" + availableConfigureInfomation);
    }
}

 

 

服务端配置

 

国美线上的部署结构

 

 

容灾性

1、数据库不可用.

2、所有server均不可用.

3、client主动删除了snapshot.

4、client没有备份配置数据,导致其不能配置“容灾目录”.

diamond与springPropertyPlaceholder动态集成

///////////////////动态配置说明/////////////////////
1.引入

<dependency>
  <groupId>com.gome</groupId>
  <artifactId>gome-common-spring</artifactId>
  <version>1.0.0</version>
</dependency>
<dependency>
  <groupId>com.taobao.diamond</groupId>
  <artifactId>diamond-client</artifactId>
  <version>2.0.5.4.taocode-SNAPSHOT</version>
</dependency>
<dependency>
  <groupId>com.taobao.diamond</groupId>
  <artifactId>diamond-utils</artifactId>
  <version>2.0.5.4.taocode-SNAPSHOT</version>
</dependency>


2.项目下
  config.properties //配置了diamond定义的配置信息的 groupId和dataId 名称
  //注意这个配置规范
  ServerAddress //配置diamond的服务器pi地址

3.spring 配置

<bean id="diamondProperties" class="com.gome.spring.utils.DiamondProperties" />
<bean id="customPropertyConfigurer"
 class="com.gome.spring.lang.CustomPropertyPlaceholderConfigurer">
 <constructor-arg index="0">
 <set>
 <!-- 注意这里若没有本地配置文件时可以不配置value,但constructor-arg index set必须保留 若配置了本地配置文件,则该配置将和diamond远程配置文件合并 -->
 <value>classpath:internal.properties</value>
 </set>
 </constructor-arg>
 <constructor-arg index="1" ref="diamondProperties" />
</bean

diamond执行流程

1.读本地用户目录下 .diamond.domain 文件中的域名 ,比如 diamond.uat.ds.gome.com.cn , 如果使用a.b.c 需要在服务器hosts文件中配置

2.读步骤1中域名对应的ip , 比如:ping diamond.uat.ds.gome.com.cn ==> 10.58.50.110

3.通过步骤2中的ip取出可用的diamond-server列表, 访问 http://ip/url , 比如:curl 'http://diamond.uat.ds.gome.com.cn/url' ==> 10.58.50.204,10.58.50.205

4.通过步骤3中的ip列表,提取数据,比如(苦中group,dataId由程序中给定):curl 'http://10.58.50.204/diamond-server/config.co?group=zookeeper&dataId=url' ==> 10.58.50.203:2181,10.58.50.204:2181,10.58.50.205:2181

 

相关链接

阿里中间件团队技术博客 http://jm.taobao.org/ .

  • 大小: 154.4 KB
  • 大小: 131.3 KB
分享到:
评论

相关推荐

    diamond客户端使用方法.docx

    - **Diamond客户端**:运行在应用程序端,用于与Diamond服务端通信并获取配置的应用组件。 - **Diamond服务端**:提供配置存储、查询等功能的服务端应用,是Diamond架构的核心组成部分。 - **配置中心**:通常指...

    Diamond 入门教程 SiO2 沸石等

    #### 一、Diamond 软件简介 **Diamond** 是一款专业的晶体与分子结构可视化软件,适用于科学研究、教育等多个领域。它可以帮助用户轻松地绘制高质量的晶体结构图像,非常适合于学术论文发表、教学演示等场景。 ###...

    Diamond晶体结构绘制软件教程

    #### 一、Diamond软件简介 **Diamond**是一款专业的晶体与分子结构可视化软件,主要用于绘制高质量的晶体结构图像。它适用于科学研究、教学演示以及学术出版等多个领域。Diamond具备直观易用的操作界面和强大的功能...

    Diamond 配置生成

    它涵盖了安装部署、配置项的创建与管理、客户端集成以及故障排查等方面,是学习和使用Diamond的重要参考资料。 五、源码分析 对于想要深入理解Diamond的开发者,可以通过阅读源码来探索其内部工作原理。Diamond的...

    Diamond软件的使用PPT课件.pptx

    ### Diamond软件知识点...通过以上内容可以看出,Diamond软件不仅功能强大,而且界面友好,非常适合于需要处理晶体结构数据的专业人士使用。无论是科研人员还是教育工作者,都能够通过这款软件获得极大的帮助和支持。

    PyPI 官网下载 | cloudify-diamond-plugin-1.3.11.tar.gz

    《PyPI与cloudify-diamond-plugin的深度解析》 PyPI(Python Package Index),是Python社区最核心的软件包仓库,它为全世界的Python开发者提供了一个集中存储、分享和下载Python模块的平台。PyPI中的资源涵盖了从...

    EXPLORING_SKLEARN:探索sklearn:glowing_star:

    @@位简介关于图书馆基于NumPy,SciPy和Matplotlib原始名称scikit-learn构建的python库。安装pip install scikit-learn Sklearn的功能监督学习模型无监督学习模型聚类降维合奏方法特征提取功能选择开源的 :diamond_...

    思维导图大全.rar

    网络安全类思维导图大全,高清,...diamond_threat_model.png JavaWeb简介.png LAMPer技能树.jpeg Linux Security Coaching.png Linux检查脚本.jpeg Maltego使用导图.jpg Nmap 思维导图.png MPDRR模型.jpg NMAP by_mx

    diamond:分布式配置服务中心

    Diamond -- 分布式配置中心一、简介Diamond是淘宝研发的分布式配置管理系统。使用Diamond可以让集群中的服务进程动态感知数据的变化,无需重启服务就可以实现配置数据的更新。具有简单、可靠、易用等特点二、使用...

    Diamond_harbinger

    《钻石先驱者:基于特征的机器学习模型与Flask应用》 在信息技术领域,机器学习已经成为数据分析和预测的关键工具。"钻石先驱者"是一个典型的应用实例,它利用特定的特征来预测钻石的价格,这些特征包括但不限于...

    taller_r_mujeres

    R for and for women工作坊欢迎大家 :woman: 我们希望欢迎所有在冲突与社会凝聚力研究中心( 举办的R by and Women研讨会上注册的人。讲师该研讨会将由 谁可以参加? 该活动是为想要开始使用R和RStudio的女性设计的...

    网络安全思维导图

    JavaWeb简介.png Maltego使用导图.jpg Nmap.png PHP源码审计.png Python系统审计.jpg WEB2HACK.jpg Web安全.png Web安全技术点.jpg Web服务器入侵防御.jpg Web攻击及防御技术.png XSS利用架构图.jpg XSS...

    Kotlin DSL HTTP客户端-Android开发

    简介Kotlin DSL http客户端功能:small_blue_diamond:开发人员体验驱动的库,没有冗长的内容。 Ko在Kotlin中使用HTTP客户端的本机方式。 :small_blue_diamond:HTTP GET / POST / PUT / HEAD / DELETE / PAT简介Kotlin...

    Diamond(001)衬底上立方氮化硼薄膜的异质外延生长及其n型掺杂

    c-BN与碳有同素异形体关系,碳可以以钻石、六角形石墨和菱形石墨的形态存在,氮化硼也有四种晶体结构:立方(c-BN)、纤锌矿(w-BN)、六角(h-BN)和菱形(r-BN)。c-BN与w-BN是硬质且密度高的相,通过强sp3杂化(σ键)...

    分布式数据层TDDL.zip

    TDDL动态数据源使用示例说明:http://rdc.taobao.com/team/jm/archives/1645diamond简介和快速使用:http://jm.taobao.org/tag/diamond专题/TDDL源码:https://github.com/alibaba/tb_tddl TDDL复杂度相对较高。...

    diamond-redis:[WIP] Redis收集器

    这个文件名暗示了项目可能使用了"Diamond"监控系统,它是一个Python写的监控收集框架,用于收集系统和应用程序的度量数据。"master"通常表示主分支或已完成的工作,表明这是项目的主版本。 7. **Python开发技巧**...

    FPGA技术基础知识简介ppt

    【FPGA技术基础知识简介】 FPGA,全称为Field-Programmable Gate Array,中文名为现场可编程门阵列,是一种半定制的集成电路。它源于早期的可编程逻辑器件,如PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)、CPLD...

    cpld.rar_CPLD

    在这里,你可以学习到如何使用CPLD开发工具,例如Xilinx的ISE、Lattice的Diamond等,进行项目设计和调试。 在CPLD的学习过程中,了解宏单元的结构和功能是基础,掌握HDL编程则是关键。你需要理解如何描述数字逻辑...

Global site tag (gtag.js) - Google Analytics