粗略的学完springcloud后由于公司的项目有用到一点dubbo,刚好手头上又有dubbo的学习资料,于是趁机相对系统的学了下duboo框架,今天开始记录下我的所学所悟;说来惭愧,今年之前,作为一个有差不多两年开发经验的程序员竟然连微服务都没听过,一方面自己对这方面的技术没有过多关注,另一方面我从事的公司业务都相对传统,一个ssh框架一台服务器基本足够满足业务需求了;而开始知道微服务这个概念是在我年初有跳槽的想法后,那时候开始关注这方面,才知道有什么服务治理框架springcloud和dubbo;接下来记录这次学习dubbo的详细笔记

一、Dubbo介绍

  以下内容摘自dubbo官网:

  dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现;

  而在我目前这个水平的认知里,dubbo就是一款解决服务间通信的框架,他能让不在一台服务器的各个服务进行相互调用,对使用者来说就像调用本地方法一样,并为我们整合了智能容错和负载均衡,当某个服务不可用或是当某个服务新增时dubbo会自动发现并注册他们。dubbo还提供了管理控制台,我们可以很直观的看到当前注册中心的状态以及注册中心中注册的服务(包括服务的提供者和消费者),还可以对这些服务进行各种管理,包括服务动态配置,负载均衡,访问控制,权重管理等等;下面贴上dubbo官网的架构图:

  由图可见,和springcloud一样,dubbo也有服务消费者、提供者以及注册中心的概念,只不过springcloud整合了eureka作为注册中心,而dubbo使用的注册中心由第三方提供;官网推荐使用 zooKeeper;dubbo架构里还提供了一个简单的Montior(监控中心),它能够实时监控服务间的调用情况,包括调用的次数,时间以及成功失败与否,需要注意的是如果monitor挂掉不会影响服务间的相互调用

