dubbo+zookeeper+springboot远程连接,虚拟机和主机分布式操作
dubbo+zookeeper+springboot远程连接,虚拟机和主机分布式操作
springboot版本:阿里云2.3.7
实现目标
在主机上的消费者可以调用虚拟机中生产者的接口方法
项目目录

pom.xml
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.18</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.2</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
生产者
生产者部署在服务器端/ubuntu20.04虚拟机
虚拟机开放2181端口与21880端口
sudo iptables -I INPUT -p tcp --dport 21880 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 2181 -j ACCEPT
官网下载zookeeper的压缩包,压缩包名字中要带bin,如apache-zookeeper-3.7.1-bin.tar.gz。
解压文件,进入apache-zookeeper-3.7.1-bin\conf,
在当前目录复制一个zoo_sample.cfg,并重命名为zoo.cfg。
进入apache-zookeeper-3.7.1-bin\bin目录,
运行zookeeper服务

appliacation.yml
# 应用名称
spring.application.name=provider-server
# 应用服务 WEB 访问端口
server.port=8281
# 注册 服务应用/ 中心 的地址
dubbo.application.name=provider-server
# 服务应用的名称
dubbo.registry.address=zookeeper://192.168.241.128:2181
# 哪些包要被注册
dubbo.scan.base-packages=com.jupiter.service
dubbo.protocol.port=21880
service
TicketService接口
public interface TicketService {
public String getTicket();
}
实现类
@DubboService(interfaceName = "com.jupiter.service.TicketService")//项目 一启动项目就注册到注册中心
@Component
public class TicketServiceImpl implements TicketService , Serializable {
@Override
public String getTicket() {
return "获得一张票"+ ", 消费者的请求: " + RpcContext.getContext().getRemoteAddress();
}
}
在目录
.......\provider-server路径下打开cmd使用mvn进行打包
mvn clean package

打包成功在文件路径下会出现一个target文件夹,
将其复制到虚拟机
进入虚拟机的target文件夹
在当前目录打开terminal,输入以及命令运行jar包,打开了生产者的服务
java -jar provider-server-0.0.1-SNAPSHOT.jar
消费者
消费者部署在主机端
application.yml
# 应用名称
spring.application.name=consumer-server
# 应用服务 WEB 访问端口
server.port=8182
# 消费者去哪里拿,需要暴露自己的名字
dubbo.application.name=consumer-server
# 注册中心的地址
dubbo.registry.address=zookeeper://192.168.241.128:2181
dubbo.protocol.port=21880
dubbo.consumer.check=false
application.properties
dubbo:
registry:
timeout: 200000
service:
timeout: 200000
consumer:
timeout: 200000
provider:
timeout: 200000
service
TicketService接口
如果要使@Reference注解生效,就需要有与被引用包的相同目录与接口
public interface TicketService {
public String getTicket();
}
消费方法
@Service
public class UserService {
//想拿到provider提供的票 要去注册中心拿到
@DubboReference(url = "dubbo://192.168.241.128:21880/")//引用,Pom坐标,路径相同的接口命
TicketService ticketService;
public String buyTicket(){
String ticket = ticketService.getTicket();
System.out.println("在注册中心获取==>"+ticket);
return ticket;
}
}
测试
@SpringBootTest
class ConsumerServerApplicationTests {
@Autowired
UserService userService;
@Test
void contextLoads() {
userService.buyTicket();
}
}
运行测试方法
运行结果

