zookeeper 密码_阿里资深JAVA架构带你深度剖析dubbo和zookeeper关系

为什么要用dubbo?

当网站规模达到了一定的量级的时候,普通的MVC框架已经不能满足我们的需求,于是分布式的服务框架和流动式的架构就凸显出来了。

9825191851fd9bd53737db061a201a32.png

单一应用架构

当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM) 是关键。

垂直应用架构

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC) 是关键。

分布式服务架构

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

此时,用于提高业务复用及整合的分布式服务框架(RPC) 是关键。

流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

此时,用于提高机器利用率的资源调度和治理中心(SOA) 是关键。

废话不多说,先搭建一个看看是怎么一回事?–

目前对我来说就是,我A工程想调用B工程中的方法怎么办?我import不进来啊,这时候我就需要远程调用的方法了,怎么远程调用呢?dobbu给我提供了一个好的开源框架,那我就用它来操作吧!

dubbo和zookeeper啥关系?

简单来说打个比方:dubbo就是动物园的动物,zookeeper是动物园。如果游客想看动物的话那么就去动物园看。比如你要看老虎,那么动物园有你才能看到。换句话说我们把很多不同的dubbo(动物)放到zookeeper(动物园中)提供给我们游客进行观赏。这个过程中三个关键:场所、供给者、消费者。

再说一个分布式的项目,server(消费)层与 service(供给)层被拆分了开来, 部署在不同的tomcat中, 我在server层需要调用 service层的接口,但是两个运行在不同tomcat下的服务无法直接互调接口,那么就可以通过zookeeper和dubbo实现。就好比把动物放到动物园,我们要看了直接去动物园就行。而不能直接去动物生活的地方去看,会有性命安全之忧(比如你去看老虎)。

我们通过dubbo 建立service这个服务,并且到zookeeper上面注册,填写对应的zookeeper服务所在 的IP及端口号。

341aa5721a1fc2b036b1f3b4c230abb4.png

下面我们的server层需要来调用 service接口了,由于在不同的工程中,它是无法直接找到service接口的,我们使用dubbo再来引用注册进入的dubbo服务。

我们先填写zookeeper服务所在 的IP及端口号,再填写我们需要调用的接口名字。

5170453cc92edf58ae1f555ee889c41b.png

这样,就能实现调用。。。

搭建简单的dubbo

1.下载zookeeperhttp://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3-beta.tar.gz

9df789532275aac12e08b842649fb33a.png

2.配置:

zookeeper的配置文件在conf目录,有zoo_sample.cfg 和 log4j.properties,将zoo_sample.cfg 重命名成zoo.cfg,因为 zookeeper 在启动时会找这个文件作为默认配置文件。

95ffba8819a49e7ec2c8abefe40a47b6.png

3.修改zoo.cfg.

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=D:\\server\\zookeeper-3.5.3-beta\\data

dataLogDir=D:\\server\\zookeeper-3.5.3-beta\\log

#dataDir=/tmp/zookeeper

695574a440668617466b7a7b2d917dda.png

从上面代码可以看到添加了两行。在本机里。zookeeper放在D盘里,然后就添加了dataDir及dataLogDir两个变量。与此同时在zookeeper文件根目录下新建data及log两个文件夹,如果不创建,后面运行脚本是会报错。

d3438ebce23af0703b4584bca5bd8748.png

完成后,进入bin目录,运行zkServer.cmd脚本,然后就可以在单机上将zookeeper跑起来了。

cb52f1dfe0debf2320ec22d444c6bab3.png

剩下来的事情就是去配置DUBBO的XML文件了,通过IP地址的设置,提供本地的服务。

管理中心(动物园)和供给者(各种动物),消费者(万千游客)

dubbo的使用,其实只需要有管理中心(动物园)和供给者(各种动物),消费者(万千游客)这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。

dubbo-admin的下载,可自行到官网下载:https://github.com/alibaba/dubbo

下载下来是这样的一个目录结构:

cd3c56c94d16aa53b2bef80d0b15703f.png

这里我们只关心dubbo-admin这个文件夹,将dubbo-addmin打成war包,war包网上也有,但是下载了很多下来都会有问题,原因是每个人的电脑配置环境不一样,因此我们自己打包一个war就好。

打包war包,进入dubbo-admin这个文件目录 运行命令:

mvn package

e4c72647bd3b13420f0a0f91f39d162a.png

如果看到下图结果,说明打包成功了:

033089a682d1a7842903117041e95ac9.png

打包成功之后,就会发现dubbo-admin下多了个target文件夹,打开target文件夹,发现里面有个war包:

