Dubbo学习(二)服务注册

上篇说了一下Dubbo的大体架构以及主要组件。
这篇说一下如何将服务发布到注册中心

  1. 开发背景
    jdk1.8
    dubbo2.5.3
    zookeeper2.4.6
  2. zookeeper安装
    zookeeper安装方式自行百度即可
  3. 服务注册
    项目结构
    这里写图片描述
    pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.levin.dubbo.server</groupId>
    <artifactId>dubbo-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>dubbo-server</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.18.1-GA</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>jms</artifactId>
                    <groupId>javax.jms</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>mail</artifactId>
                    <groupId>javax.mail</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
    </dependencies>
</project>

Provider.java

package com.levin.dubbo.server;
/**
 * 
 * 
 *          __     __       
 *         /  \~~~/  \    
 *   ,----(     ..    ) 
 *  /      \__     __/   
 * /|         (\  |(
 *^ \   /___\  /\ |   
 *   |__|   |__|-" 
 *
 *@Description: TODO
 *@author Levin    
 *@since JDK 1.7
 *@date 2017年4月15日 下午4:03:09
 */
public interface Provider {
    /**
     * 需要发布的方法
     * @Title: sayHello
     * @return
     * @author Levin
     */
    String sayHello();
}

ProviderImpl.java

package com.levin.dubbo.server.impl;

import com.levin.dubbo.server.Provider;

public class ProviderImpl implements Provider {

    public String sayHello() {
        return "The first Dubbo Service";
    }

}

DubboServiceMain.java

package com.levin.dubbo.server.main;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DubboServiceMain {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationProvider.xml"});
        context.start();
        System.out.println("按任意键退出.....");
        System.in.read();
    }
}

applicationProvider.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="dubbo-server" />
    <!-- 注册地址 -->
    <dubbo:registry address="zookeeper://192.168.1.201:2181" />
    <!-- 接口的位置 -->
    <!-- 
        executes:服务提供者每服务每方法最大可并行执行请求数 default/0
        group:服务分组,当一个接口有多个实现,可以用分组区分
        path:服务路径 (注意:1.0不支持自定义路径,总是使用接口名,如果有1.0调2.0,配置服务路径可能不兼容)
        delay:延迟注册服务时间(毫秒) ,设为-1时,表示延迟到Spring容器初始化完成时暴露服务  default/0
        timeout:远程服务调用超时时间(毫秒)  default/1000 
        retries:远程服务调用重试次数,不包括第一次调用,不需要重试请设为0  default/2
        connections:对每个提供者的最大连接数,rmi、http、hessian等短连接协议表示限制连接数,dubbo等长连接协表示建立的长连接个数     defualt/100
        loadbalance:负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用    default/random
        async:是否缺省异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程    default/false
        token:令牌验证,为空表示不开启,如果为true,表示随机生成动态令牌,否则使用静态令牌,令牌的作用是防止消费者绕过注册中心直接访问,保证注册中心的授权功能有效,如果使用点对点调用,需关闭令牌功能

     -->
    <dubbo:service interface="com.levin.dubbo.server.Provider"
        ref="providerImpl" executes="10" />
    <!-- 实现bean,客户端应用的bean就以这个id名称为主 -->
    <bean id="providerImpl" class="com.levin.dubbo.server.impl.ProviderImpl" />
</beans>  

编写完后运行DubboServiceMain中的main方法,运行后会按照xml中的配置将之前的Provider 接口发布到注册中心.
检查方法如下
使用zkCli命令连接zookeeper

sh zkCli.sh

进入zkClient控制台,发现根目录下是否产生dubbo目录,并且是否有刚刚发布的接口

ls /dubbo/com.levin.dubbo.server.Provider

如果存在那么,则说明服务已经发布到注册中心,下篇我们就来说说如何使用Consumer发现注册中心的服务,并且调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值