关于Dubbo以及zookeeper的介绍和使用教程

关于Dubbo以及zookeeper的介绍和使用教程

Dubbo百度百科

Dubbo(读音[ˈdubəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1] Spring框架无缝集成。

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现

在这里插入图片描述
背景和用法

背景

随着Internet的快速发展,Web应用程序的规模不断扩大,最后我们发现传统的垂直体系结构(单片式)已无法解决。分布式服务体系结构和流计算体系结构势在必行,迫切需要一个治理系统来确保体系结构的有序发展,就如我们常用来表述的电商,当某一时刻就可能有几万条数据,此时显然一般的单个整体架构就不够了
在这里插入图片描述
要求
当服务越来越多的时候,配置服务会变得越来越难,硬件的平衡器的节点压力也会增加,此时就需要使用负载均衡来控制其框架之间的相关之间的关系,流量变得越来越大,服务的内容就会被暴露出来,所以我们需要来做出需要的改变
在这里插入图片描述
用法
在这里插入图片描述
provider:暴露服务的服务提供方
consumer:调用远程服务的服务消费方
registry:注册服务与发现的注册中心
moniter:统计服务的调用次数和调用服务的监控中心
container:服务运行容器

zookeeper

Zookeeper是apache hadoop的子项目。由于它提供树状目录服务并支持更改通知,因此适合将其用作dubbo的注册表服务器。它是经过现场验证的产品,因此建议在生产环境中使用它
在这里插入图片描述
Dubbo使用教程

1.导入相对应的坐标(jar)

<!-- dubbo相关 -->
        <!--引入dubbo的依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.4</version>
        </dependency>
        <!--注册中心是zookeeper,引入操作zookerper的客服端-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>

2.配置其相关的注册的信息

<?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:context="http://www.springframework.org/schema/context"
       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
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <!--上面的是配置服务中心到指定的位置-->
    <!--1.声明应用名称(同样的服务名字相同,不要和别的名字相同)-->
    <dubbo:application name="dubboprovider"/>
    <!-- 2.配置注册中心(指定注册中心的位置)-->
    <dubbo:registry address="zookeeper://192.168.220.130:2181"/>

    <!--3.配置通信的规则<dubbo:protocal name="dubbo" prot="20880">此处省略了  -->

    <!--4.暴露服务<dubbo:service interface="" ref="" 这个ref表达的是真正的实现对象-->

    <!-- 声明发布到dubbo内容-->
    <!--实际上发布的是该包下的带有@Service注解的实现类,框架自动扫描该包下所有子包(声明需要暴露的服务端口)-->
    <dubbo:annotation package="com.offcn.service"/>

</beans>

3.分别定义接口和实现类

package com.offcn.service;

/**
 *
 * @author liugang
 * @version 1.0
 * @date 2019/11/10
 */
public interface UserService {
    String getName();
}

package com.offcn.service.imp;

import com.alibaba.dubbo.config.annotation.Service;
import com.offcn.service.UserService;

/**
 * TODO 注意:@Service的包信息,必须引用com.alibaba.dubbo.config.annotation.Service
 * @author liugang
 * @version 1.0
 * @date 2019/11/10
 * {@link com.offcn.service.UserService}
 * @see <a href="http://dubbo.io/">dubbo</>
 *
 * 1.让服务提供者 注册 到注册中心(暴露服务)
 *     1.1导入dubbo的依赖 操作zookerper的客服端
 *     1.2.配置服务提供者
 * 2.让服务消费者去注册中心 订阅 服务提供者的服务地址
 */
@Service
public class UserServiceImpl implements UserService {

    @Override
    public String getName() {
        return "中公优就业";
    }
}

5.服务者也是这样的玩法,这里就不在多介绍了,这里主要说下服务端也要引用其相关的接口的思想,实现其相互调用的特点
在这里插入图片描述

Dubbo运行结果
在这里插入图片描述

在这里插入图片描述

发布了63 篇原创文章 · 获赞 54 · 访问量 9131

猜你喜欢

转载自blog.csdn.net/loveyouyuan/article/details/103112581