当一台服务端挂了,客户端发现了从ZK查找新服务,会不会此时ZK还来不及删除挂的节点,导致客户端又取了挂了的服务IP?
更新时间:2017-04-27 23:14:38
解答详情:
  1. 客户端以及服务端与zk之间是长链接。

  2. 服务端挂了后,与zk之间的长链接断掉。zk会在session到期后删除临时节点,删除后,zk会主动调用client端,client的回调函数中将该服务端标记为bad。

  3. client端在接到zk通知之前,还不知道服务端已挂,这时需要靠client端的failover机制做保障。

  4. client接到zk通知之后,client就不会再选择已挂的服务端。直到服务端再次启动,再次接受到zk的回调。


如何将magpie引入到工程中?
更新时间:2017-04-19 11:37:44
解答详情:

针对maven项目开发,在pom文件中添加magpie2.*的dependency。

对于非maven用户,请下载介质zip, 将zip中jar包添加到java工程中。

magpie2.*和magpie1.* 兼容么,客户端与服务端需要同时升级么?
更新时间:2017-04-19 11:37:35
解答详情:

如果使用注册中心,客户端和服务端必须要同时升级。如果仍采取直连的方式,是可以兼容的,但不能使用2.*中的新功能如2.0协议等。 新功能升级变化请参考附件文档。

是否配置文件只能是magpie.xml?
更新时间:2017-04-19 11:37:10
解答详情:

可以通过修改system property进行配置 magpie.config.file。

可以使用-Dmagpie.config.file=xxx.xml来指定,也可以在代码中通过 System.setProperty(key,value)来实现。

magpie的心跳机制是怎样的?
更新时间:2017-04-19 11:36:13
解答详情:

客户端和服务端均在空闲时间(heartbeatInterval)互相发送无返回的心跳包给对方, 对方在3*heartbeatInterval内如果没有收到心跳则认为链路出现问题。所以在配置客户端和服务端的心跳时请保持一致。(magpie2.* 通过zk注册, 客户端采用的是服务端的心跳)。

magpie中心跳如何取消?
更新时间:2017-04-19 11:36:07
解答详情:

将heartbeatInterval设置为-1即可。

magpie调用失败如何直接报错而不重试?
更新时间:2017-04-19 11:35:50
解答详情:

将retries设置为-1。

magpie server端method想返回对象而不是基本类型需要做什么?
更新时间:2017-04-19 11:35:29
解答详情:

将返回的对象实体类实现Serializable接口。

咨询与服务