39a7e20e47707a53bf491870c956fe9f.png

把dubbo-admin-2.5.7.war文件复制到tomcat的webapps目录下,

在tomcat的bin目录下运行:tomcat8.0w.exe

6dfcb6e83ea65f18a878c496b2e6e277.png

6fa95d4b3d59b1a6831a52d3b56afd18.png

它会自动在webapps下生成一个文件夹,然后关闭tomcat8.0w.exe,修改端口号改成9090

a9b0b237427c17594a2e62a905cf7633.png

7578f625386b563dd50da20ab64d57e0.png

然后启动在bin目录下启动tomcat8.0.exe即可:

b2d56de7c369d00cce09063111f5b7db.png

启动后,输入

http://localhost:9090/dubbo-admin-2.5.7/

然后会提示你输入用户名和密码—-都是root

这个和你的配置文件里面的内容是相关的:

D:\server\Tomcat 8.5\webapps\dubbo-admin-2.5.7\WEB-INF

我的目录如图上所示,里面有一个dubbo.properties的文件:

dubbo.registry.address=zookeeper://127.0.0.1:2181dubbo.admin.root.password=root dubbo.admin.guest.password=guest

成功输入以后:

96414fb5ad750a3be33c38395ca0343d.png

到此这篇关于文章就结束了!

上述面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2020收集的一些大厂的面试真题(都整理成文档,小部分截图),有需要的可以 点击进入 查看领取资料。

点关注,不迷路!如果本文对你有帮助的话不要忘记点赞支持哦!

34c109e9c1d3f8faf4c4facfda101487.gif

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

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

相关文章

nw.js FrameLess Window下的窗口拖拽与窗口大小控制

