dubbo+zookeeper初体验

Posted 客技院

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo+zookeeper初体验相关的知识,希望对你有一定的参考价值。

小P经过千辛万苦,终于拿到了心仪的offer,

今天是入职的第一天...

非常高兴的拿到项目,一阵操作猛如虎,回头一看0-5

分布式...?

zookeeper...?

dubbo...?

服务治理...?

负载均衡...?



什么是zookeeper。。。动物园管理员?



那dubbo又是干啥的?


dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成
    - 高性能和透明化的RPC远程服务调用方案
    - SOA服务治理方案
    - 基于TCP长连接Reactor模型通信框架
主要核心组件:  
    - Provider:暴露服务的服务提供方
    - Consumer:调用远程服务的服务消费方
    - Registry:服务注册与发现中心
    - Monitor:服务的调用次数和调用时间的监控中心
    - Container:服务运行容器


安装zookeeper

dubbo+zookeeper初体验


配置dubbo管理控制台

dubbo+zookeeper初体验


创建maven项目

项目结构:  coustomer: 调用远程服务;   interface: 存放公共接口;   provider : 提供远程服务。  

创建公共接口maven工程:interface


package com.alibaba.dubbo.demo;

public interface DemoService {

    String sayHello(String name);

}



创建服务提供maven工程:provider 
实现公共接口:


package com.alibaba.dubbo.demo.provider;

import com.alibaba.dubbo.demo.DemoService;

public class DemoServiceImpl implements DemoService {

    public String sayHello(String name) {

        return "hello--"+name;

    }

}



添加spring配置声明文件:applicationContext.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="app-provider"  />

 

    <dubbo:registry address="zookeeper://127.0.0.1:2181" /> 

 

    <!-- 用dubbo协议在20880端口暴露服务 -->

    <dubbo:protocol name="dubbo" port="20880" />

 

    <!-- 声明需要暴露的服务接口 -->

    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" />

 

    <!-- 和本地bean一样实现服务 -->

    <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" />

 

</beans>



启动远程服务类:AppProvider.java


public class AppProvider 

{

    @SuppressWarnings("resource")

    public static void main( String[] args ) throws IOException

    {

        System.out.println( "dubbo provider start!" );

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  

        context.start();  

        System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟

    }

}




观察dubbo管理控制台,提供者栏会出现一个服务信息,如下:

dubbo+zookeeper初体验



创建服务消费maven工程:coustomer

添加spring配置声明文件:applicationContext.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="app-customer"  />


    <dubbo:registry address="zookeeper://127.0.0.1:2181" /> 


    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->

    <dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" />


</beans>




创建App.java类,启动AppCoustomer.java类,调用远程服务


public class AppCoustomer {

    @SuppressWarnings("resource")

    public static void main(String[] args) throws IOException {

        System.out.println("dubbo costomer start!");


        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        context.start();


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

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


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


        // 只有开着消费者,才能在控制台看到。为保证服务一直开着,利用输入流的阻塞来模拟

        // System.in.read();

    }

}




控制台输出结果为:


dubbo管理控制台,会出现消费者信息:


转眼间,已是夜深人静,,,
充实忙碌的一天就这样过去。
路灯下,小P骑着小蓝,来一场回家的速度与激情。。。

以上是关于dubbo+zookeeper初体验的主要内容,如果未能解决你的问题,请参考以下文章

ZooKeeper 初体验

dubbo go 初体验

JAVA 连接 ZooKeeper之初体验

Zookeeper 初体验之——伪分布式安装(转)

kafka-zk-安装测试初体验

微服务初体验(二):使用Nacos作为配置中心并集成Dubbo