zoukankan      html  css  js  c++  java
  • Diamond总结

    1. Diamond需求背景

     

    我们的异步任务, 定时任务分布在多台服务器上处理, 所有有个配置文件去记录任务-服务器的分配关系。当动态的调整任务分配情况后,需要把工程重新启动, 这样频繁的操作对服务器不好。所以我们引入Diamond中间件, 去监听配置中心, 当配置中心的配置更改了, 重新加载配置文件,就不需要重启服务器。

     

    2. 基本原理

     

    有客户端, 配置中心服务器, 地址服务器3部分组成。 一条配置数据由dataId, groupId,和content。首先客户端访问地址服务器,获取配置中心的地址,然后再随机取一个配置中心的地址,配置中心把自己内存中的数据和客户端传递过来的数据进行对比, 把配置内容不同的数据记录下dataId,groupId的集合, 再发回客户端,客户端会遍历dataId集合, 依次再访问服务器取得最新的content,然后调用监听集合, 让他们去执行逻辑。

     

    这就是一次查询的过程, 客户端会定时的去查询服务器, 保证客户端能使用最新的配置。

     

     

    3. 系统设计

    系统的实现是通过Http请求的方式,用HTTPClient的excuteMethod方法去访问服务器。

    客户端是new一个DiamondManager的实例, 在构造方法里注册一个监听器, 重写监听器的retrieveConfig方法, 里面是获取到更新配置要执行的逻辑代码。 有点类似观察者模式, 一个DataId, groupId, 对应一个List的监听器集合。 当对应的content有更改,就依次通知List里的监听, 让他们去执行各自的任务去。

  • 相关阅读:
    XML基础(二)
    XML基础(一)
    转载:数据库应用开发工具Toad使用笔记
    Oracle数据库获取一行记录中某几个字段的最大值/最小值函数
    设置Android让EditText不自动获取焦点
    android TextView selector点击样式改变
    Jenkins build java app under redhat
    Yum
    git windows
    jenkins redhat installation using war file .
  • 原文地址:https://www.cnblogs.com/chenyao/p/3578086.html
Copyright © 2011-2022 走看看