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

dubbo安装跟部署

林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容。

本机环境: JDK:1.8

Maven:apache-maven-3.2.1

zookeeper:zookeeper-3.4.6

Tomcat:apache-tomcat-7.0.62

Dubbo-admin:dubbo-admin-2.5.4-SNAPSHOT.war 这是我自己本地打包生成的(下载地址:http://download.csdn.NET/detail/evankaka/9054273)

一、zookeeper安装与启动

首先需要安装JdK,从Oracle的Java网站下载,安装很简单,就不再详述。其中zookeeper的下载地址是http://www.apache.org/dyn/closer.cgi/zookeeper/,下载后直接解压,不用安装。

在你执行启动脚本之前,还有几个基本的配置项需要配置一下,Zookeeper 的配置文件在 conf 目录下,这个目录下有 zoo_sample.cfg 和 log4j.properties,你需要做的就是将 zoo_sample.cfg 改名为 zoo.cfg,因为 Zookeeper 在启动时会找这个文件作为默认配置文件。下面详细介绍一下,这个配置文件中各个配置项的意义。

[html] view plain copy

  1. #Thenumberofmillisecondsofeachtick
  2. tickTime=2000
  3. #Thenumberofticksthattheinitial
  4. #synchronizationphasecantake
  5. initLimit=10
  6. #Thenumberofticksthatcanpassbetween
  7. #sendingarequestandgettinganacknowledgement
  8. syncLimit=5
  9. #thedirectorywherethesnapshotisstored.
  10. #donotuse/tmpforstorage,/tmphereisjust
  11. #examplesakes.
  12. dataDir=D:\Java\Tool\zookeeper-3.4.6\tmp
  13. #theportatwhichtheclientswillconnect
  14. clientPort=2181
  15. #themaximumnumberofclientconnections.
  16. #increasethisifyouneedtohandlemoreclients
  17. #maxClientCnxns=60
  18. #Besuretoreadthemaintenancesectionofthe
  19. #administratorguidebeforeturningonautopurge.
  20. #http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  21. #ThenumberofsnapshotstoretainindataDir
  22. #autopurge.snapRetainCount=3
  23. #Purgetaskintervalinhours
  24. #Setto"0"todisableautopurgefeature
  25. #autopurge.purgeInterval=1

[plain] view plain copy

  1. dataDir=/tmp/zookeeper

改成如下:

[html] view plain copy

  1. <prename="code"class=“html”>dataDir=D:\Java\Tool\zookeeper-3.4.6\tmp</pre>

这里可以改成自己喜欢的
其中,

[html] view plain copy

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

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

  3. dataLogDir:顾名思义就是Zookeeper保存日志文件的目录

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

  5. 当这些配置项配置好后,你现在就可以启动Zookeeper了,启动后要检查Zookeeper是否已经在服务,可以通过netstat–ano命令查看是否有你配置的clientPort端口号在监听服务

单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:D:JavaToolzookeeper-3.4.6下,Zookeeper 的启动脚本在 bin 目录下,Windows 下的启动脚本是bin文件下的如,D:JavaToolzookeeper-3.4.6inzkServer.cmd。

启动如下:

输入JPS,出现如下,也说明启动成功

上面的黑色框框不关,就表示注册中心一直开关的,一定要记得注册中心要在程序运行之前就打开,而且是一直开着的

二、Dubbo-admin管理平台的安装

1.1、dubbo-admin 本地编译打包

因为zookeeper只是一个黑框,我们无法看到是否存在了什么提供者或消费者,这时就要借助Dubbo-Admin管理平台来实时的查看,也可以通过这个平台来管理提者和消费者。
dubbo-admin.war可在网上百度去下载,但是我下载了好几个war包,发布上去服务启动都报错,这个时候大概是我们系统的JDK和编译dubbo-admin.war的JDK版本不同导致的了。所以我之后直接下载了dubbo-master的源代码,然后自己编译了一个war包,这样就不会存在启动报错的问题了。(这里强烈建议自己编译一个,网上找的基本都不行,试了很多个,最后还是自己来搞)其中自己电脑编译的过程如下,一定在安装maven和jdk!

dubbo的所有源码可在https://github.com/alibaba/dubbo上下载。下好之后解压

解压后的文件内容,这里你其它的都不用去管,只管dubbo-admin.

因为这里只需要编译Dubbo-Admin,所以打开Cmd,然后进入解压路径 E:下载dubbo-masterdubbo-masterdubbo-admin,有人把整个工程都编译了,其实没有必要,只需要编译dubbo-admin即可,有什么依赖的,maven会自动帮你解决。整个过程如下:

首先,通过cmd进入目录,输入命令

然后输入命令

[html] view plain copy

  1. mvnpackage-Dmaven.skip.test=true

这里要自己把maven的环境变量配置好,这里的-Dmaven.skip.test表示不打包测试包。然后结果如下,表示打包成功

再打开项目的文件所在位置:E:下载dubbo-masterdubbo-masterdubbo-admin arget

target表示构建的本地路径,打开,里面有个文件dubbo-admin-2.5.4-SNAPSHOT.war表示打包成功,这个文件得放在Tomcat下才能运行。

这里我已上传这个war包,**下载地址:**http://download.csdn.net/detail/evankaka/9054273

1.2、dubbo-admin安装

dubbo-admin已打包成功,接下来就容易很多了

1. 安装
将 dubbo-admin-2.5.4-SNAPSHOT.war 拷入 tomcat webapps中
2. 配置
修改tomcat的端口8088,修改方法如下,打到conf下的文件 server.xml,因为zookeeper会用到8080的端口,所以为了不冲突,把Tomcat的端口改一下。记得一定要改!!!

然后修改

3、启动一下Tomcat,让它把war解压了

过程如下

然后启动

发现webapp下多了一个文件夹

再把 Tomcat给关了,直接stop,上面的按钮

4、修改dubbo.properties

D:JavaToolapache-tomcat-7.0.62webappsdubbo-admin-2.5.4-SNAPSHOTWEB-INF

是否是如下内容:

[html] view plain copy

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

如果是,就不用改,这里的127.0.0.1对应的是自己的电脑IP,因为这里zookeeper也在自己电脑上,所以要这么写才行。一般情况下都是不需要改的,因为初始都是本地的IP地址。但还是看看比较安全

5. 访问:

这下全部都配置好了,首先,一定要先启动zookeeper启动后再去启动tomcat!一定要先启动zookeeper启动后再去启动tomcat!一定要先启动zookeeper启动后再去启动tomcat!重要的事情三遍!

启动zookeeper

启动tomcat

访问http://localhost:8088/dubbo-admin-2.5.4-SNAPSHOT/ 一定要注意名一定要和你webapp下的工程名一样!!

弹出如下:

输入用户名和密码都是root

就会看到:

出现以下界面说明安装配置成功,登录密码为root/root

这下子就大功告成了,可以开始来使用了~~~~~~~~

转载于:http://blog.csdn.net/tjeagle/article/details/50021151

注:

实际操作中,dubbo-admin部署到tomcat报错了

解决方法:

原来是我用的jdk版本太高,jdk8, dubbo默认用的spring版本比较旧,冲突导致,作如下修改即可

ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uriBrokerService': Cannot create inner bean '(inner bean)' of type [com.alibaba.citrus.service.uribroker.impl.URIBrokerServiceImpl$URIBrokerInfo] while setting bean property 'brokers' with key [0]; nested excepti
on is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#25': Cannot create inner bean 'server' of type [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker] while setting constructor argument; nested exception is org.springframework.beans.fact
ory.BeanCreationException: Error creating bean with name 'server': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType'
is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:230)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:287)

