Jgossip - gossip协议的开源实现

Gossip是一种一致性协议,在系统设计和开发当中有着广泛的应用,网上有一些开源实现,但是并不好用有些甚至出现了一些bug,于是乎,花了一些时间,动手写了一个,目前已经在公司内部运行了几年,效果良好,并且已经开源在Github上,以飨各位。


特点:

  • API简洁

  • 支持3种事件:

    1. UP
    2. DOWN
    3. JOIN
  • 基于Vert.X

引入:

<dependency>
  <groupId>net.lvsq</groupId>
  <artifactId>jgossip</artifactId>
  <version>1.3.2</version>
</dependency>

一个简单的例子:

int gossip_port = 60001;
String cluster = "gossip_cluster";

GossipSettings settings = new GossipSettings();
settings.setGossipInterval(1000);

try {
    String myIpAddress = InetAddress.getLocalHost().getHostAddress();
    List<SeedMember> seedNodes = new ArrayList<>();
    SeedMember seed = new SeedMember();
    seed.setCluster(cluster);
    seed.setIpAddress(myIpAddress);
    seed.setPort(60001);
    seedNodes.add(seed);

    gossipService = new GossipService(cluster, myIpAddress, gossip_port, null, seedNodes, settings, (member, state) ->System.out.println("member:" + member + "  state: " + state));
} catch (Exception e) {
    e.printStackTrace();
}
gossipService.start();

详细介绍请看 => 项目地址

欢迎大家fork, 如果觉得好请start ~~~