• dubbo zookeerper


    现在的公司接口调用是通过dubbo来实现的,所以这两天就了解了一下dubbo是如何进行通信的,写了一个最简单的例子。自上得来终觉浅,绝知此事要躬行。

    前言.dubbo介绍

    Dubbo是一个分布式服务框架,Dubbo的架构如图所示:

    节点角色说明:

    Provider:暴露服务的服务提供方。

    Consumer:调用远程服务的服务消费方。

    Registry:服务注册与发现的注册中心。

    Monitor:统计服务的调用次调和调用时间的监控中心。

    Container:服务运行容器。

    调用关系说明:

    0.服务容器负责启动,加载,运行服务提供者。

    1.服务提供者在启动时,向注册中心注册自己提供的服务。

    2.服务消费者在启动时,向注册中心订阅自己所需的服务。

    3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

    一.项目构图和进入jar包

    下面的图片是我写dubbo消费者和服务者工程以及两个工程需要引入的jar包,这个jar包中有可能是没有用的,我是直接引入的,很容易少包,你如果能用maven来引包的话可能会更好。

    上面右边的图是两个工程需要引入的jar包,其中做出标记的“dubboProductor.jar”是服务者工程中提供服务的接口打的jar包,这个jar包要在消费者工程中被引入

    二.提供服务的服务者工程

    服务者配置文件ApplicationContextProducror.xml

    [html]view plaincopy

    1. xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
    2. xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”
    3. xsi:schemaLocation="http://www.springframework.org/schema/beans
    4. http://www.springframework.org/schema/beans/spring-beans.xsd
    5. http://code.alibabatech.com/schema/dubbo
    6. http://code.alibabatech.com/schema/dubbo/dubbo.xsd
    7. ">
    8. dubbo:applicationname=“productor”/
    9. dubbo:registryprotocol="zookeeper"address=“zookeeper://127.0.0.1:2181”/
    10. dubbo:protocolname="dubbo"port=“20880”/
    11. dubbo:serviceref="bubboProdutor"interface=“com.dubbo.service.DubboProductorTest”

    提供服务的服务接口DubboProductorTest

    [java]view plaincopy

    1. packagecom.dubbo.service;

    2. publicinterfaceDubboProductorTest{

    3. publicvoidsayHello();

    4. }

    服务接口的具体实现类DubboProductorTestImpl

    [java]view plaincopy

    1. packagecom.dubbo.service.impl;

    2. importcom.dubbo.service.DubboProductorTest;

    3. publicclassDubboProductorTestImplimplementsDubboProductorTest{

    4. publicvoidsayHello(){

    5. System.out.println(“这是我的第一个dubbo测试”);

    6. }

    7. }

    始终将dubbo服务保持开启状态

    [java]view plaincopy

    1. packagecom.dubbo.main;

    2. importjava.text.SimpleDateFormat;

    3. importjava.util.Date;

    4. importorg.springframework.context.support.ClassPathXmlApplicationContext;

    5. publicclassDubboProductorMain{

    6. publicstaticvoidmain(String[]args)throwsException{

    7. ClassPathXmlApplicationContextcfg=newClassPathXmlApplicationContext(“com/dubbo/config/ApplicationContextProducror.xml”);

    8. cfg.start();

    9. SimpleDateFormatsdf=newSimpleDateFormat(“yyyy-MM-ddHH:mm:ss”);

    10. Datedate=newDate();

    11. System.out.println(“按任意键退出,时间:”+sdf.format(date));

    12. //保证服务始终开启

    13. System.in.read();

    14. }

    15. }

    三.消费者工程

    消费者服务工程ApplicationContextCustomer.xml

    [html]view plaincopy

    1. xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

    2. xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”

    3. xsi:schemaLocation="http://www.springframework.org/schema/beans

    4. http://www.springframework.org/schema/beans/spring-beans.xsd

    5. http://code.alibabatech.com/schema/dubbo

    6. http://code.alibabatech.com/schema/dubbo/dubbo.xsd

    7. ">

    8. dubbo:applicationname=“customer”/

    9. dubbo:registryprotocol="zookeeoer"address=“zookeeper://127.0.0.1:2181”/

    10. dubbo:referenceid="dubboProvider"interface=“com.dubbo.service.DubboProductorTest”/

    消费者测试类CustomerMain**[java]**view plaincopy

    1. packagecom.dubbo.main;

    2. importorg.springframework.context.support.ClassPathXmlApplicationContext;

    3. importcom.dubbo.service.DubboProductorTest;

    4. publicclassCustomerMain{

    5. publicstaticvoidmain(String[]args)throwsInterruptedException{

    6. ClassPathXmlApplicationContextcfig=newClassPathXmlApplicationContext(“com/dubbo/config/ApplicationContextCustomer.xml”);

    7. DubboProductorTesttest=(DubboProductorTest)cfig.getBean(“dubboProvider”);

    8. System.out.println(“消费者调用服务方接口开始”);

    9. test.sayHello();

    10. Thread.sleep(100000);

    11. System.out.println(“消费者调用服务方接口结束”);

    12. }

    13. }

    四.输出结果

    1.启动zookeeper,启动zookeeper就是点击你zookeeper安装文件中bin文件下的zkServer.cmd文件,注意你一定要先启动zookeeper服务

    2.启动服务者和消费者工程,输出结果:

    第二句话“这是我的第一个dubbo测试”是在启动消费者工程的时候才打印出来的。

    我们在用zookeeper管理后台看一下在zookeeper中注册的服务者和消费者,zookeeper管理后台是通过解压dubbo-admin-2.5.4-SNAPSHOT.war,将解压获得文件放入到tomcat中的webapps文件夹下的root文件夹中的,你最好是复制一个tomcat,并改变tomcat中server.xml文件中所有的端口号,启动tomcat,我的端口号是8000,所以输入:

    http://127.0.0.1:8000就进入到zookeeper管理后台的登录页面了。

    可以看到上面有一个消费者和一个服务者,他们名称正是在配置文件中给消费者和服务者所命名的。

  • 相关阅读:
    awk的简单使用
    中小企业怎么去挑选ERP系统?
    激励合作伙伴的8个想法
    习题:选择结构(二)
    Hudi源码|bootstrap源码分析总结(写Hudi)
    @Override 的作用
    Windows cmd 命令
    Prometheus构建及Grafana操作展示
    搜索框的测试
    虹科分享 | 软件供应链攻击如何工作?如何评估软件供应链安全?
  • 原文地址:https://blog.csdn.net/m0_67390963/article/details/126327749