dubbo示例

时间:2015-03-30 17:56:31   收藏:0   阅读:392

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

我也不明白这是什么意思,使用了之后大概就是提供一个将多个项目进行联合的一种分布式,使用的是一种长链接的方法,具体没有深入研究,只是试用了一下。

 

其核心部分包含:

Dubbo能做什么?

另外dubbo进行了与spring的完全融合,所以可以直接通过spring的xml文件进行配置,至于怎么与spring-boot整合,还不知道。

 

上实现:

1.首先需要一个zookeeper;具体用法请百度。

 

2.启动zookeeper,以这个服务作为注册中心

 

3.生产者,首先引入zookeeper的jar

<!-- zookeeper -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
            <scope>provided</scope>
        </dependency>
        
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <artifactId>jmxtools</artifactId>
                    <groupId>com.sun.jdmk</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jmxri</artifactId>
                    <groupId>com.sun.jmx</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jms</artifactId>
                    <groupId>javax.jms</groupId>
                </exclusion>
            </exclusions>
        </dependency>

然后是dubbo

    <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.4.9</version>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

别忘了还有spring的,这里就不贴了

3.1:

      首先定义一个接口,用来发布的:

public interface ProvideService {

    public String sayHello(String name);
}

进行实现:

@Service(value = "provideService")
public class ProvideServiceImpl implements ProvideService {

    public String sayHello(String name){
        System.out.println ("ProvideServiceImpl  sayHello 走到了");
        return name + " say Hello";
    }

}

然后是最关键的spring 配置dubbo

applicationContext.xml

    <!-- 启动spring注解扫描 -->
    <context:annotation-config /> 

    <context:component-scan base-package="com.dubbo.*" />

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="lclc_provider" />


    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" /> 

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.dubbo.ProvideService"
        ref="provideService" />

启动spring即可

 public static void main(String[] args){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext ("applicationContext.xml");
        context.start ();
        try {
            System.in.read ();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace ();
        }// 按任意键退出
    }

4.然后是消费者

引入的jar包与生产者一样,但是需要多加一个,即生产者方提供的接口,因为是通过接口进行代理的

4.1:消费

  public static void main(String[] args){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext ("applicationContext.xml");

        context.start ();

        ProvideService demoService = (ProvideService) context.getBean ("ProvideService");// 获取远程服务代理

        String hello = demoService.sayHello ("lclc");// 执行远程方法

        System.err.println (hello);// 显示调用结果
    }

application.xml

<!-- 启动spring注解扫描 -->
    <context:annotation-config /> 

    <context:component-scan base-package="com.dubbo.*" />

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="lclc_consumer" />

    <!-- 使用zookeeper注册中心暴露服务地址 -->
     <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <dubbo:reference id="ProvideService"  interface="com.dubbo.ProvideService" />

 

请注意:生产者与消费者是两个项目,是部署在两个服务器上的,通过dubbo进行链接起来,消费者调用生产者的接口就像调用本地一样。

 

原文:http://www.cnblogs.com/lic309/p/4378426.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!