当前位置: 首页 > news >正文

duboo+zookeeper分布式架构入门

分布式 dubbo + Zookeeper

分布式系统就是若干独立计算机的集合(并且这些计算机之间相互有关联,就像是一台计算机中的C盘F盘等),这些计算对于用户来说就是一个独立的系统。

zookeeper安装

下载地址:Index of /dist/zookeeper/zookeeper-3.4.14 (apache.org)

这里选择3.4.14版本安装

下载完成得到一个压缩包,解压到我们安装的位置,打开解压之后的文件夹中的conf目录,把zoo_sample.cfg这个文件复制一份副本,将副本改名为zoo.cfg任何返回上一级目录,打开bin运行服务端zkServer.cmd,等待服务端运行成功之后运行客户端zkCli.cmd,服务端运行成功可以看见这一段信息 - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181,客户端运行成功看到WATCHER::WatchedEvent state:SyncConnected type:None path:null之后回车会显示[zk: localhost:2181(CONNECTED) 0]表示安装成功

安装dubbo-admin

dubbo-admin是一个监控管理后台,可以查看我们注册了哪些服务和查看哪些服务被消费了

github下载地址:apache/dubbo-admin at master (github.com)

下载之后是源码,这是一个maven项目,我们可以打包之后使用。进入文件夹dubbo-admin-master,执行打包命令

mvn clean package -Dmaven.test.skip=true等待cmd显示build success。打包成功之后开启zookeeper服务端后,进入dubbo-admin-master中的dubbo-admin-service目录,进入target文件夹cmd执行jar包。执行成功之后浏览器输入localhost:8080可以进入dubbo-admin的ui界面。初始密码和初始账号是root

测试分布式架构

新建两个springboot项目模块,一个服务提供商,一个使用者都导入dubbo和zookeeper依赖

<!-- 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.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version>
</dependency>
<!--zookeeper和springboot会有日志冲突需要排除一个日志的jar包;并且zookeeper需要依赖其他的jar包才能够正常运行-->
<dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version>
</dependency>
<dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.12.0</version>
</dependency>
<dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.14</version><!--这里写排除包--><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions>
</dependency>

服务提供商配置

server:port: 8001# 当前服务应用的名字
dubbo:application:name: provider-server
#  注册中心地址registry:address: zookeeper://127.0.0.1:2181
# 配置需要被注册的服务的包地址scan:base-packages: com.zhong.service

这里可能会存在一个问题就是20880端口被占用了,于是项目于启动失败。如果出现这个问题就修改dubbo端口

# 修改端口为20881
dubbo:protocol:name: dubboport: 20881

服务端测试

package com.zhong.service;import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;@Service //因为dubbo的@service注解和springboot的注解名字一样,不容易区分,特别要注意导入的包名
@Component //或者使用组件注解@Component
//使用了注解以后,会自动的注册服务到服务中心(zookeeper)
public class TicketServiceImpl implements TicketService {@Overridepublic String getTicket() {return "hello";}
}

测试服务注册,首先开启zookeeper,然后开启dubbo-admin,再开启项目。正常启动应该能够看到这两个服务被注册

在这里插入图片描述

用户配置

server:port: 8002
dubbo:
#  暴露消费者名字application:name: consumer-server
#    配置注册中心地址registry:address: zookeeper://127.0.0.1:2181

用户端这里有两种方式调用远程的接口,一是使用POM坐标(实际开发常用),二是使用新建一个相同的路径名的接口。

