zoukankan      html  css  js  c++  java
  • dubbo搭建例子

    现在很多公司用到dubbo,使用起来是很快就学会了。真的要熟悉它还是要花点功夫的。

    前面尝试看了些它的源码,这里为了调试源码,先打搭一个能跑的项目,顺别分享出来,以便刚像学习的朋友节约时间,毕竟时间至关重要。

    dubbo说白了,就是个远程调用的解决方案。首先我觉得应该清晰的知道,玩这个dubbo,只需要起一个提供方,调用方,然后一个zk即可。其他杂七杂八的不要去管。翻阅了一些其他博客,都比较杂乱,把事情弄复杂了。这也是写下来的原因。dubbo文档:http://dubbo.io
    以下内容非常简单,除了dubbo的知识还涉及的内容有:maven,zookeeper,spring
     
    我们应该先准备好zookeeper,到官网下一个在本地启动起来,在conf文件里复制zoo_sample.cfg 出zoo.cfg,修改一下端口。
    启动命令:sh zkServer.sh start
    进入命令模式:sh zkCli.sh -server 127.0.0.1:2181
    进入后可以通过ls / 命令查看节点情况。
    下面是当我启动好customer后,我在zk上看到的效果:
     
     
    注意:这里不推荐搞界面查zk的东西,浪费时间而且无用。直接到官网上看zk的命令,顺别也可以学习下zk的一些基础知识。
     
    项目讲解:
    把dubbo引进来,一般在实际开发中都是自己在dubbo源码的基础上改造后成为可用的一个组件,提供给上层开发者。比如dubbox。
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.5.3</version>
      <exclusions>
        <exclusion>
          <artifactId>spring</artifactId>
          <groupId>org.springframework</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    这是一个老妈叫儿子出去买吃的的故事。
    建一个接口:
    public interface BuyFoodService {
        String doBuy();
    }
     作为提供方应该实现它:
    public class BuyFoodServiceimpl implements BuyFoodService {
        public String doBuy() {
            System.out.println("mon whant me to buy food");
            return "ok";
        }
    }

    提供方的配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <bean id="buyFoodService" class="com.test.dubbo.service.BuyFoodServiceimpl"></bean>
    
        <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
    
        <dubbo:protocol accesslog="true" name="dubbo" port="20880" />
    
        <dubbo:application name="son"/>
    
        <dubbo:service interface="com.test.dubbo.service.BuyFoodService" ref="buyFoodService"/>
    
    </beans>

    以上提供方就可以启动将自己的信息注册到zk上了。在zk上可以看到一个叫dubbo的节点,节点里面有个buyFoodService。

    调用方的配置类似:
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />
    
        <dubbo:protocol accesslog="true" name="dubbo" port="20880" />
    
        <dubbo:application name="mon"/>
    
        <dubbo:reference id="buyFoodService" interface="com.test.dubbo.service.BuyFoodService"/>
    
    </beans>
    调用代码,妈妈发起让儿子去买食物的请求:
     
    public class Customer {
        public static void main(String[] args) {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                    "classpath*:spring/provider/applicationContext.xml");
            BuyFoodService buyFoodService = (BuyFoodService) context.getBean("buyFoodService");
            System.out.println(buyFoodService.doBuy());
        }
    }
    过程中遇到
    报错:
    java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exception/ZkNoNodeException
    解决办法,需要依赖:
    <dependency>
      <groupId>com.101tec</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.10</version>
    </dependency>
    最后,当然把调好的项目共享出来:点我 然后开启你的dubbo之旅吧!
  • 相关阅读:
    Python3+Selenium3+webdriver学习笔记5(模拟常用键盘和鼠标事件)
    安装python3后,没有Scripts目录的解决办法
    Selenium3+webdriver学习笔记4(css方式元素定位)
    Selenium3+webdriver学习笔记3(xpath方式元素定位)
    Selenium3+webdriver学习笔记2(常用元素定位方式,定位单个元素共8种,总共有23种)
    selenium3+webdriver学习笔记1(访问常用请求)
    LR使用流程简介之调试脚本(运行设置、编写说明)
    LR创建脚本和场景流程
    LR脚本示例之常用函数
    LR使用流程简介之录制方式说明
  • 原文地址:https://www.cnblogs.com/killbug/p/7246819.html
Copyright © 2011-2022 走看看