nw.js FrameLess Window下的窗口拖拽与窗口大小控制 很多时候,我们觉得系统的Frame框很难看,于是想自定义。 自定义Frame的第一步是在package.config文件中将frame选项设置为false。 { "name": "1", "main": "index.…

linux 文件重命名_如何在 Linux 上重命名一组文件 | Linux 中国

要用单个命令重命名一组文件,请使用 rename 命令。它需要使用正则表达式,并且可以在开始前告诉你会有什么更改。-- Sandra Henry-stocker几十年来,Linux 用户一直使用 mv 命令重命名文件。它很简单,并且能做到你要做的。但有时你需…

oracle插入性能优化,Oracle-insert性能优化

看见朋友导入数据,花了很长时间都没完成!其实有很多快速的方法,整理下! 向表中插入数据有很多办法,但是方法不同,性能差别很看见朋友导入数据,,花了很长时间都没完成!其实有很多快速…

dba_segments和dba_tables的不同

create table tset as select * from dba_objects; select count(*) from tset; select table_name,blocks,empty_blocks from dba_tables where table_name’TSET’; select segment_name,bytes,blocks,extents from dba_segments where segment_name’TSET’; 问题来了&#…

微博air客户端_打磨近十年,接近「完美」的 macOS 第三方微博客户端:Maipo

2020年11月13日,macOS Big Sur正式推送当天,Maipo for 微博也迎来了4.0.0大版本更新。从Weibo for Mac(2011年)、WeiboX(2014年)到Maipo(2017年),跨度近十年,…

输入框联动查询

目的&#xff1a;类似于百度的搜索联动&#xff0c;输入前面的几个字&#xff0c;查询出可能的结果供用户选择&#xff0c;如下&#xff1a; html部分&#xff1a;在“中”这个输入框下面隐藏一个ul属性&#xff0c;例如: <ul class"am-padding-left-0 uhide" id&…

LoadRunner函数

一、基础函数简介 在VU左边导航栏中&#xff0c;有三个LoadRunner框架函数&#xff0c;分别是vuser_init()、Action()、vuser_end()。这三个函数存在于任何Vuser类型的脚本中。 vuser_init:虚拟用户的初始化函数&#xff0c;一般将用户初始化的操作放在这里&#xff0c;如登录操…

TPLink 备份文件bin文件解析

TPLink 路由器备份文件bin文件 测试路由器 WR885&#xff0c;备份文件加密方式DES&#xff0c;密钥&#xff1a;478DA50BF9E3D2CF linux端&#xff1a; openssl enc -d -des-ecb -nopad -K 478DA50BF9E3D2CF -in config.bin python&#xff1a; python默认没有安装crypto需要自…

linux的文件搜索命令,Linux文件搜索命令find的用法 | 术与道的分享

不管在Windows还是Linux中&#xff0c;最重要的问题不是说你能搜索到这个文件&#xff0c;而是最好少用搜索&#xff0c;应该是你在整个服务器的规划里面&#xff0c;把所以的文件目录规划的很好。就像如果你在家里找衣服&#xff0c;如果不是你乱扔&#xff0c;就不可能花费太…

vue v-if判断数组元素的值_Vue项目上线做的一些基本优化

前言本文主要是做一个Vue性能优化的帖子&#xff0c;做一个参考文档&#xff0c;对以后项目上线做一些集合文档。如果对各位在项目优化时&#xff0c;做一个文档参照。开发过程在开发项目的时候&#xff0c;就要注意项目的一些小技巧&#xff0c;下面我就罗列一些经常用到的优化…

BZOJ 4000: [TJOI2015]棋盘( 状压dp + 矩阵快速幂 )

状压dp, 然后转移都是一样的, 矩阵乘法快速幂就行啦. O(logN*2^(3m)) ---------------------------------------------------------------------------------------------#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define …

linux传文件file,linux文件的传输与压缩快速入门

scp --- 用于远程拷贝文件上传文件scp file userip:/file下载文件scp userip:/file filersync --- 远程同步&#xff0c;速度块&#xff0c;默认会忽略&#xff0c;文件属性&#xff0c;链接文件&#xff0c;设备文件-r --- 同步目录-p --- 同步权限-o --- 同步文件所有人-g --…

delphi 中如果不进行 closehandle 会怎么样_心理学:当你迷茫了,请坚持做三件事,你的未来会越来越好...

我们总是这样激励自己&#xff1a;未来是美好的。但是&#xff0c;生活不可能处处如意&#xff0c;人的一生也难以风平浪静&#xff0c;有巅峰就有低谷&#xff0c;有明朗就有迷茫。或是找不到未来发展的方向&#xff0c;或是事业、生活遭受了重大挫折&#xff0c;我们每个人都…

随笔2 PAT1001.A+B Format (20)

1001.AB Format(20) 题目链接 1001.AB Format (20) C 代码 第一次使用markdown&#xff0c;还不是很习惯&#xff0c;现在努力的在适应它 首先这道题我们很容易就可以读懂题意&#xff0c;就是简单的ab&#xff0c;只不过要求我们在输出sum的时候处理一下数字的格式。那么我的做…

mybatis传递多个参数_深入浅出MyBatis:MyBatis解析和运行原理

原文&#xff1a;https://juejin.im/post/5abcbd946fb9a028d1412efc本篇文章是「深入浅出MyBatis&#xff1a;技术原理与实践」书籍的总结笔记。上一篇介绍了反射和动态代理基础&#xff0c;主要是为本篇文章做个铺垫&#xff0c;反射使配置和灵活性大大提高&#xff0c;可以给…

linux ps 进程组,linux进程管理(2)---进程的组织结构

一、目的linux为了不同的进程管理目的&#xff0c;使用了不同的方法组织进程之间的关系&#xff0c;为了体现父子关系&#xff0c;使用了“树形”图&#xff1b;为了对同一信号量统一处理&#xff0c;使用了进程组&#xff1b;为了快速查找某个进程&#xff0c;使用了哈希表&am…

统计建模与r软件_【统计建模与R软件笔记】008 描述统计量(1)

今天我们开始来学习描述统计量吧&#xff01;位置的度量位置的度量就是用来描述定量资料的集中趋势的统计量&#xff0c;常用的有均值、众数、中位数、百分位数等。1.均值 mean( )形式&#xff1a;mean(x, trim 0, na.rm FALSE)x 是对象(如向量、矩阵、数组或数据框)trim 是计…

npm环境安装linux,Node.js环境在linux上的部署教程

我们以centOS为例来说说如何部署node.js环境一 打开centos,然后开始下载node.js包curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -yum -y install nodejs二 安装gcc环境yum install gcc-c make安装完成!三 安装nodejs的npm,这是一个包程序工具,类似于…

Nancy跨平台开发总结(三)发布到Jexus Web服务器

在Centos7上安装Mono yum install yum-utils rpm --import "http://keyserver.ubuntu.com/pks/lookup?opget&search0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ yum install m…

stat函数_数据分析工具入门 掌握这些Excel函数就够了

1.什么是函数可以把函数理解为一个可以控制的黑箱子&#xff0c;输入X到黑箱子中&#xff0c;他就会输出Y&#xff0c;参数就是黑箱子的控制开关&#xff0c;打到不同的档位&#xff0c;黑箱子会输出不同的Y。2.常见函数分类文本清洗函数关联匹配函数逻辑运算函数计算统计函数时…