Spring Boot----SpringBoot整合 Dubbo 和 Zookeeper

下载安装Zookeeper

linux

  使用docker部署

windows:参考(https://blog.csdn.net/ring300/article/details/80446918),下载的zookeeper目录中需要包含lib(内置jar包,否则需要自己导入)

  1、将conf目录下的zoo_sample.cfg文件,复制粘贴一份,重命名为zoo.cfg

  2、创建data目录和log目录

  3、修改zoo.cfg 文件中的

dataDir=D:\Zookeeper\data
datalogDir=D:\Zookeeper\log

  4、启动 双击 zkServer.cmd

对zoo.cfg文件配置说明

  tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

  initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接

时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是

10*2000=20 秒

  syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒

  dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。

  clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。

 

SpringBoot整合Dubbo(RPC)

整合dubbo添加依赖

方法文档:https://github.com/apache/dubbo-spring-boot-project

1、provider 发布服务

1.1 在provider中的pom添加dubbo依赖和zookeeper相关依赖

        <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><!--zookeeper应该不需要在依赖了--><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.5</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency>

1.2 application.properties

#当前服务的名字可以任意
dubbo.application.name=provider
#zookeeper的默认端口2181
dubbo.registry.address=zookeeper://localhost:2181
#将service包下的服务发布出去
dubbo.scan.base-packages=com.zy.provider.service

1.3 Service(非常重要,需要有一份一样的service接口到consumer中,全限定类型(包名和类名都要一样))

package com.zy.provider.service;public interface TestService {public String test();
}

1.4 serviceimpl

@Component
@Service  //注解到实现类上【org.apache.dubbo.config.annotation.Service;】
public class TestServiceImpl implements TestService {  //必须有一个接口@Overridepublic String test() {return "ok";}
}

1.5 启动:表示注册成功(否则,测试consumer的时候会报错)

 

2、consumer 引用服务

2.1 引入依赖

        <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><!--排除zookeeper内部的日志jia包,防止和自生项目引入日志jar包产生冲突--><!--zookeeper应该是不需要在依赖了--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.5</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency>

2.2 application.properties

dubbo.application.name=consumer
dubbo.registry.address=zookeeper://192.168.1.101:2181
server.port=8082

2.3 创建service接口(这个service和provider中的 service需要一样,全限定类名一样(包名+接口名字))

package com.zy.provider.service;  //注意包名public interface TestService {public String test();
}

2.4 创建自己项目中的service

package com.zy.consumer.service;
import com.zy.provider.service.TestService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;@Service
public class ConsumerService {@Reference //注意包是dubbo下的org.apache.dubbo.config.annotation.Reference;TestService testService;public void test(){System.out.println(testService.test());}
}

2.5 测试,控制台打印ok

@RunWith(SpringRunner.class)
@SpringBootTest
public class ConsumerApplicationTests {@Autowiredprivate ConsumerService consumerService;@Testpublic void contextLoads() {consumerService.test();}
}

  

2.6 补充目录结构

 

 

 

 

 

  

  

 

转载于:https://www.cnblogs.com/yanxiaoge/p/11396326.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

visual studio 2005 sp1 安装错误解决

要解决此问题, 请按照下列步骤&#xff1a; 1. 单击 开始 单击 运行 &#xff0c; 键入 控件 secpol.msc , 然后单击 确定 。 2. 双击 本地安全策略 。 3. 单击 软件限制策略 。 注意 如果列出, 没有软件限制右键单击 软件限制策略 , 然后单击 新建策略 。 4. 在 对象类…

递归树求解递归算法的时间复杂度

递归算法时间复杂度的计算方程式一个递归方程&#xff1a; 在引入递归树之前可以考虑一个例子&#xff1a; T(n) 2T(n/2) n2 迭代2次可以得&#xff1a; T(n) n2 2(2T(n/4) (n/2) 2) 还可以继续迭代&#xff0c;将其完全展开可得&#xff1a; T(n) n2 2((n/2) 2 2((n/2…

git(4):git安装教程

1首先找到我们下载好的安装包 2打开安装包 3点击next 4点击next 5点击next 6 点击next 7点击next

基于Cairngorm的Silverlight开发 - part3

使用ModelLocator来管理视图 之前只是简单的介绍了一下ModelLocator的用法&#xff0c;在这里要把模型和视图结合起来&#xff0c;通过模型来来控制视图。在Silverlight中我们可以看到所有新建立的xaml都是继承自UserControl&#xff0c;所以在这里更新欢称视图为控件。至此给出…

时间复杂度空间复杂度分析

转发:https://blog.csdn.net/LF_2016/article/details/52453212 时间复杂度&#xff1a; 一般情况下&#xff0c;算法中基本操作重复执行的次数是问题规模n的某个函数f(n)&#xff0c;进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用"O"来表示数量级&#xff…

HDU 1284 钱币兑换问题 (动态规划 背包方案数)

钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15134 Accepted Submission(s): 9117 Problem Description 在一个国家仅有1分&#xff0c;2分&#xff0c;3分硬币&#xff0c;将钱N兑换成硬币有很…