package com.zhong.service;import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;@Service//注意用户端这里的服务需要注入到容器中调用,所以这里是springboot的注解
public class UserService {@Reference//这里是指注入远程的接口,必须新建一个与远程接口包路径相同的接口来接收private TicketService ticketService;public void getTicket() {String ticket = ticketService.getTicket();System.out.println(ticket);}}

之后从容器中拿到注入的本地对象直接调用就可以了

相关文章:

duboo+zookeeper分布式架构入门

分布式 dubbo Zookeeper 分布式系统就是若干独立计算机的集合&#xff08;并且这些计算机之间相互有关联&#xff0c;就像是一台计算机中的C盘F盘等&#xff09;&#xff0c;这些计算对于用户来说就是一个独立的系统。 zookeeper安装 下载地址&#xff1a;Index of /dist/z…...

黑盒测试用例设计方法-等价类划分法

目录 一、等价类的作用 二、等价类的分类 三、等价类的方法 四、等价类的原则 五、按照测试用例的完整性划分等价类 六、等价类步骤 七、案例 一、等价类的作用 为穷举测试设计测试点。 穷举&#xff1a;列出所有的可能情况&#xff0c;对其一一判断。 测试点&#x…...

4.OCR文本识别Connectionist Temporal Classification(CTC)算法

文章目录1.基础介绍2.Connectionist Temporal Classification(CTC)算法2.1 什么是Temporal Classification2.2 CTC问题描述2.2关于对齐2.3 前向后向算法2.4 推理时3.pytorch中的CTCLOSS参考资料欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f3…...

误删了Ubuntu/Linux的一些默认用户目录怎么办?

用户目录&#xff1a;指位于 $HOME 下的一系列常用目录&#xff0c;例如 Documents&#xff0c;Downloads&#xff0c;Music&#xff0c;还有 Desktop等。本文不是讲如何恢复原有目录及其重要文件&#xff0c;适用于仅恢复目录功能一&#xff1a;仅恢复个别目录如误删了Desktop…...

ArXiv简介以及论文提交

arXiv网站简介 arXiv是一个收集物理学、数学、计算机科学、生物学与数理经济学的论文预印本的网站。其中arXiv发音同“archive”&#xff0c;因为“X”代表希腊字母 &#xff0c;国际音标为[kai]。它于1991年8月14日成立&#xff0c;现由美国康奈尔大学维护。 ——维基百科 对…...

pytorch学习

目录如下&#xff1a; pytorch常用操作 pytorch 常用操作 pytorch 的 detach()函数 1. 什么是detach()函数 我们在将输出特征矩阵进行存储的时候&#xff0c;经常需要将torch.Tensor类型的数据转换成别的如numpy类型的数据&#xff0c;但是Tensor类型的数据是会自动计算梯度…...

【OC】块初识

Block简介 Blocks是C语言的扩充功能。可以用一句话来表示Blocks的扩充功能&#xff1a;带有自动变量的匿名函数。 匿名函数 所谓匿名函数就是不带有名称的函数。C语言的标准不允许存在这样的函数。例&#xff1a; int func(int count);它声明了名称为func的函数。下面的源代…...

3-2 创建一个至少有两个PV组成的大小为20G的名为testvg的VG

文章目录1. 在vmware添加多块20G的硬盘&#xff0c;并创建分区2. 创建一个至少有两个PV组成的大小为20G的名为testvg的VG&#xff0c;要求PE大小为16M&#xff0c;而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录3. 新建用户archlinux,要求其家目录为/users/archlinu…...

【密码学】 一篇文章讲透数字证书

【密码学】 一篇文章讲透数字证书 数字证书介绍 数字证书是一种用于认证网络通信中参与者身份和加密通信的证书&#xff0c;人们可以在网上用它来识别对方的身份。 我们在上一篇博客中介绍了数字签名的作用和原理&#xff0c;数字签名可以防止消息被否认。有了公钥算法和数字签…...

Linux 操作系统原理 — 内存管理 — 虚拟地址空间(x86 64bit 系统)

目录 文章目录目录虚拟地址格式与内核页表&#xff08;四级页表&#xff09;虚拟地址格式与内核页表&#xff08;四级页表&#xff09; 在 x86 64bit 系统中&#xff0c;可以描述的最长地址空间为 2^64&#xff08;16EB&#xff09;&#xff0c;远远超过了目前主流内存卡的规格…...

C语言深入知识——(2)指针的深入理解

1、字符指针 &#xff08;1&#xff09;字符指针的普通用法 char a A; char* pa &a;但是一般来说字符指针很少这么用……更多是拿来存储一个字符串 &#xff08;2&#xff09;字符串的两种存储以及区别 现在有了两种存储数组的方法 ①一个是使用char类型数组存储②另外…...

Git使用笔记

分支branch切换到另一个分支git checkout 你要切换到的分支的名字git checkout master将本地的这个分支branch1和gitee上的branch1进行合并&#xff08;本地的branch1有的&#xff0c;gitee上branch1没有的增加上去&#xff09;git merge branch1git merge 分支的名字查看本地是…...

数据库管理-第五十八期 倒腾PDB(20230226)

数据库管理 2023-02-26第五十八期 倒腾PDB1 克隆本地PDB2 没开归档总结第五十八期 倒腾PDB 其实本周过的不大好&#xff0c;连着两天熬夜&#xff0c;一次是割接一次是处理ADG备库的异常&#xff0c;其实本周有些内容是以前处理过的问题&#xff0c;到了周末还肚子痛。哎… 1…...

我看谁还敢说不懂git

文章目录一、Git介绍1.1、Git的作用1.2、Git的理念1.3、Git的特点1.4、Git对比SVN二、Git的概念2.1、Git基础概念三、Git的基本操作3.1、使用Git管理一个代码仓库的流程3.2、Git常用命令介绍四、Git状态的变化五、Git安装和配置5.1、Git的安装5.2、Git的配置六、Git的高级操作6…...

Scratch少儿编程案例-算法练习-实现加减乘除练习题

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...

【离线数仓-9-数据仓库开发DWS层设计要点-1d/nd/td表设计】

离线数仓-9-数据仓库开发DWS层设计要点-1d/nd/td表设计离线数仓-9-数据仓库开发DWS层设计要点-1d/nd/td表设计一、DWS层设计要点二、DWS层设计分析 - 1d/nd1.DWS层设计一&#xff1a;不考虑用户维度2.DWS层设计二&#xff1a;考虑用户维度2.DWS层设计三 &#xff1a;考虑用户商…...

python网络数据获取

文章目录1网络爬虫2网络爬虫的类型2.1通用网络爬虫2.1.12.1.22.2聚焦网络爬虫2.2.1 基于内容评价的爬行策略2.2.2 基于链接结构的爬行策略2.2.3基于增强学习的爬行策略2.2.4基于语境图的爬行策略2.3增量式网络爬虫深层网页爬虫3网络爬虫基本架构3.1URL管理模块3.2网页下载模块3…...

[Datawhale][CS224W]图机器学习(六)

目录一、简介二、概述三、算法四、PageRank的缺点五、Python实现迭代法参考文献一、简介 PageRank&#xff0c;又称网页排名、谷歌左侧排名、PR&#xff0c;是Google公司所使用的对其搜索引擎搜索结果中的网页进行排名的一种算法。 佩奇排名本质上是一种以网页之间的超链接个…...

aws ecr 使用golang实现的简单镜像转换工具

https://pkg.go.dev/github.com/docker/docker/client#section-readme 通过golang实现一个简单的镜像下载工具 总体步骤 启动一台海外区域的ec2实例安装docker和awscli配置凭证访问国内ecr仓库编写web服务实现镜像转换和自动推送 安装docker和awscli sudo yum remove awsc…...

【20230225】【剑指1】分治算法(中等)

1.重建二叉树class Solution { public:TreeNode* traversal(vector<int>& preorder,vector<int>& inorder){if(preorder.size()0) return NULL;int rootValuepreorder.front();TreeNode* rootnew TreeNode(rootValue);//int rootValuepreorder[0];if(preo…...

「JVM 高效并发」Java 线程

进程是资源分配&#xff08;内存地址、文件 I/O 等&#xff09;的基本单位&#xff0c;线程是执行调度&#xff08;处理器资源调度&#xff09;的基本单位&#xff1b; Loom 项目若成功为 Java 引入纤程&#xff08;Fiber&#xff09;&#xff0c;则线程的执行调度单位可能变为…...

ADAS-可见光相机之Cmos Image Sensor

引言 “ 可见光相机在日常生活、工业生产、智能制造等应用有着重要的作用。在ADAS中更是扮演着重要的角色&#xff0c;如tesla model系列全车身10多个相机&#xff0c;不断感知周围世界。本文着重讲解下可见光相机中的CIS(CMOS Image Sensor)。” 定义 光是一种电磁波&…...

【ESP 保姆级教程】玩转emqx MQTT篇③ ——封装 EmqxIoTSDK,快速在项目集成

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-26 ❤️❤️ 本篇更新记录 2023-02-26 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

Python自动化测试面试题-编程篇

前言 随着行业的发展&#xff0c;编程能力逐渐成为软件测试从业人员的一项基本能力。因此在笔试和面试中常常会有一定量的编码题&#xff0c;主要考察以下几点。 基本编码能力及思维逻辑基本数据结构&#xff08;顺序表、链表、队列、栈、二叉树&#xff09;基本算法&#xf…...

CIT 594 Module 7 Programming AssignmentCSV Slicer

CIT 594 Module 7 Programming Assignment CSV Slicer In this assignment you will read files in a format known as “comma separated values” (CSV), interpret the formatting and output the content in the structure represented by the file. Q1703105484 Learning …...

链路追踪——【Brave】第一遍小结

前言 微服务链路追踪系列博客&#xff0c;后续可能会涉及到Brave、Zipkin、Sleuth内容的梳理。 Brave 何为Brave&#xff1f; github地址&#xff1a;https://github.com/openzipkin/brave Brave是一个分布式追踪埋点库。 #mermaid-svg-riwF9nbu1AldDJ7P {font-family:"…...

Vision Transformer(ViT)

1. 概述 Transformer[1]是Google在2017年提出的一种Seq2Seq结构的语言模型&#xff0c;在Transformer中首次使用Self-Atttention机制完全代替了基于RNN的模型结构&#xff0c;使得模型可以并行化训练&#xff0c;同时解决了在基于RNN模型中出现了长距离依赖问题&#xff0c;因…...

104-JVM优化

JVM优化为什么要学习JVM优化&#xff1a; 1&#xff1a;深入地理解 Java 这门语言 我们常用的布尔型 Boolean&#xff0c;我们都知道它有两个值&#xff0c;true 和 false&#xff0c;但你们知道其实在运行时&#xff0c;Java 虚拟机是 没有布尔型 Boolean 这种类型的&#x…...

QML 颜色表示法

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 如果你经常需要美化样式(最常见的有:文本色、背景色、边框色、阴影色等),那一定离不开颜色。而在 QML 中,颜色的表示方法有多种:颜色名、十六进制颜色值、颜色相关的函数,一起来学习一下吧。 老规矩…...

基础数据结构--线段树(Python版本)

文章目录前言特点操作数据存储updateLazy下移查询实现前言 月末了&#xff0c;划个水&#xff0c;赶一下指标&#xff08;更新一些活跃值&#xff0c;狗头&#xff09; 本文主要是关于线段树的内容。这个线段树的话&#xff0c;主要是适合求解我们一个数组的一些区间的问题&am…...

福田做网站多少钱/百度竞价托管

前言 本博文主要讲解的知识点如下&#xff1a; 校验器统一处理异常RESTful拦截器Validation 在我们的Struts2中&#xff0c;我们是继承ActionSupport来实现校验的...它有两种方式来实现校验的功能 手写代码 XML配置 这两种方式也是可以特定处理方法或者整个Action的而SpringMVC…...

徐州旅游的网站建设/有没有永久免费crm

今天突然想在windows下利用cygwin执行一个脚本判断输入的文件名是目录还是文件&#xff0c;代码很简单&#xff0c;如下 #!/bin/shread -p enter file name: filenamepath$filenameif [ -d $path ] then echo $filename is the directoryelif [ -f $path ] then echo $path is …...

html做的小网站/天津网站seo设计

经常有人提问&#xff1a;说自己的项目是由许多DLL打包方式组织的&#xff0c;各个DLL之间的对象如何共享访问&#xff1f; 这其实很简单&#xff1a;只要共享对象创建后&#xff0c;把它的指针保存进一个大家都可以访问 的地方&#xff0c;需要的时候就去取。 我说用INI文件暂…...

交友网站开发功能需求/淘宝运营培训

第一章 NB-IOT介绍 1.1 初次相见NB 大家都知道WiFi&#xff08;能上网&#xff09;&#xff0c;蓝牙&#xff08;能传图连接鼠标耳机&#xff09;&#xff0c;ZigBee&#xff08;工厂内听说过&#xff09;&#xff0c;但是对时下比较火的低功耗广域网络&#xff08;LPWAN&#…...

网站页面优化方法有哪些内容/网站推广策划书模板

while(fabs(x0-x1)>1e-6);return x1;}11: 第11题下列程序定义了nn的二维数组&#xff0c;并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是&#xff1a;使数组左下半三角元素中的值全部置成0。答案&#xff1a;int fun(int a[][N]){int I,j;for(i0;i&#…...

男女做那个的小视频网站/郴州网站seo外包

开头 此文希望能给想跳槽和面试朋友一些参考。 金九银十已过&#xff0c;面试的狂热季也已结束&#xff0c;小编也正是选择了在金九十银跳槽&#xff0c;之前在腾讯做了五年Android开发工作&#xff0c;之后感觉公司不一定能继续提供给我想要的发展空间与前景。说白了&#x…...