二、Dubbo环境搭建(基于普通maven项目的搭建,后续会记录基于springboot的搭建)

  接下来进行dubbo的环境搭建,根据架构图总结为以下几步:

  (一)搭建zooKeeper注册中心(由于我的老爷机性能,不足以支撑VMware所以我只在Windows环境下搭建了)

  (二)dubbo管理控制台的搭建

  (三)监控中心的搭建

  (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务

  (五)进行服务间的调用并测试

  (一)搭建zooKeeper注册中心

    1、下载并解压zooKeeper(https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/)

    2、conf目录下zoo_sample.cfg文件中的clientPort表示zooKeeper的端口号,dataDir的值表示临时数据存储的目录,可以在conf同级目录新建data文件夹,然后将dataDir的值设成data,即dataDir=../data

    3、进入bin目录,如果这时候启动zkServer.cmd应该会报错,原因是zkEnv.cmd定义的zoo.cfg文件找不到,这时候有两种解决办法,一是进入/conf目录将zoo_sample.cfg复制一份改名为zoo.cfg;另一种方法是将bin目录下的zkEnv.cmd文件以记事本方式打开,将set ZOOCFG=%ZOOCFGDIR%\zoo.cfg改为set ZOOCFG=%ZOOCFGDIR%\zoo_sample.cfg;

    4、这时候你可以双击或是使用命令行启动bin下的zkServer.cmd文件了,但是我试过的两次这时候还是报错的,错误如下图所示( JAVA_HOME is incorrectly set.):

  这应该是JAVA_HOME配置出了问题,可以去zkEnv.cmd进行如下修改:将set JAVA_HOME=%JAVA_HOME:"=%改为set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_181"(等号后面的值是对应的本地jdk路径),然后将所有用双引号括起来的JAVA_HOME外面的双引号去掉,然后重启zkServer.cmd就能成功启动zooKeeper了

  二、dubbo管理控制台的搭建

    1、在https://github.com/apache/incubator-dubbo-ops下载dubbo-admin项目,这里需要注意一点我直接进去的时候默认分支是develop,这个分支应该是各路大神正在开发的,我看每天都有跟新,但一开始我不知道啊,看到它的目录如下:

   我想dubbo的管理控制台都做成前后端分离的了呀,这么高端!于是就给下载下来了,dubbo-admin-backend项目还好,是一个springboot项目,用maven打个包就运行起来了,但是dubbo-admin-frontend项目开始 我也是使用mvn打包,但打出了一个node文件夹,对nodejs我一点了解没有,后来通过该项目的README.md文件和百度才把他起起来,然后还很欣喜的认为启动成功了,于是按照控制台的提示打开了dubbo-admin-frontend项目的首页,结果如下:

   各种英文啊,要知道我的概念里dubbo-admin的页面全是中文的啊(等下搭建成功上图就知道了),心里还在想难道是dubbo做的更新,于是启动了之前开发好的一个服务向注册中心进行注册然后看控制台有没有显示,结果是令我失望的,无论怎么刷新页面还是如上,啥都没有,尴尬的是页面右上角的设置,通知这些按钮点击都没有效果,反应迟钝的我才意识到这有可能只是个开发中的demo;难怪我百度dubbo-admin-frontend显示的信息极少啊,于是我才回过头来想这是为什么,从dubbo官网跳到github然后不死心的慢慢找不同,最后终于发现是我选错了分支,尴尬一笔(好奇不知道有没有和我一样的白痴小白啊,哈哈),当我在相同的地址切换到master分支的时候,我印象中的dubbo-addmin终于出现了,至此浪费了一上午时间的问题终于搞定了,只是好奇这个develops分支下面的是干嘛的,是在准备跟新dubbo-addmin做成前后端分离的项目吗?希望有知道的大神告知,谢谢

  选对分支后的页面如下(然后直接下载即可):

  2、下载下来后进行解压,进入dubbo-admin文件夹,打开windows的命令控制台(可直接在当前路径里输入cmd快速启动这样就不用一层层的切换到当前目录了),输入命令:mvn clean package -Dmaven.test.skip=true进行打包,打包成功后进入target文件夹,会看到dubbo-admin-0.0.1-SNAPSHOT.jar,同样使用cmd输入java -jar dubbo-admin-0.0.1-SNAPSHOT.jar运行该项目,这样一切正常的话就可以直接访问了(用户名密码默认都为root),访问成功页面如下:

  需要注意的是,在使用mvn打包前最好进入dubbo-admin/src/main/resources下打开application.properties文件瞄一眼dubbo.registry.address的值是否是上面搭建的zooKeeper注册中心的地址,本机测试的话只要关注端口号与之前起的zooKeeper端口是否一致即可.可进入zookeeper-3.4.13/conf/zoo_sample.cfg文件查看zooKeeper的端口号

  至此dubbo的管理控制台就搭建成功了,后续我们可以在这里查看服务的注册情况以及对服务的相应管理;

 三、简单监控中心的搭建

   1、代码下载地址和dubboadmin一样,都位于incubator-dubbo-ops下,只不过dubbo管理控制台是dubbo-admin项目,而监控中心对应的是dubbo-monitor-simple项目,流程其实都是差不多的,把对应的项目打包然后跑起来就好了;但需要注意的是,我们打包之前都要看一样对应的配置文件里面的注册中心地址是否正确以及自身的端口号,ubbo-monitor-simple的配置文件在incubator-dubbo-ops-master\dubbo-monitor-simple\src\main\resources\conf\dubbo.properties中;一般我们都在本地测试的话是不用修改的,因为默认的注册中心就是zookeeper://127.0.0.1:2181;端口号是8080

   2、接下来就是跑这个监控中心了,进入dubbo-monitor-simple文件夹,使用maven进行打包并跳过单元测试,命令如下:mvn package -Dmaven.test.skip;打包成功后进入targer文件夹,解压dubbo-monitor-simple-2.0.0-assembly.tar.gz后会有一个dubbo-monitor-simple-2.0.0文件夹,进入dubbo-monitor-simple-2.0.0\assembly.bin并运行start.bat,这样监控中心算是启动起来了,启动成功后访问localhost:8080页面如下:

  至此,dubbo的监控中心也算是搭建好了,后续可以结合dubbo-admin完美监控服务的运行状态,包括接口的暴露、注册情况,以及他们之前的调用明细

  时间关系这篇笔记到此为止,后续记录运用到dubbo的简单demo

  

  

   

dubbo入门学习笔记之环境准备的更多相关文章

  1. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  2. Dubbo 入门学习笔记

    项目结构 模块介绍: DubboAPI    ----API接口 DubboConsumer ----消费者 DubboProvider ----生产者 DubboAPI  Service 提供的接口 ...

  3. Dubbo -- 系统学习 笔记 -- 入门

    Dubbo -- 系统学习 笔记 -- 目录 入门 背景 需求 架构 用法 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行, ...

  4. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  5. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  6. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

  7. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

  8. OpenCV入门学习笔记

    OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...

  9. React 入门学习笔记整理目录

    React 入门学习笔记整理(一)--搭建环境 React 入门学习笔记整理(二)-- JSX简介与语法 React 入门学习笔记整理(三)-- 组件 React 入门学习笔记整理(四)-- 事件 R ...

随机推荐

  1. 关于在html中直接引入less文件遇到的小问题

    由于想直接在html页面上调用less文件,所以直接在代码上直接引入 <script src="bower_components/less/dist/less.js"> ...

  2. centos7中bash: maven: 未找到命令... 解决办法

    安装了maven,但在执行mvn -v或maven-versions时提示bash: maven: 未找到命令... 应该是环境变量出错,把MAVEN_HOME的路径换到PATH上就可以了,如下: e ...

  3. 雷林鹏分享:url中加号引发的错误

    刚发现了博客的一个bug,标签页中一些标签带有空格,在url输出中使用了 urlencode 函数进行处理,导致空格被转换成了加号(+),这时通过url访问时会出现错误: 临时解决方法是在urlcod ...

  4. [Ubuntu] 运行.AppImage格式文件

    右键Properties, Permissions勾选Allow executing file as program,如图

  5. Day 4 变量常量

    编辑语言的分类 编程语言,他是人与计算机沟通的一种介质 机器语言 计算机只认识0和1,为了和计算机沟通,你也得认识0和1 优点:执行效率快 缺点:普通人根本就写不了这种代码,开发效率低 汇编语言 他还 ...

  6. 在chrome上隐藏video的option按钮

    隐藏方法: video::-webkit-media-controls{ overflow:hidden !important;}video::-webkit-media-controls-enclo ...

  7. 可编程并行接口8255A详解

  8. XV Open Cup named after E.V. Pankratiev. GP of Siberia-Swimming

    给出两个点,找到过这两个点的等角螺线,并求出中间的螺线长 $c = \frac{b}{a}$ $p = a \times c^{\frac{\theta}{angle}}$ 对弧线积分 #includ ...

  9. 服务器与客户端连接 & 聊天机器人

    服务器运行当显示 E:\pycharm\python\venv\Scripts\python.exe E:/pycharm/python/协议/机器人聊天服务器.py 开始监听 accept 说明服务 ...

  10. rem 转 px

    (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? ...