dubbo+zookeeper+springboot远程连接,虚拟机和主机分布式操作的更多相关文章
- dubbo+zookeeper+springboot简单示例
目录 dubbo+zookeeper+springboot简单示例 zookeeper安装使用 api子模块 生产者producer 消费者consumer @(目录) dubbo+zookeeper ...
- dubbo+zookeeper+springBoot框架整合与dubbo泛型调用演示
dubbo + zookeeper + spring Boot框架整合与dubbo泛型调用演示 By:客 授客 QQ:1033553122 欢迎加入全国软件测试交流 QQ 群:7156436 ...
- SSH远程连接虚拟机,将虚拟机映射本地端口
本周学习内容: 1.继续学习了网络是怎么连接的和JavaScript的内容: 2.使用JavaScript实现在页面打印九九乘法表,将编写的乘法表部署到本地IIS服务器: 3.安装sshd服务,使用S ...
- SecureCRT远程连接虚拟机CentOS的三种方式
当在VMware虚拟机中将CentOS安装成功后,会在win7系统中模拟出两个虚拟网卡:VMnet1和VMnet8,我们来查看一下,点击“控制面板—>查看网络状态和任务—>更改适配器设置” ...
- dubbo+zookeeper+springboot构建服务
本次和大家分享的是dubbo框架应用的初略配置和zookeeper注册中心的使用:说到注册中心现在我使用过的只有两种:zookeeper和Eureka,zk我结合dubbo来使用,而Eureka结合s ...
- [经验] SpringBoot 远程连接 Linux 上的 Redis
开发环境: ---------- springboot 2.X ---------- Linux Ubuntu 18.0.04 关于怎么在 Ubuntu 上安装 Linux , 网上的教程一大堆, 这 ...
- xshell远程连接虚拟机
xshell百度网盘下载地址: 链接: https://pan.baidu.com/s/1cNn458wUyKNOcAxQ8vEPQg密码: 8vrw 安装xshell,步骤很简单这里就不多说了 if ...
- Navicat for MySQL远程连接虚拟机
在虚拟机中进入mysql mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT O ...
- 主机连接虚拟机的mysql 记录
检查远程的虚拟机是否可以ping通过 查看虚拟机IP为192.168.38.128 cmd窗口ping 192.168.38.128,出现如下界面说明是可以的 检查虚拟机mysql的端口号是否对外开通 ...
- 远程连接云主机MySql数据库
笔者最近在学习MySql数据库,试着远程连接阿里云主机数据库.在连接过程中遇到不少麻烦,这里总结一下过程中遇到的问题. 基本前提 先在本地电脑和远程主机上安装MySql数据库,保证数据库服务启动. 云 ...
随机推荐
- 【Leetcode】 two sum #1 for rust solution
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用两遍. 示 ...
- 根据模板动态生成word(一)使用freemarker生成word
@ 目录 一.准备模板 1.创建模板文件 2.处理模板 2.1 处理普通文本 2.2 处理表格 2.3 处理图片 二.项目代码 1.引入依赖 2.生成代码 三.验证生成word 一.准备模板 1.创建 ...
- 行行AI人才直播第9期:销氪副总裁陈摩西《AI在企业服务领域的商业化应用设计思路》
人工智能 (AI) 正在颠覆几乎所有行业,并正在改变我们开展业务的方式.近年来,SaaS 行业一直是受影响最大的行业之一,人工智能在其指数级增长中发挥着至关重要的作用.随着 AI 技术逐渐落地和市场认 ...
- 根据模板动态生成word(三)使用poi-tl生成word
@ 目录 一.前言 1.什么是poi-tl 2.官方信息 2.1 源码仓库 2.2 中文文档 2.3 开源协议 3.poi-tl的优势 3.1 poi-tl和其他模板引擎的对比 3.2 poi-tl ...
- Vortex Indicator 构建交易策略
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 今天的文章,我们将为大家介绍一个与DMI(Directional Movement Index)类似,判 ...
- Linux 软件包:lvm
lvm LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制. Linux用户安装Linux操作系统时遇到的一个常见的难以决定的 ...
- SpringBoot里的Servlet和实现
Servlet 接口,一个规范, SpringBoot Spring Boot 是 Spring 的子项目,正如其名字,提供 Spring 的引导( Boot )的功能. 通过 Spring Boot ...
- python连接数据库及查询包含中文错误解决方法
使用MySQLdb库来连接数据库 import MySQLdb conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='', por ...
- git:gitignore常用配置
配置 在项目文件中添加.gitignore文件 .DS_Store node_modules /dist
- [prometheus]基于consul的服务发现
前言 prometheus默认使用静态配置文件监控服务,每次添加服务都要重载,比较麻烦.好在官方提供多种动态服务发现的方法,常用的一般有基于文件服务发现.基于consul服务发现和基于dns服务发现, ...