Dubbo/ZooKeeper入门

Dubbo/ZooKeeper入门

在这里插入图片描述

1.Dubbo的概念与架构

Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架,提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理(SOA)与运维。

在这里插入图片描述

节点角色说明

节点角色说明
Provider(生产者)暴露服务的服务提供方
Consumer(消费者)调用远程服务的服务消费方
Registry服务注册与发现的注册中心
Monitor统计服务的调用次数和调用时间的监控中心
Container服务运行容器

调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

长连接与短连接的区别:1、长连接是client方与server方先建立连接,连接建立后不断开,而短连接的Client方与server每进行一次报文收发交易时才进行通讯连接;2、短连接多用于操作频繁,点对点的通讯,而且长连接数不能太多的情况。

软负载均衡算法:随机均衡算法、权重轮询均衡算法、最少活跃调用数均衡算法、一致性Hash均衡算法。

Dubbo架构的特点:

  • 连通性
  • 健壮性
  • 伸缩性
  • 未来架构的升级性(可扩展性)

2.ZooKeeper的概念

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

3.Dubbo环境搭建

安装ZooKeeper

点击下载ZooKeeper安装包

1.下载

在这里插入图片描述

2.安装并启动

在这里插入图片描述

注意:如果出现端口号被占用的情况,则需要手动在zoo.cfg文件中修改端口号

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

安装Dubbo-Admin

点击下载Dubbo安装包

在这里插入图片描述

解压后在dubbo-admin目录下用cmd命令打war包

在这里插入图片描述

mvn package -Dmaven.skip.test=true

在这里插入图片描述

在这里插入图片描述

将war包部署到IDEA,并启动

在这里插入图片描述

访问dubbo-admin管理控制台页面,初次访问需要登录,账号:root,密码:root

在这里插入图片描述

4.Dubbo的使用

ZooKeeper:服务注册与发现

首先搭建两个SpringBoot项目分别为provider-serverconsumer-server,并导入DubboZooKeeper相关依赖

<!-- 导入依赖:Dubbo、ZooKeeper -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>
        <!-- zkclient -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <!-- 日志会冲突 -->
        <!-- 引入ZooKeeper-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

provider服务

public interface TicketService {
    String getTicket();
}

@DubboService:启动服务后,将服务自动注册到注册中心

@DubboService
@Service
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "第二范式";
    }
}

consumer服务

public interface UserService {
    void getTicketFromProvider();
}

@DubboReference:引用,定义路径相同的接口名

注意:需要在与provider服务同路径下创建并命名相同的接口与方法

public interface TicketService {
    String getTicket();
}
@Service
public class UserServiceImpl implements UserService {
    @DubboReference
    private TicketService ticketService;
    @Override
    public void getTicketFromProvider() {
        System.out.println(ticketService.getTicket());
    }
}

测试

@SpringBootTest
class ConsumerServerApplicationTests {
    @Autowired
    private UserService userService;
    @Test
    void contextLoads() {
        userService.getTicketFromProvider();
    }
}

启动ZooKeeper服务、启动provider服务、启动consumer服务进行测试

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第二范式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值