3.2 核心API
ParkLocal核心API说明如下。
❏ 创建node,可以根据是否需要权限和心跳属性调用不同方法:
- public ObjectBean create(String domain, Serializable obj);//自动创建node
- public ObjectBean create(String domain, String node, Serializable obj);
- public ObjectBean create(String domain, String node, Serializable obj, AuthPolicy auth);
- public ObjectBean create(String domain, String node, Serializable obj, boolean heartbeat);
- public ObjectBean create(String domain, String node, Serializable obj, AuthPolicy auth, boolean heartbeat);
❏ 更新node:
- public ObjectBean update(String domain, String node, Serializable obj);
❏ 获取node:
- public ObjectBean get(String domain, String node);
❏ 获取最新node,需要传入旧node进行对照:
- public ObjectBean getLastest(String domain, String node, ObjectBean ob);
❏ 获取最新domain:
- public List<ObjectBean> get(String domain);
❏ 获取最新domain下所有node,需要传入旧的node集合对照:
- public List<ObjectBean> getLastest(String domain, List<ObjectBean> oblist);
❏ 删除node:
- public ObjectBean delete(String domain, String node);
❏ 强行设置domain可删除:
- public boolean setDeletable(String domain);
❏ 删除domain及其下所有node:
- public List<ObjectBean> delete(String domain);
❏ 添加node的事件监听:
- public void addLastestListener(String domain, String node, ObjectBean ob, LastestListener liser);
❏ 添加domain的事件监听:
- public void addLastestListener(String domain, List<ObjectBean> oblist, LastestListener liser);
下面详细说明ParkLocal几个核心的API的使用,其他的API使用与此类似。
1.创建node
- public ObjectBean create(String domain, String node, Serializable obj);
通过上面方法在ParkServer里建立一个节点,需要指定domain和node名称,如果第一次创建,domain不存在,ParkServer会自动创建,因此不需要单独创建domain的API。如果domain和node都存在,重复创建会失败。
节点的值是一个Serializable对象,它必须是可序列化的,因为需要进行网络传输。
2.创建心跳属性节点
- public ObjectBean create(String domain, String node, Serializable obj, boolean heartbeat);
有的情况下,我们需要创建节点后,创建进程跟ParkServer保持心跳连接,如果创建进程死掉了,那这个节点会自动被删除掉,心跳属性节点很适合在集群管理等场景上的应用。
3.获取node
- public ObjectBean get(String domain, String node);
根据domain和node名称获取对应的对象,但是返回一个ObjectBean的封装对象,我们要拿到原始对象,可以通过toObject()获取,ObjectBean也封装了domain和node的名称信息,可以通过getDomain和getNode获取。
4.获取最新node,需要传入旧node进行对照
- public ObjectBean getLastest(String domain, String node, ObjectBean ob);
getLastest是一个很有用的方法,可以获取到该节点的最新版本,它获取最新版本的方式是需要将旧版本的ObjectBean传进去,ParkServer会进行对比,如果发现对象值更新了,就返回一个新的ObjectBean,如果没有更新变化,就返回null。
5.添加node的事件监听
- public void addLastestListener(String domain, String node, ObjectBean ob, LastestListener liser);
如果我们需要检测ParkServer上节点是否变化,可以通过上面getLastest方法轮询最新值,也可以通过事件方式响应。
我们需要对一个节点进行监听,事件响应方式监控配置信息发生变化,需要实现一个LastestListener的事件接口并进行注册,当信息变化时,会产生事件并获取到变化后的对象进行处理,LastestListener的happenLastest方法有个boolean返回值,如果返回false,它会一直监控配置信息变化,继续有新的变化时还会进行事件调用;如果返回true,它完成本次事件调用后就终止。
如果初次注册节点的事件监听,可以指定一个初始对比值ObjectBean ob,代表事件是相对于该值的变化或持续变化;如果不需要初始对比值,可以传入null,只要目前节点的值不为null,就会产生事件。
domain的事件监听注册跟node使用类似,只是初始对比值为List<ObjectBean>。