github(5):GitHub的注册与使用(详细图解)

首先,你需要注册一个 github账号,最好取一个有意义的名字&#xff0c;比如姓名全拼&#xff0c;昵称全拼&#xff0c;如果被占用&#xff0c;可以加上有意义的数字. 本文中假设用户名为 chuaaqiCSDN(我的博客名的全拼) 一、gihub账号注册与仓库创建 1. 注册账号: 地址: https…

Hive分区和桶的概念

Hive 已是目前业界最为通用、廉价的构建大数据时代数据仓库的解决方案了&#xff0c;虽然也有 Impala 等后起之秀&#xff0c;但目前从功能、稳定性等方面来说&#xff0c;Hive 的地位尚不可撼动。 其实这篇博文主要是想聊聊 SMB join 的&#xff0c;Join 是整个 MR/Hive 最为…

git学习(6):删除github镜像

怎样删除GitHub上的项目 第一步&#xff1a;双击GitHub的项目workhard(举例) 第二步&#xff1a;确认项目可以删除&#xff0c;双击settings 第三步&#xff1a;找到 Delete this repository按钮并单击 第四步&#xff1a;在弹出的模态框框中输入需要删除的项目名字&#xff…

剧情介绍:“肖申克的救赎”

故事发生在1947年&#xff0c;银行家安迪因为妻子有婚外情&#xff0c;用枪杀死了她和她的情人&#xff0c;因此他被指控枪杀了妻子及其情人&#xff0c;安迪被判无期徙刑&#xff0c;这意味着他将在肖恩克监狱中渡过余生。  阿瑞1927年因谋杀罪被判无期徙刑&#xff0c;数次…

Spring Boot----Dubbo

概述 治理和维护各个分系统 参考官网&#xff1a;http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html &#xff08;可中英文切换&#xff09; 下载安装Zookeeper linux 使用docker部署 windows: 参考&#xff08;https://blog.csdn.net/ring300/a…

hadoop join

在介绍这个实例之前&#xff0c;请各位参考&#xff1a;http://bjyjtdj.iteye.com/blog/1453410。 reduce side join是一种最简单的join方式&#xff0c;其主要思想如下&#xff1a; 在map阶段&#xff0c;map函数同时读取两个文件File1和File2&#xff0c;为了区分两种来源的…

git学习(8):windows系统下VI编辑器的基本使用

vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.但是在windows系统中如何使用VI编辑器呢&#xff1f; 下面给大家介绍在git环境下的vi编辑器的简单用法和部分命令. 工具原料&#xff1a;git2.7.2, 下载地址&#xff1a;https://git-for-windows.githu…

BUUOJ misc 二维码

一个二维码&#xff0c;扫一下是提示&#xff1a;secret is here 用binwalk看一下&#xff1a; binwalk QR_code.pngDECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 …

IXMLDOMDocument中的load方法返回值有BUG

IXMLDOMDocument中的load方法返回值是否有BUG IXMLDOMDocument中load一个xml文件时&#xff0c;返回值和msdn上说的不符MSDN上说的是&#xff1a;Return ValuesS_OK The value returned if successful. S_FALSE The value returned if the load fails. E_INVALIDARG The val…

hadoop join之map side join

在本例中&#xff0c;我们仍然采用上一例中的数据文件。之所以存在reduce side join&#xff0c;是因为在map阶段不能获取所有需要的join字段&#xff0c;即&#xff1a;同一个key对应的字段可能位于不同map中。Reduce side join是非常低效的&#xff0c;因为shuffle阶段要进行…

git学习(7):创建ssh key时遇到“Bad escape character ‘ygen’.”

问题&#xff1a; 创建ssh key时遇到“Bad escape character ‘ygen’.” image.png $ ssh -keygen -t rsa -C "" Bad escape character ygen. 分析原因&#xff1a;ssh -keygen之间出现了空格&#xff0c;正确命令是没有空格的

Web中的鼠标自动移动

其实只是一个模拟&#xff0c;思路是这样的&#xff1a;让鼠标消失&#xff0c;再用一个跟鼠标一样的图片跟随鼠标移动&#xff0c;这样我们就可以控制这个图片的移动了。。。囧&#xff5e; 怎样让鼠标消失呢&#xff0c;就是做一个高宽1px的透明cur文件&#xff0c;并把其设置…

用小程序·云开发打造运动圈小程序丨实战

乒乓圈小程序 和朋友合伙写了一个小程序&#xff0c;写了一个以共享乒乓信息和交流的平台———乒乓圈。我们使用了微信的云开发来完成数据和后台的作用。免去了租赁服务器。 我主要负责的是数据库的设计和云函数实现数据获取和触发器的功能和简单的两个页面。 正文 功能展示 页…

hadoop join之semi join

SemiJoin&#xff0c;也叫半连接&#xff0c;是从分布式数据库中借鉴过来的方法。它的产生动机是&#xff1a;对于reduce side join&#xff0c;跨机器的数据传输量非常大&#xff0c;这成了join操作的一个瓶颈&#xff0c;如果能够在map端过滤掉不会参加join操作的数据&#x…