客户端以及服务端与zk之间是长链接。
服务端挂了后,与zk之间的长链接断掉。zk会在session到期后删除临时节点,删除后,zk会主动调用client端,client的回调函数中将该服务端标记为bad。
client端在接到zk通知之前,还不知道服务端已挂,这时需要靠client端的failover机制做保障。
client接到zk通知之后,client就不会再选择已挂的服务端。直到服务端再次启动,再次接受到zk的回调。
针对maven项目开发,在pom文件中添加magpie2.*的dependency。
对于非maven用户,请下载介质zip, 将zip中jar包添加到java工程中。
如果使用注册中心,客户端和服务端必须要同时升级。如果仍采取直连的方式,是可以兼容的,但不能使用2.*中的新功能如2.0协议等。 新功能升级变化请参考附件文档。
可以通过修改system property进行配置 magpie.config.file。
可以使用-Dmagpie.config.file=xxx.xml来指定,也可以在代码中通过 System.setProperty(key,value)来实现。
客户端和服务端均在空闲时间(heartbeatInterval)互相发送无返回的心跳包给对方, 对方在3*heartbeatInterval内如果没有收到心跳则认为链路出现问题。所以在配置客户端和服务端的心跳时请保持一致。(magpie2.* 通过zk注册, 客户端采用的是服务端的心跳)。
将heartbeatInterval设置为-1即可。
将retries设置为-1。
将返回的对象实体类实现Serializable接口。