1、webx的依赖改为3.1.6版;

    <dependency>
        <groupId>com.alibaba.citrus</groupId>
        <artifactId>citrus-webx-all</artifactId>
        <version>3.1.6</version>
    </dependency>

2、添加velocity的依赖,我用了1.7;

    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
    </dependency>

3、对依赖项dubbo添加exclusion,避免引入旧spring

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>${project.parent.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

4、webx已有spring 3以上的依赖,因此注释掉dubbo-admin里面的spring依赖

    <!--<dependency>-->
        <!--<groupId>org.springframework</groupId>-->
        <!--<artifactId>spring</artifactId>-->
    <!--</dependency>-->

重新编译dubbo放tomcat运行,成功启动!

相关文章:

  • ESP8266-Arduino编程实例-QRE1113红外反射传感器
  • 【Django】REST_Framework框架——Mixin类和GenericAPIView中的视图子类源码解析
  • Springboot、Tomcat启动加载外部指定文件夹下的jar文件
  • MySQL教程 - 索引(Index)
  • 神经网络做预测的原理,神经网络预测空气质量
  • java代码审计的点
  • alsa-lib和alsa-utils移植
  • SAP 电商云 Spartacus 服务器端渲染的单步调试详细步骤
  • 尚硅谷Vue系列教程学习笔记(12)
  • Flutter 高级教程之如何开发iOS Widget小组件展示SQLite本地数据库数据(教程含完整源码)
  • 5大指标:评估RPA项目的ROI,实现投资回报最大化
  • 神经网络模型的基本原理,神经网络模型是干嘛的
  • 猿创征文|【vue3学习】vue3中实现深拷贝
  • TiUP 镜像参考指南
  • 鹏城AI靶场助力大规模高质量中文语料数据集安全开放
  • 0x05 Python数据分析,Anaconda八斩刀
  • Angular 响应式表单之下拉框
  • axios 和 cookie 的那些事
  • HashMap ConcurrentHashMap
  • Java编程基础24——递归练习
  • laravel5.5 视图共享数据
  • nodejs实现webservice问题总结
  • Promise面试题2实现异步串行执行
  • vagrant 添加本地 box 安装 laravel homestead
  • 初探 Vue 生命周期和钩子函数
  • 浮动相关
  • 记录一下第一次使用npm
  • 经典排序算法及其 Java 实现
  • 聊聊flink的TableFactory
  • 配置 PM2 实现代码自动发布
  • 使用Swoole加速Laravel(正式环境中)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 通过几道题目学习二叉搜索树
  • 微信开源mars源码分析1—上层samples分析
  • 06-01 点餐小程序前台界面搭建
  • ​Java并发新构件之Exchanger
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • (04)odoo视图操作
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (搬运以学习)flask 上下文的实现
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • .net web项目 调用webService
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net(C#)中String.Format如何使用
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net2005怎么读string形的xml,不是xml文件。
  • @Mapper作用
  • @TableLogic注解说明,以及对增删改查的影响
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [.NET 即时通信SignalR] 认识SignalR (一)