-
Notifications
You must be signed in to change notification settings - Fork 2
/
readme
60 lines (37 loc) · 2.56 KB
/
readme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 这是一个基于Netty的节点监听和事件触发机制
# 在Netty的服务端实现了节点的创建、删除、内容修改、事件注册、内容读取等等。
Netty服务器
|--------------------| |----------client1 创建节点node
|--------------------| |----------client2 注册节点node的监听事件
|--------------------|<-------------------------> |----------client3 读取数据,并注册监听事件
|--------------------| |----------client4 修改数据
|--------------------| |----------client5 删除节点node
服器这边其实很好实现,当然现在还是非高可用的,所以如果需要实现高可用的话,那么需要使用ZooKeeper来实现主备的切换,使用hdfs来实现数据的同步。
这个是后面需要努力的 。
这个还有一个缺陷吧,就是没创建了一个节点后都需要一个线程去监听这个节点的事件队列,如果节点数很多的话,那么将会是灾难性的,目前没有一个
较好的解决方案,如果读者知道,请告知。谢谢。
clien端实现了主down了,能够立马切换到备份的服务器上,并设置之前down的服务器为true,如果备份的服务器也是不可用的,那么就宣布远程服务器不可用。
client对于服务器的判断只是一次性的,这个一次性是指所有的服务器是不可用的,如果其中一台是可用的,那么其他的服务器都会被置为可用的。直到所有
的服务器的标志位都被设置成了不可用,那么服务器才会表示为不可用。
可以不使用项目自带的client,但是要遵循一下的规则:
1.以#####为切割
2.第一项为节点名称
3.第二项为事件代码:
/**
* 对于节点的操作
* 创建
* 删除
* 改变
* 添加监听器
* 查看数据
*/
public final static int CTREATE = 0;
public final static int DELETE = 1;
public final static int CHANGE = 2;
public final static int ADDWATCH = 3;
public final static int SELECT = 4;
4.第三项为
例子:
node#####0#####123 表示创建一个节点,节点的名字为node,节点的内容为123
node#####3 表示添加一个事件,这个事件的节点为node,注册的是发送这个消息的channel。
node#####2#####456 表示修改一个节点的数据,要修改的节点名称为node,修改后的数据为456.