• dubbo安装跟部署


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

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

    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,从OracleJava网站下载,安装很简单,就不再详述。其中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. dataDir=D:\Java\Tool\zookeeper-3.4.6\tmp

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

    [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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1、webx的依赖改为3.1.6版;

        
            com.alibaba.citrus
            citrus-webx-all
            3.1.6
        
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

        
            org.apache.velocity
            velocity
            1.7
        
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

        
            com.alibaba
            dubbo
            ${project.parent.version}
            
                
                    org.springframework
                    spring
                
            
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

        
            
            
        
    
    • 1
    • 2
    • 3
    • 4

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

  • 相关阅读:
    spring boot项目运行及打包
    Git入门
    正则表达式基本概念及常用匹配模式代码
    怎么统计 20 亿用户的登录状态 | bitmap
    关联性——相关性分析
    136.如何进行离线计算-2
    SSM+医院移动收费运维平台 毕业设计-附源码161045
    栈题目:有效括号的嵌套深度
    Python语言学习实战-内置函数property()的使用(附源码和实现效果)
    深圳唯创知音电子将参加IOTE 2023第二十届国际物联网展•深圳站
  • 原文地址:https://blog.csdn.net/m0_67403240/article/details/126655185