博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot + dubbo + zookeeper 搭建及问题解决
阅读量:6123 次
发布时间:2019-06-21

本文共 4079 字,大约阅读时间需要 13 分钟。

hot3.png

Dubbo 是一款高性能Java RPC框架,现在有很多公司都在使用,鉴于技多不压身的原则,折腾一下这玩意

简介

  • spring boot 是当前比较流行的开发工具组合框架,他并不是一个新框架;由于它集合了很多其他的框架和工具,所以用起来很方便
  • zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。也是dubbo推荐的注册中心

安装

安装zookeeper

下载地址

解压后启动 windows

bin/zkServer.cmd

Linux

./zkServer.sh

dubbo 管理控制台dubbo-admin

2.6.x 版本后 dubbo-admin 库被迁移新地址 部分功能尚不能使用,而且是英文的

这里使用 2.5.x ,依然还是原来的仓库,只不过需要将分支切换到 2.5.x 才能下载到

下载下来之后打包

cd 
/incubator-dubbo-dubbo-2.5.10/dubbo-adminmvn install -Dmaven.test.skip=true

target目录下的dubbo-admin-2.5.10.war放到tomcat中运行

注意:dubbo-admin不支持jdk1.8,所以要更改 jdk 环境变量, 这里提供不更改 jdk 环境变量的方法

cd 
/apache-tomcat-8.5.23/bin

window 修改 setclasspath.bat在开头加入jdk

set JAVA_HOME=
\jdk1.7.0_75set JRE_HOME=
\jdk1.7.0_75\jre

linux 修改 setclasspath.sh

JAVA_HOME=
/jdk1.7.0_75JRE_HOME=
/jdk1.7.0_75/jre

启动tomcat 访问

用户名和密码在WEB-INF/dubbo.properties 可修改

Dubbo项目搭建

官方也有相关的示例可供参考 参见:

创建maven项目,项目结构如下

父级模块pom.xml

添加依赖

org.springframework.boot
spring-boot-starter-parent
2.0.5.RELEASE
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0

在公共模块写一个接口

package com.dubbo.api;public interface DemoService {	public String helloWorld(String name);}

生产者模块

pom.xml

  • 添加父级
com.dubbo
DubboDemo
0.0.1-SNAPSHOT
  • 添加公共模块
com.dubbo
DubboDemoApi
0.0.1-SNAPSHOT

配置文件

src/main/resources/application.properties

spring.application.name = dubbo-provider-demoserver.port = 9090# 当前dubbo应用IDdubbo.application.id=live-dubbo-provider# 当前dubbo应用名称dubbo.application.name=live-dubbo-provider# 注册中心dubbo.registry.address=zookeeper://127.0.0.1:2181dubbo.server=true	# 生产者暴露给消费者协议dubbo.protocol.name=dubbo# 生产者暴露给消费者端口dubbo.protocol.port=20880

实现API接口

package com.dubbo.provider.service;import org.springframework.util.StringUtils;import com.alibaba.dubbo.config.annotation.Service;import com.dubbo.api.DemoService;@Servicepublic class DemoServiceImpl implements DemoService {	@Override	public String helloWorld(String name) {		return "Hello "+(StringUtils.isEmpty(name) ? "world": name);	}}

注意 @Service 注解不是 spring 的注解 而是 com.alibaba.dubbo.config.annotation.Service

启动类

@EnableDubbo@SpringBootApplicationpublic class DubboProviderApp {	public static void main(String[] args) {		SpringApplication.run(DubboProviderApp.class, args);	}}
  • @EnableDubbo 注解表示 开启 dubbo 服务 或者在配置文件(application.properties) 添加dubbo.scan ( 扫描 dubbo 包 ) 也可以开启
  • 可以不是 web 项目

启动该项目 启动完成后在 dubbo-admin 能看到有一个应用说明注册成功,否则不成功

消费者模块

pom.xml

  • 添加父级
com.dubbo
DubboDemo
0.0.1-SNAPSHOT
  • 添加公共模块
com.dubbo
DubboDemoApi
0.0.1-SNAPSHOT
  • 添加 spring boot web 支持
org.springframework.boot
spring-boot-starter-web

配置文件

src/main/resources/application.properties

# Spring boot applicationSpring.application.name = dubbo-consumer-demoserver.port = 8010# 消费者应用IDdubbo.application.id=live-dubbo-consumer# 消费者应用名称dubbo.application.name=live-dubbo-consumer# 注册中心dubbo.registry.address=zookeeper://127.0.0.1:2181# 生产者提供的协议IDdubbo.protocol.id = dubbo# 生产者提供的协议名称dubbo.protocol.name = dubbo# 生产者提供的协议端口号dubbo.protocol.port = 20880

启动类

@SpringBootApplicationpublic class DubboConsumerApp {	public static void main(String[] args) {		SpringApplication.run(DubboConsumerApp.class, args);	}}

调用生产者

@RestControllerpublic class DemoConsumerController {	@Reference	private DemoService demoService;		@RequestMapping("/hello")	public String hello(String name) {		return demoService.helloWorld(name);	}}

启动后访问 出现如下界面则表示成功

到此基本的入门是没有问题了

注意

注意使用了spring-boot + dubbo的配置文件dubbo的配置信息是没有spring前缀的

错误示例

spring.dubbo.application.name=live-dubbo-consumer

这样 dubbo 是无法获取的,除非在 @Service 注解中指定

结语

如果学习中遇到困难,欢迎留言讨论

转载于:https://my.oschina.net/itlangz/blog/2221842

你可能感兴趣的文章
海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
查看>>
项目文件缩写介绍
查看>>
springmvc文件上传
查看>>
C#利用NOPI处理Excel的代码
查看>>
关于Apache的性能优化
查看>>
python中unicode字符串前缀u
查看>>
人人都爱易电源——转发有礼!
查看>>
基于滑动窗口协议写的程序(UDP实现) .
查看>>
读取文档
查看>>
Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
查看>>
validator
查看>>
linux命令备忘录
查看>>
用原生js实现一个页面乘法口诀表
查看>>
HttpWebRequest.GetResponse 方法 转载
查看>>
【294】◀▶ Python 字符串说明
查看>>
ORA-12541:TNS:no listener 客户端tnsnames.ora配置,以及服务端listener.ora配置
查看>>
mudbox安装未完成,某些产品无法安装的解决方法
查看>>
excel 2007 无法输入中文
查看>>
POJ 3279
查看>>
Effective C++学习之-------若所有参数皆需类型转换,请为此采用non-member函数
查看>>