完整代码见:github.com/Caizhenhao/…html
我使用的是阿里云服务器java
tar -zxvf zookeeper-3.4.11.tar.gz复制代码
mv zookeeper-3.4.11 zookeeper复制代码
rm -rf zookeeper-3.4.11.tar.gz复制代码
mkdir data复制代码
cp zoo_sample.cfg zoo.cfg复制代码
vim zoo.cfg
命令修改配置文件
修改配置文件中的 dataDir 属性:git
dataDir=/usr/local/zookeeper/data复制代码
进入 /zookeeper/bin 目录而后执行下面的命令启动zookeepergithub
./zkServer.sh start复制代码
./zkServer.sh status复制代码
或者运行 netstat -lntup 命令查看网络状态,能够看到 zookeeper 的端口号 2181 已经被占用
web
项目分红三个模块spring
关键依赖
apache
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>复制代码
抽象服务提供者的接口供服务消费者调用vim
package com.czh.provider.dubboprovider.serviceImpl.service;
public interface HelloService {
String sayHello(String name);
}复制代码
主要分为下面几步:api
<dependencies>
<dependency>
<groupId>com.czh.api</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>复制代码
# 配置端口
spring.application.name = dubbo-provider
server.port = 9090
#指定当前服务/应用的名字(一样的服务名字相同,不要和别的服务同名)
dubbo.application.name = dubbo-provider
demo.service.version = 1.0.0
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880
#指定注册中心的位置
dubbo.registry.address = zookeeper://ip:2181
#统一设置服务提供方的规则
dubbo.provider.timeout = 1000复制代码
服务提供者,包含真正的服务实现代码安全
package com.czh.provider.dubboprovider.serviceImpl;
import com.alibaba.dubbo.config.annotation.Service;
import com.czh.provider.dubboprovider.serviceImpl.service.HelloService;
@Service(version = "${demo.service.version}")
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "Hello " + name + ",This is springboot-dubbo test";
}
}复制代码
package com.czh.provider;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
复制代码
spring.application.name = dubbo-consumer
server.port = 9091
#指定当前服务/应用的名字(一样的服务名字相同,不要和别的服务同名)
dubbo.application.name = dubbo-consumer
demo.service.version = 1.0.0
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880
#指定注册中心的位置
dubbo.registry.address = zookeeper://ip:2181
#统一设置服务提供方的规则
dubbo.consumer.timeout = 5000复制代码
package com.czh.consumer.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.czh.api.service.HelloService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloConsumerController {
@Reference(version = "${demo.service.version}")
private HelloService helloService;
@RequestMapping("/sayHello/{name}")
public String sayHello(@PathVariable("name") String name) {
return helloService.sayHello(name);
}
}复制代码
package com.czh.consumer;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
复制代码
使用springboot+dubbo+zookeeper进行搭建 dubbo 的项目应该说是比较简单的,官方也有集成Springboot的依赖,这里就很少说了,实践出真知~
完整代码见:github.com/Caizhenhao/…