集群调用示例

在集群环境下使用Motan需要依赖外部服务发现组件,目前支持consul或zookeeper。

使用Consul作为注册中心

Consul安装与启动

安装(官方文档)
  1. # 这里以linux为例
  2. wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
  3. unzip consul_0.6.4_linux_amd64.zip
  4. sudo mv consul /bin
启动(官方文档)
  1. 测试环境启动:
  2. consul agent -dev

ui后台 http://localhost:8500/ui

Motan-Consul配置

  • 在server和client中添加motan-registry-consul依赖
  1. <dependency>
  2. <groupId>com.weibo</groupId>
  3. <artifactId>motan-registry-consul</artifactId>
  4. <version>RELEASE</version>
  5. </dependency>
  • 在server和client的配置文件中分别增加consul registry定义。
  1. <motan:registry regProtocol="consul" name="my_consul" address="127.0.0.1:8500"/>
  • 在Motan client及server配置改为通过registry服务发现。

client

  1. <motan:referer id="remoteService" interface="quickstart.FooService" registry="my_consul"/>

server

  1. <motan:service interface="quickstart.FooService" ref="serviceImpl" registry="my_consul" export="8002" />
  • server程序启动后,需要显式调用心跳开关,注册到consul。
  1. MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true)
  • 进入ui后台查看服务是否正常提供调用

  • 启动client,调用服务

使用ZooKeeper作为注册中心

ZooKeeper安装与启动(官方文档)

单机版安装与启动

  1. wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
  2. tar zxvf zookeeper-3.4.8.tar.gz
  3. cd zookeeper-3.4.8/conf/
  4. cp zoo_sample.cfg zoo.cfg
  5. cd ../
  6. sh bin/zkServer.sh start

Motan-ZooKeeper配置

  • 在server和client中添加motan-registry-zookeeper依赖
  1. <dependency>
  2. <groupId>com.weibo</groupId>
  3. <artifactId>motan-registry-zookeeper</artifactId>
  4. <version>RELEASE</version>
  5. </dependency>
  • 在server和client的配置文件中分别增加zookeeper registry定义。

zookeeper为单节点

  1. <motan:registry regProtocol="zookeeper" name="my_zookeeper" address="127.0.0.1:2181"/>

zookeeper多节点集群

  1. <motan:registry regProtocol="zookeeper" name="my_zookeeper" address="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"/>
  • 在Motan client及server配置改为通过registry服务发现。

client

  1. <motan:referer id="remoteService" interface="quickstart.FooService" registry="my_zookeeper"/>

server

  1. <motan:service interface="quickstart.FooService" ref="serviceImpl" registry="my_zookeeper" export="8002" />
  • server程序启动后,需要显式调用心跳开关,注册到zookeeper。
  1. MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true)
  • 启动client,调用服务