淘宝diamond学习笔记三:服务端集群

本地tomcat运行起来

http://localhost:8080/diamond-server/


修改node.properties文件,这里面添加三台机器的IP以及端口

127.0.0.1\:8080

10.126.53.16\:8080

10.126.53.17\:8080

这里面的冒号,一定要通过\转义一下,要不然获取地址不对。


如何验证集群是否搭建正确?

思路:在其中一台机器修改一条记录,如果搭建正确的话,会通知其他节点重新从数据库提取数据,然后再写入到磁盘。核对别的机器的磁盘文件是否为最新的,是否一致,就达到了验证的效果了。

    public void updateConfigInfo(String dataId, String group, String content) {
        checkParameter(dataId, group, content);
        ConfigInfo configInfo = new ConfigInfo(dataId, group, content);
        // 先更新数据库,再更新磁盘
        try {
            persistService.updateConfigInfo(configInfo);
            // 切记更新缓存
            this.contentMD5Cache.put(generateMD5CacheKey(dataId, group), configInfo.getMd5());
            diskService.saveToDisk(configInfo);
            // 通知其他节点
            this.notifyOtherNodes(dataId, group);
        }
        catch (Exception e) {
            log.error("保存ConfigInfo失败", e);
            throw new ConfigServiceException(e);
        }
    }
    /**
     * 通知配置信息改变
     * 
     * @param  id
     */
    public void notifyConfigInfoChange(String dataId, String group) {
        Enumeration<?> enu = nodeProperties.propertyNames();
        while (enu.hasMoreElements()) {
            String address = (String) enu.nextElement();
            if (address.contains(SystemConfig.LOCAL_IP)) {
                continue;//这里面排除自己,不需要通知本台机器了
            }
            String urlString = generateNotifyConfigInfoPath(dataId, group, address);
            final String result = invokeURL(urlString);
            log.info("通知节点" + address + "分组信息改变:" + result);
        }
    }

在本地运行修改一条配置信息,然后跑到10.126.53.16和10.126.53.17中tomcat运行目录下的diamond-server/config-data中看文件信息,这个时候显示这些数据已经变更过来了。

这里面需要注意一下:

D:\apache-tomcat-6.0.35\webapps\diamond-server\config-data\DEFAULT_GROUP\test

这个是我本地group为DEFAULT_GROUP,dataId为test的配置信息。diamond通过类似于目录和文件的思想,类比group和dataId,group为目录,dataId为具体的文件。

到时候客户端从这些集群获取配置信息的时候,就能数据保持一致了。


同理:

10.126.53.16和10.126.53.17这两台机器的/diamond-server/src/main/resources/node.properties

配置为:

127.0.0.1\:8080

10.126.53.16\:8080

10.126.53.17\:8080


到这里,很简陋的搭建了diamond-server的服务端了,后面就看客户端如果调用了。

你可能感兴趣的:(淘宝,diamond,服务端集群)