springboot集成dubbo、zookeeper

代码地址:
spirngboot_dubbo_base:https://github.com/kevindai007/springboot_dubbo_base
spirngboot_dubbo_server:https://github.com/kevindai007/springboot_dubbo_Server
spirngboot_dubbo_consumer:https://github.com/kevindai007/springboot_dubbo_Consumer

前段时间在springboot中继承了dubbo、zookeeper,期间遇到了不少坑,下面一起来看看怎么集成,怎么避免坑

  1. 首先简单介绍一下dubbo,dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案;zookeeper是dubbo推荐的注册中心(这两个在此不做展开讲解,有兴趣的朋友可以自己了解一下)
  2. 安装zookeeper:从官网上下载zookeeper的安装包:http://mirror.bit.edu.cn/apache/zookeeper/;下载后放到Linux服务器上,然后进入conf文件夹,复制zoo_sample.cfg文件命名为zoo.cfg,然后到bin文件夹输入命令zkServer.sh start启动zookeeper,如图
    springboot集成dubbo、zookeeper_第1张图片
  3. 新建dubbo_base工程(dubbo_base工程主要是为了给dubbo_consumer、dubbo_seerver提供依赖),免得写重复代码;新建一个工程,如下图
    springboot集成dubbo、zookeeper_第2张图片
    工程很简单,只定义了一个MsgService的接口,然后把工程打成jar包以提供给其他工程依赖

    注意这里可能会产生第一个坑:自己的工程打成的jar包如何被其他maven工程依赖?
    拿我这个工程举例,当我打好jar包之后,找到maven仓库地址
    springboot集成dubbo、zookeeper_第3张图片
    然后在maven仓库中,按照工程的groupId、artifactId、version新建路径存放jar包,如下图
    springboot集成dubbo、zookeeper_第4张图片
    springboot集成dubbo、zookeeper_第5张图片

  4. 新建springboot_dubbo_server工程,工程结构如下
    springboot集成dubbo、zookeeper_第6张图片
    其中DubboServerApplication.java为springboot的启动类,MsgServiceImpl为服务的实现类,application.properties为springboot的配置文件,dubbo-server.xml为dubbo的配置文件
    dubbo-server.xml如下(这里列出主要配置,详细的见github工程):

        
    <dubbo:application name="dubboServer">dubbo:application>
    <dubbo:annotation package="com.kevindai.*" />
    
    <dubbo:registry address="zookeeper://192.168.17.107:2181" check="false" subscribe="false" register="">dubbo:registry>
    
    <dubbo:service interface="com.kevindai.service.MsgService" ref="msgService" />  

    pom文件在此不列出,可参考github上的内容


    这里又会有几个坑:

    • dubbo与springboot的spring冲突,因此需要移除dubbo中的spring引用,代码如下
    <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>dubboartifactId>
            <version>2.5.3version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframeworkgroupId>
                    <artifactId>springartifactId>
                exclusion>
            exclusions>
    dependency>
    • zookeeper与springboot的日志文件冲突,需要移除zookeeper的日志引用
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.4.6version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4jgroupId>
                    <artifactId>slf4j-log4j12artifactId>
                exclusion>
                <exclusion>
                    <groupId>log4jgroupId>
                    <artifactId>log4jartifactId>
                exclusion>
            exclusions>
        dependency>
    • zk客户端依赖问题
    
        
        
            
            
            
        
        <dependency>
            <groupId>com.github.sgroschupfgroupId>
            <artifactId>zkclientartifactId>
            <version>0.1version>
        dependency>

  5. 新建springboot_dubbo_consumer工程
    springboot集成dubbo、zookeeper_第7张图片

    dubbo-consumer.xml主要配置如下

        <dubbo:annotation package="com.kevindai.*" />
    
    <dubbo:application name="dubboConsumer">dubbo:application>
    
    <dubbo:registry address="zookeeper://192.168.17.107:2181" check="false">dubbo:registry>
    
    <dubbo:reference interface="com.kevindai.service.MsgService" id="msgService">dubbo:reference>

    在使用时,直接使用即可(能够使用MsgService是因为依赖了springboot_dubbo_base,能够注入成功则要感谢dubbo),
    springboot集成dubbo、zookeeper_第8张图片

到这里已经完成了,网上搜了搜好像还没有这么通俗详细的文章,自己也踩了不少坑,特此记录下来,希望能帮助各位同学

你可能感兴趣的:(个人笔记)