原文地址:http://rdc.taobao.com/team/jm/archives/1592
大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解。本次为大家带来的是diamond核心原理的介绍,主要包括server集群的数据同步、client获取server地址、client从server获取数据、client运行时感知server的数据变化,这四部分。
一、server集群数据同步
diamond-server将数据存储在mysql和本地文件中,mysql是一个中心,diamond认为存储在mysql中的数据绝对正确,除此之外,server会将数据存储在本地文件中。
同步数据有两种方式:
(1)server写数据时,先将数据写入mysql,然后写入本地文件,写入完成后发送一个HTTP请求给集群中的其他server,其他server收到请求,从mysql中dump刚刚写入的数据至本地文件。
(2)server启动后会启动一个定时任务,定时从mysql中dump所有数据至本地文件。
二、client获取server地址
diamond-client在使用时没有指定server地址的代码,地址获取对用户是透明的。
server地址存储在一台具有域名的机器上的HTTPserver中,我们称它为地址服务器,diamond-client使用前需要在本地进行正确的域名绑定,启动时它会根据域名绑定,去对应环境的地址服务器上获取diamond-server地址列表。
获取的地址列表,会保存在client本地,当出现网络异常,无法从网络获取地址列表时,client会使用本地保存的地址列表。
client启动后会启动一个定时任务,定时从HTTPserver上获取地址列表并保存在本地,以保证地址是最新的。
三、client主动获取数据
client调用getAvailableConfigInfomation(),即可获取一份最新的可用的配置数据,获取过程实际上是拼接httpurl,使用http-client调用httpmethod的过程。
为了避免短时间内大量的获取数据请求发向server,client端实现了一个带有过期时间的缓存,client将本次获取到的数据保存在缓存中,在过期时间内的所有请求,都返回缓存内的数据,不向server发出请求。
四、client运行中感知数据变化
这是diamond最为核心的一个功能。
这个特性是通过比较client和server的数据的MD5值实现的。
server在启动时,会将所有数据的MD5加载到内存中(MD5根据某算法得出,保证数据内容不同,MD5不同,MD5存储在mysql中),数据更新时,会更新内存中对应的MD5
client在启动并第一次获取数据后,会将数据的MD5保存在内存中,并且在启动时会启动一个定时任务,定时去server检查数据是否变化。每次检查时,client将MD5传给server,server比较传来的MD5和自身内存中的MD5是否相同,如果相同,说明数据没变,返回一个标示数据不变的字符串给client;如果不同,说明数据变了,返回变化数据的dataId和group给client.client收到变化数据的dataId和group,再去server请求一次数据,拿回数据后回调监听器。
分享到:
相关推荐
Diamond3界面选项的介绍是该软件学习过程中的重要部分,下面详细介绍Diamond3界面选项的功能: 首先,Diamond3的File菜单系列主要包括Windows系统常规的几种选项,如新建、打开、保存等。其中,Open选项可以看到...
压缩包中的“diamond1.1 中文版.pdf”很可能是Lattice Diamond 1.1版本的中文用户手册或教程,这份资料将详细介绍软件的使用方法、操作步骤和常见问题,对于初学者和有经验的开发者来说都极具价值。建议用户仔细阅读...
例如,使用Python的`pandas`库配合`struct`模块来解析二进制文件,或者使用`netCDF4`库处理NetCDF格式的Diamond3数据。 3. 使用第三方工具:有一些开源工具或库专注于处理气象数据,如`MetPy`(Python)、`ncl`...
在这份用户指南中,列出了与Lattice Diamond 3.1相关的商标和产品名称,旨在介绍软件使用方法和相关知识产权声明。 首先,文档提醒用户在没有Lattice Semiconductor Corporation事先书面同意的情况下,不允许对本...
2. **diamond-server.jar**:这是Diamond服务器端的核心组件,处理配置的存储、更新以及向客户端推送变更。 3. **diamond-common.jar**:包含了Diamond框架的公共类和工具,供客户端和服务端共享。 4. **mysql-...
diamond
Diamond软件的核心功能在于其能够帮助用户轻松创建、编辑和可视化各种晶体结构。无论你是新手还是经验丰富的研究人员,都能迅速掌握其操作。软件提供了丰富的原子类型库,涵盖了各种元素,使得构建不同类型的晶体...
尽管没有直接提供详细的安装步骤,但推荐参考《FPGA开发之Diamond安装使用(一)》这篇教程,其中应该详细介绍了如何正确安装软件、加载 License 以及验证其有效性。通常,安装过程会涉及以下步骤: 1. 下载并解压 ...
本文将详细介绍 Lattice Diamond 3.9 版本的许可证(License)以及其万能版的特点和使用。 首先,"Diamond 3.9 lisence万能版.zip" 提供的是 Lattice Diamond 3.9 版本的设计软件许可证文件。Lattice Diamond 的...
- **Diamond服务端**:提供配置存储、查询等功能的服务端应用,是Diamond架构的核心组成部分。 - **配置中心**:通常指Diamond服务端,用于集中存储和管理所有应用程序的配置信息。 - **配置刷新**:当配置发生变化...
本文将详细探讨Diamond的核心概念、工作原理以及其在实际应用中的优势。 一、Diamond系统概述 Diamond是淘宝内部自研的配置管理平台,它主要负责系统的动态配置管理和分发,使得开发者可以在不重启服务的情况下,...
1. 配置中心:Diamond的核心是一个配置中心,它负责存储所有的配置信息,并提供查询和更新接口。配置中心可以是数据库、文件系统或者云存储,具体取决于项目需求。 2. 客户端组件:在各个服务器节点上运行的Diamond...
lattice diamond 的license 多种解密方法,让你在lattice diamond芯片开发上,大展身手!
《Lattice Diamond官方下载简明教程》 在电子设计领域,FPGA(Field-Programmable Gate Array)因其灵活性和高性能而被广泛应用。Lattice Semiconductor公司是一家知名的FPGA解决方案提供商,其开发工具Lattice ...
本文将深入探讨Lattice Diamond 3.7版本的授权机制,特别是“license”这一核心元素,以及其在实际操作中的应用。 首先,理解Lattice Diamond的许可证(License)是至关重要的。许可证是软件使用的法律依据,它规定...
diamond升级到了3.2i, 经测试原来的破解yourlicense在3.2H之前仍然有效!到这里下载3.2I,http://download.csdn.net/detail/daipengren/4424598 安装后,下载附件中的yourlicense覆盖原文件即可
Crystal Impact Diamond 3.1破解补丁。安装Crystal Impact Diamond 3.1后,将破解补丁复制粘贴到Diamond对应安装目录覆盖原文件即可。
"Diamond"的核心功能包括: 1. 数据导入:软件支持多种格式的数据输入,如CIF、PDB、XYZ等,便于从实验或计算结果中获取晶体结构信息。 2. 结构展示:用户可以选择不同的视角,调整透明度,添加分子动力学轨迹,...
这一章节详细介绍了DIAMOND-MM-32-AT的各种配置选项,如模拟输入范围、数字I/O模式、计数器/定时器设置等。这些配置可以根据具体的应用需求进行调整,以达到最佳性能。 #### 输入/输出寄存器映射 寄存器映射章节...