跑通SpringBoot + dubbo + zookeeper
source link: https://blog.51cto.com/u_15646426/5343731
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
跑通SpringBoot + dubbo + zookeeper
原创先安装并启动zookeeper
- 去zookeeper下载网站进行下载 https://archive.apache.org/dist/zookeeper/
- 博主下载的是3.4.9
- 解压并启动
mv apache-zookeeper-3.4.9 zookeeper-3.4.9
cd zookeeper-3.4.9/conf
ll
进入conf目录下后, 可以看到zoo_sample.cfg, 需要先复制一份,不然启动会报错找不到zoo.cfg
然后修改一下zoo.cfg中的存储目录, 将默认的dataDir修改为zookeeper-3.4.9下面的data目录下, data需要新建
mkdir data
cd bin
开始启动zookeeper服务端
启动成功后会直接后台启动, 如下即为启动成功
测试是否成功
启动zookeeper客户端
启动成功后输入, 看到zookeeper即为启动成功
博主因为启动了后面的dubbo-admin,所以有dubbo的目录,这不重要, 初次启动只要有zookeeper就行
安装dubbo-admin进行dubbo监控
安装dubbo-admin, 从github上clone duboo-admin
cd dubbo-admin
注意这里要先去ui里运行一下npm install
npm install
sudo npm install
- 打包并启动
回到dubbo-admin目录, 使用maven打包一下, 记得要跳过测试, 不然会很慢
进入dubbo-amdin/dubbo-admin-server/src/main/resources 修改
application.properties, 新增
server.port=8081`
这里必须要改一下端口号, 因为zookeeper启动会占用8080
然后启动
访问locahost:8081
创建一个多模块的项目, 格式如下:
分别为:
接口模块
提供者模块
消费者模块
创建统一接口
新建一个模块, pom设置格式<packaging>jar</packaging>
其他的什么jar都不需要引入,
public String sayHello(String name);
}
创建服务提供者
<dubbo.version>3.0.8dubbo.version>
properties>
<dependencies>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-spring-boot-starterartifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-rpc-apiartifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-rpc-dubboartifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-registry-zookeeperartifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-configcenter-zookeeperartifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-metadata-report-zookeeperartifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-config-springartifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-remoting-netty4artifactId>
<version>${dubbo.version}version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-serialization-hessian2artifactId>
<version>${dubbo.version}version>
dependency>
dependencies>
yml配置文件:
application:
name: dubbo-test-provider
protocol:
name: dubbo
port: 20881
registry:
address: zookeeper://127.0.0.1:2181
config-center:
address: zookeeper://127.0.0.1:2181
metadata-report:
address: zookeeper://127.0.0.1:2181
scan:
base-packages: com.exceedy.dubbotest.dubbotestinterface.service
消费者和提供者pom和配置文件(除服务名称外)均一致
- 在启动类中增加
EnableDubbo
注解,然后让提供者进入等待状态
@EnableDubbo
public class ProviderApplication {
public static void main(String[] args) throws InterruptedException {
SpringApplication.run(ProviderApplication.class, args);
System.out.println("dubbo provider start");
new CountDownLatch(1).await();
}
}
- 实现SayService
@Service
// 版本更新到3.0.8后, dubbo原本的@Service标记为了删除, 所以使用新注解
// DubboService 意味着暴露服务
@DubboService
public class SayHelloImpl implements SayHello {
@Override
public String sayHello(String name) {
System.out.println("Hello, " + name);
return "Hello, " + name;
}
}
- 启动后刷新dubbo-admin界面看到服务已经注册,说明提供者已经完成
创建服务消费者
消费者的配置文件和pom直接copy即可, 将yml文件中的dubbo.application.name=dubbo-test-provider 改为dubbo.application.name=dubbo-test-consumers
直接修改启动类
public class ConsumersApplication {
@DubboReference
SayHello sayHello;
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(ConsumersApplication.class, args);
ConsumersApplication bean = run.getBean(ConsumersApplication.class);
String result = bean.doSayHi("张三");
System.out.println(result);
}
public String doSayHi(String name) {
return sayHello.sayHello(name);
}
至此跑通了springboot + dubbo + zookeeper;
需要注意的是
- 不知道是否是3.0.8版本的原因, 在注解
@EnableDubbo(scanBasePackages = {"com.exceedy.dubbotest.dubbotestinterface.service"})
中加入扫描包启动后一直注册不了,只要在配置文件中配置了才能注册到注册中心 - 3.0.8版的dubbo只支持zookeeper3.4.x系列版本, 所以安装时要注意, 并且zookeeper3.4.x系列版本只支持jdk8, 所以jdk也要注意不能太高
ps: 图片中用的是3.7.1版本,就是因为先安装的zookeeper, 不知道dubbo不支持,所以用成了3.7.1, 而想跑通就必须先安装zookeeper, 后面博主又换成了3.4.9, 唉,都是泪哇
- 赞
- 收藏
- 评论
- 分享
- 举报
上一篇:[JVM] JVM基础概念
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK