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远程连接,虚拟机和主机分布式操作的更多相关文章

  1. dubbo+zookeeper+springboot简单示例

    目录 dubbo+zookeeper+springboot简单示例 zookeeper安装使用 api子模块 生产者producer 消费者consumer @(目录) dubbo+zookeeper ...

  2. dubbo+zookeeper+springBoot框架整合与dubbo泛型调用演示

    dubbo + zookeeper + spring Boot框架整合与dubbo泛型调用演示   By:客 授客 QQ:1033553122  欢迎加入全国软件测试交流 QQ  群:7156436 ...

  3. SSH远程连接虚拟机,将虚拟机映射本地端口

    本周学习内容: 1.继续学习了网络是怎么连接的和JavaScript的内容: 2.使用JavaScript实现在页面打印九九乘法表,将编写的乘法表部署到本地IIS服务器: 3.安装sshd服务,使用S ...

  4. SecureCRT远程连接虚拟机CentOS的三种方式

    当在VMware虚拟机中将CentOS安装成功后,会在win7系统中模拟出两个虚拟网卡:VMnet1和VMnet8,我们来查看一下,点击“控制面板—>查看网络状态和任务—>更改适配器设置” ...

  5. dubbo+zookeeper+springboot构建服务

    本次和大家分享的是dubbo框架应用的初略配置和zookeeper注册中心的使用:说到注册中心现在我使用过的只有两种:zookeeper和Eureka,zk我结合dubbo来使用,而Eureka结合s ...

  6. [经验] SpringBoot 远程连接 Linux 上的 Redis

    开发环境: ---------- springboot 2.X ---------- Linux Ubuntu 18.0.04 关于怎么在 Ubuntu 上安装 Linux , 网上的教程一大堆, 这 ...

  7. xshell远程连接虚拟机

    xshell百度网盘下载地址: 链接: https://pan.baidu.com/s/1cNn458wUyKNOcAxQ8vEPQg密码: 8vrw 安装xshell,步骤很简单这里就不多说了 if ...

  8. Navicat for MySQL远程连接虚拟机

    在虚拟机中进入mysql mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT O ...

  9. 主机连接虚拟机的mysql 记录

    检查远程的虚拟机是否可以ping通过 查看虚拟机IP为192.168.38.128 cmd窗口ping 192.168.38.128,出现如下界面说明是可以的 检查虚拟机mysql的端口号是否对外开通 ...

  10. 远程连接云主机MySql数据库

    笔者最近在学习MySql数据库,试着远程连接阿里云主机数据库.在连接过程中遇到不少麻烦,这里总结一下过程中遇到的问题. 基本前提 先在本地电脑和远程主机上安装MySql数据库,保证数据库服务启动. 云 ...

随机推荐

  1. flutter dio自定义http client

    final dio = Dio(); Dio getMyDio() { initAdapter(); dio.options.headers = {'apiKey': 'xxxxx'}; dio.op ...

  2. jvm中类和对象定义存储基础知识

    1 类文件数据结构类型 Class文件结构主要有两种数据结构:无符号数和表 •无符号数:用来表述数字,索引引用.数量值以及字符串等,比如 图1中类型为u1,u2,u4,u8分别代表1个字节,2个字节, ...

  3. OSPF路由控制

    实验拓扑 实验需求 公司A使用OSPF路由协议实现公司设备全网互通,后来公司A扩张兼并了公司B,要求将公司B采用的IS-IS路由协议与公司A的OSPF协议互相引入,使得相应部门可以实现互通. Rout ...

  4. 在Transformers 中使用约束波束搜索引导文本生成

    引言 本文假设读者已经熟悉文本生成领域波束搜索相关的背景知识,具体可参见博文 如何生成文本: 通过 Transformers 用不同的解码方法生成文本. 与普通的波束搜索不同,约束 波束搜索允许我们控 ...

  5. 一篇文章带你入门HBase

    本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 目录 HBase特性 Hadoop的限制 基本概念 NameSpace Table RowKey Column Time ...

  6. SpringBoot项目启动 报错:Error executing Maven. end tag name </settings> must match start tag name

    SpringBoot项目启动 报错:Error executing Maven. end tag name must match start tag name from line xxx 第一次创建s ...

  7. Unity的Console的控制类LogEntries:深入解析与实用案例

    使用Unity Console窗口的LogEntries私有类实现自定义日志系统 在Unity开发过程中,我们经常需要使用Console窗口来查看程序运行时的日志信息.Unity内置的日志系统提供了基 ...

  8. Hexo博客Next主题bilibili视频Markdown插入文章

    问题及需求 B站视频无广告有弹幕,非常简洁,经常看B站视频,在文章引用B站的视频 在不用插件的情况下用官方的iframe方式引入视频,默认的方式导入视频屏幕会很小 一般我们都是自己改width和hei ...

  9. Swift函数调用方式浅析

    函数的调用机制   函数的调用机制是在函数调用时通过那种路径走到最终调用函数地址的机制. 在编程语言中,函数的调用机制有三种 1.静态调用:编译期就确定了函数内存地址,执行效率最高,还可以使用编译器优 ...

  10. 巧用 nc 命令传输文件

    今天在业务上云的时候,遇到了些问题.最终发现问题的根源不好排查,于是-- 把生产环境的全量配置文件,还有日志全量打包下载到开发机器分析! 刚入职不是很久的整个运维团队,也不是很熟悉生产环境(有时候觉得 ...