• dubbo注册到zookeeper


     zk注册中心安装,参见dubbo官网:http://dubbo.apache.org/books/dubbo-admin-book/install/zookeeper.html

    provider.xml

    <?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-3.1.xsd
            http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
        <dubbo:application name="demo-provider"/>
        <!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
        <dubbo:protocol name="dubbo" port="20880" threads="205" threadpool="limited"/>
    <dubbo:service protocol="dubbo" interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" timeout="20000"/> <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/> </beans>

    Provider程序:

    public class Provider {
    
        public static void main(String[] args) throws Exception {
            ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("spring/dubbo-demo-provider.xml");
            context.start();
            System.out.println("started...");
            System.in.read();
        }
    }

    这时执行程序会有如下异常:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
    	at com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter.connect(CuratorZookeeperTransporter.java:26)
    	at com.alibaba.dubbo.remoting.zookeeper.ZookeeperTransporter$Adaptive.connect(ZookeeperTransporter$Adaptive.java)
    	at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.<init>(ZookeeperRegistry.java:69)
    	at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistryFactory.createRegistry(ZookeeperRegistryFactory.java:37)
    	at com.alibaba.dubbo.registry.support.AbstractRegistryFactory.getRegistry(AbstractRegistryFactory.java:95)
    	at com.alibaba.dubbo.registry.RegistryFactory$Adaptive.getRegistry(RegistryFactory$Adaptive.java)
    	at com.alibaba.dubbo.registry.integration.RegistryProtocol.getRegistry(RegistryProtocol.java:200)
    	at com.alibaba.dubbo.registry.integration.RegistryProtocol.export(RegistryProtocol.java:134)
    	at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.export(ProtocolListenerWrapper.java:54)
    	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.export(ProtocolFilterWrapper.java:91)
    	at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.export(QosProtocolWrapper.java:54)
    	at com.alibaba.dubbo.rpc.Protocol$Adaptive.export(Protocol$Adaptive.java)
    	at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:505)
    	at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:357)
    	at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:316)
    	at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:215)
    	at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:121)
    	at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:50)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
    	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
    	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
    	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
    	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    	at Provider.main(Provider.java:7)
    Caused by: java.lang.ClassNotFoundException: org.apache.curator.RetryPolicy
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    	... 27 more

    上面堆栈里java.lang.NoClassDefFoundError、java.lang.ClassNotFoundException,通常指缺少jar依赖。需增加如下依赖:

            <!-- zookeeper -->
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-framework</artifactId>
                <version>${curator.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-recipes</artifactId>
                <version>${curator.version}</version>
            </dependency>

    jar版本定义:

        <properties>
            <!--<dubbo.version>2.4.11</dubbo.version>-->
            <dubbo.version>2.6.1</dubbo.version>
            <zookeeper.version>3.4.6</zookeeper.version>
            <curator.version>2.8.0</curator.version>
        </properties>

    consumer.xml配置:

    <?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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
        <dubbo:application name="demo-consumer"/>
        <!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
        <dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.SubDemoService" timeout="6000"/>
    </beans>

    同样,consumer端也要依赖以上zookeeper和curator的jar。

    dubbo管理端

    dubbo管理端安装:https://www.cnblogs.com/xhkj/p/7407092.html

    dubbo官网:http://dubbo.apache.org/books/dubbo-admin-book/install/admin-console.html

    DOS下cd命令的使用:

    cmd窗口里。比如要进入目录:D:Javadubboincubator-dubbo-ops-masterdubbo-admin,首先要执行命令cd d: 到D盘根目录,然后cd D:Javadubboincubator-dubbo-ops-masterdubbo-admin,即可进入目标目录。

    ZooKeeper可视化管理工具ZooInspector

    下载:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip 

    解压后,在文件夹下创建run.bat,内容为 java -jar zookeeper-dev-ZooInspector.jar (即,通过java -jar的方式启动程序)

    运行run.bat,可在打开的GUI里,指定zk服务器地址(zookeeper默认端口是2181)

     然后,就可以看到注册的dubbo服务列表,每个服务下显示注册的消费者节点和生产者节点。

    可以删掉某个注册的节点。我们在测试系统时,如果开发环境和测试环境用同一套maven配置,那么,大家的服务会注册到同一个zk上。而在这种情况下,一旦各节点的程序版本不一致,往往就会干扰我们的测试结果。所以,可以通过这个工具来删除某些节点。(当然,隔离开发环境和测试环境的zk是根本解决办法。)

    Zookeeper监控管理工具ZkWeb

    上面的ZooInspector只能管理节点,没有集群状态监控功能。zkWeb就是这么一个强大的工具。以后有时间再做分享吧。

    ref:http://www.cnblogs.com/chanshuyi/p/deep_insight_dubbo_config.html “创建 com.chanshuyi.Launcher.java,用于启动 provider 服务,是启动入口”

     ☞ Stay Hungry,Stay Foolish. 如果对阁下有帮助,就动动手指,点一下“推荐”哟~

  • 相关阅读:
    Django连接MySQL(二)
    Django框架,python2和python3共存的情况下,创建Django项目
    pycharm破解
    dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
    Spring中的事物管理,基于spring的bean的配置
    Spring中的事物管理,用 @Transactional 注解声明式地管理事务
    Ajax中GET和POST的区别
    Spring对 JDBC 的支持,JdbcTemplate类的使用
    Spring AOP:面向切面编程,AspectJ,是基于spring 的xml文件的方法
    Spring AOP:面向切面编程,AspectJ,是基于注解的方法
  • 原文地址:https://www.cnblogs.com/buguge/p/9150341.html
Copyright © 2020-2023  润新知