欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Dubbo分布式框架实战

程序员文章站 2022-03-08 21:48:16
Dubbo分布式框架实战Dubbo:2011年阿里巴巴开源的分布式服务框架。三个主要功能:(1)远程接口调用:Dubbo提供了基于高性能接口的RPC,对用户是透明的。(2)负载均衡和容错:Dubbo支持开箱即用的多种负载平衡策略,可感知下游服务状态以减少总体延迟并提高系统吞吐量。(3)服务注册和服务发现:Dubbo支持多个服务注册表,可以立即检测在线/离线服务。Dubbo架构:Provider:暴露服务的服务提供者Consumer:调用远程服务的服务消费者Registry:服务注册与发现...

Dubbo分布式框架实战

Dubbo:2011年阿里巴巴开源的分布式服务框架。
三个主要功能:
(1)远程接口调用:Dubbo提供了基于高性能接口的RPC,对用户是透明的。
(2)负载均衡和容错:Dubbo支持开箱即用的多种负载平衡策略,可感知下游服务状态以减少总体延迟并提高系统吞吐量。
(3)服务注册和服务发现:Dubbo支持多个服务注册表,可以立即检测在线/离线服务。

Dubbo架构:
Dubbo分布式框架实战
Provider:暴露服务的服务提供者
Consumer:调用远程服务的服务消费者
Registry:服务注册与发现的注册中心
Monitor:统计服务的调用次数和调用时间的监控中心
Container:服务运行容器

Dubbo例子(基于maven工程):

1.在根目录下创建3个子包
(1)dubbo-interfacce:通用服务接口
(2)dubbo-provider:依赖dubbo-interface,开发实现类,并且配置spring文件,发布服务
(3)dubbo-consumer:依赖dubbo-interface,配置spring配置文件,调用服务

2.dubbo-provider和dubbo-consumer的pom文件中引入共同依赖:

   <dependencies>
        <dependency>
            <groupId>com.qiuzelin</groupId>
            <artifactId>dubbo-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--引入dubbo依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.8</version>
        </dependency>
        <!-- zookeeper客户端依赖 -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
    </dependencies>

4.dubbo-interface:
创建接口:

package com.qiuzelin.service;

/**
 * Created with IntelliJ IDEA.
 *
 * @Auther: qiuzelin
 * @Date: 2020/09/29/11:02
 * @Description:
 */
public interface IUserService {
    public String hello();
}

5.dubbo-provider配置:
(1)创建interface服务实现类:

package com.qiuzelin.service.impl;

import com.qiuzelin.service.IUserService;

/**
 * Created with IntelliJ IDEA.
 *
 * @Auther: qiuzelin
 * @Date: 2020/09/29/11:07
 * @Description:
 */
public class UserServiceImpl implements IUserService {
    public String hello() {
        return "hello,dubbo!";
    }
}

(2)在resources中创建dubbo-provider.xml配置文件

<!--1.定义应用的名称    -->
    <dubbo:application name="dubbo-provider"/>
<!--2.定义协议端口    -->
    <dubbo:protocol port="28800"/>
<!--3.定义注册中心地址    -->
    <dubbo:registry protocol="zookeeper" address="192.168.157.128:2181"/>
<!--4.定义服务提供者    -->
    <bean id="userService" class="com.qiuzelin.service.impl.UserServiceImpl"/>
    <dubbo:service interface="com.qiuzelin.service.IUserService" ref="userService"/>

(3)创建Provider类(通过启动Spring容器,发布服务):

package com.qiuzelin.service.impl;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 *
 * @Auther: qiuzelin
 * @Date: 2020/09/29/15:19
 * @Description: 启动spring容器,自动发布服务
 */
public class Provider  {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"classpath:dubbo-provider.xml"});
        context.start();
        System.out.println("Provider started!");
        System.in.read(); // 按任意键退出
    }
}

运行Provider类的main方法测试:
Dubbo分布式框架实战

5.dubbo-consumer配置:
(1)在resources中创建dubbo-consumer.xml配置文件:

<!--1.定义应用的名称    -->
    <dubbo:application name="dubbo-consumer"/>
    <!--2.定义注册中心地址    -->
    <dubbo:registry protocol="zookeeper" address="192.168.157.128:2181"/>
    <!--3.引用服务    -->
    <dubbo:reference interface="com.qiuzelin.service.IUserService" id="userService"/>

(2)创建Consumer类,调用远程服务

/**
 * Created with IntelliJ IDEA.
 *
 * @Auther: qiuzelin
 * @Date: 2020/09/29/15:38
 * @Description:
 */
public class Consumer {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"classpath:dubbo-consumer.xml"});
        context.start();
       //获取远程服务
        IUserService userService=context.getBean(IUserService.class);
        System.out.println("获取远程服务端反馈信息"+userService.hello());
    }
}

运行main方法测试:
Dubbo分布式框架实战

注意:在测试Consumer时,Provider进程不能终止,否则会报错。

输入服务器地址与tomcat端口号查看:
Dubbo分布式框架实战
应用进程中存在provider和consumer。

`

本文地址:https://blog.csdn.net/weixin_41570890/article/details/108871861

相关标签: zookeeper java