一、下载zookeeper服务注册管理器

- 下载ZooKeeper地址:http://www.apache.org/dyn/closer.cgi/zookeeper
liuxin@KK-MINI ~ cd zookeeper-3.5.2-alpha\ 2
liuxin@KK-MINI ~/zookeeper-3.5.2-alpha 2 ls
CHANGES.txt README_packagi
ng.txt contrib ivysettings.xml src zookeeper-3.5.2-alpha.jar.md5
LICENSE.txt bin dist-maven lib zookeeper zookeeper-3.5.2-alpha.jar.sha1
NOTICE.txt build.xml docs logs zookeeper-3.5.2-alpha.jar
README.txt conf ivy.xml recipes zookeeper-3.5.2-alpha.jar.asc
liuxin@KK-MINI ~/zookeeper-3.5.2-alpha 2 cd conf
liuxin@KK-MINI ~/zookeeper-3.5.2-alpha 2/conf ls
configuration.xsl log4j.properties zoo.cfg zoo_sample.cfg
liuxin@KK-MINI ~/zookeeper-3.5.2-alpha 2/conf
在conf中创建输入zoo.cfg
tickTime=2000
#这个地址自定义
dataDir=/javaee/zookeeper/data
#这个地址自定义
dataLogDir=/javaee/zookeeper/log
clientPort=2181
然后在bin目录中./zkServer.sh start启动
二、创建生产者
- 在pom文件中引入dubbo
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>${dubbo-spring-boot}</version>
</dependency>
- application.properties
## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=org.spring.springboot.dubbo
server.port=8082
- 向原来创建SpringBoot项目中一样,不过注意一个注解@Service使用dubbo提供的
import com.alibaba.dubbo.config.annotation.Service;
@Service(version = "1.0.1")
public class UserDubboServiceImpl implements UserDubboService {
@Override
public User getUserByName(String name) {
return new User(name,"shanghai");
}
}
当项目启动的时候,会把这个服务注册到zookeeper中。等到消费
三、创建消费者
- pom文件中和上面引入的一样。
- application.properties
## 避免和 server 工程端口冲突
server.port=8081
## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=org.spring.springboot.dubbo
- 创建在服务提供中一样的JavaBean对象
User
和UserDubboService
- 使用
@Reference(version = "1.0.1")
注解引入服务
@Component
public class UserDubboConsumerService {
@Reference(version = "1.0.1")
UserDubboService userDubboService;
public void getUserByName(){
System.out.println(userDubboService.getUserByName("周杰伦"));
}
}
当项目其中的时候,会想zookeeper中查询服务生产者地址,然后直接,调用生产者服务中的服务。zookeeper是提供软负载均衡。比nginx中需要手动配置服务地址,来看,好多了。