Java_Dubbo&zookeeper笔记

回顾

1,dubbo概述

dubbo是一个rpc(远程过程调用)框架。

2,入门案例(掌握)

服务提供方

@Service注解进行服务发布,注意service注解是dubbo提供。

<!--dubbo的配置-->
	<!--1.配置项目的名称,唯一-->
	<dubbo:application name="dubbo-service"/>
	<!--2.配置注册中心的地址-->
	<!--
		<dubbo:registry address="zookeeper://192.168.149.135:2181"/>
		协议://ip地址:端口号
	-->
	<dubbo:registry address="zookeeper://localhost:2181"/>
	<!--3.配置dubbo包扫描-->
	<dubbo:annotation package="com.itheima.service.impl" />

服务消费方

进行注入的时候使用@Reference

 <!--dubbo的配置-->
    <!--1.配置项目的名称,唯一-->
    <dubbo:application name="dubbo-web" >
        <dubbo:parameter key="qos.port" value="33333"/>
    </dubbo:application>
    <!--2.配置注册中心的地址-->
<!--    <dubbo:registry address="zookeeper://192.168.149.135:2181"/>-->

    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--3.配置dubbo包扫描-->
    <dubbo:annotation package="com.itheima.controller" />

今日内容

  1. dubbo-admin
  2. 高级特点
  3. zookeeper
    1. 常用的命令
    2. JAVA api操作zookeeper

1,dubbo-admin(掌握)

在这里插入图片描述

在这里插入图片描述

2,序列化(掌握)

以后所有的实体类都需要实现序列化接口。

pojo会拆分出一个单独的工程(ssm_pojo),service工程和controller工程依赖于pojo工程。

3,超时时间设置

提供方和消费方都可以设置,建议设置在提供方

@Reference(timeout = 3000)//远程注入
private UserService userService; //使用的是动态代理的技术



@Service(timeout = 5000)
public class UserServiceImpl implements UserService {

4,多版本使用

  • 定义多个版本

    @Service(version="v1.0")
    
  • 使用指定的版本

    @Reference(version="v1.0")
    

5,负载均衡

在这里插入图片描述

负载均衡的机制:

  • Random : 按照权重随机
  • RoundRobin : 按照权重轮询
  • LeastActive : 最少活跃调用数,相同活跃数的随机。
  • ConsistentHash : 一致性Hash,相同参数的请求总是发到同一提供者。

使用

  • 在服务提供者处定义权重

    @Service(weight = 100)
    public class UserServiceImp1 implements UserService {...}
    
  • 在服务消费者处指定负载均衡机制

    //@Reference(loadbalance = "roundrobin")
    //@Reference(loadbalance = "leastactive")
    //@Reference(loadbalance = "consistenthash")
    @Reference(loadbalance = "random")//默认 按权重随机
    private UserService userService;
    

6,集群容错

7,服务降级

8,zookeeper

zookeeper是hadoop下的子项目。是一个分布式小文件系统。

/ 
	|-- robin(文件夹)
		|-- bbb(文件夹)
			|-- ccc(文件夹)
		|-- a.txt
	|-- aaa(文件夹)

zookeeper特点:

节点: 类似于windows文件和文件夹。

文件夹特点: 管理文件夹。文件夹下可以再创建子文件夹和子文件。

文件特点: 存储数据的。

Zookeeper 是一个分布式的、开源的分布式应用程序的协调服务。

节点分类:

  • 持久节点 PERSISTENT
  • 临时节点 EPHEMERAL
  • 顺序节点 PERSISTENT_SEQUENTIAL
  • 临时顺序节点 EPHEMERAL_SEQUENTIAL

8.1 常用的命令

8.1.1 服务端命令(linux)
先进入都zookeeper安装目录
在bin目录下执行如下命令

./zkServer.sh start|stop|restart|status
8.1.2 客户端命令
  • 连接服务器

    ./zkCli.sh
    
  • 创建节点

    create /节点 数据
    
    create -e /节点 数据   //创建临时节点,会话关系,该节点就会被删除
    create -s /节点 数据   
    
  • 获取节点数据

    get /节点
    
  • 修改节点的数据

    set /节点 数据
    
  • 获取节点的子节点

    ls /节点
    
  • 删除节点

    rmr /节点
    

8.2 javaAPI操作

curator是zookeeper的java客户端库。

8.2.1 引入jar的坐标
  <!--curator-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
        </dependency>
8.2.2 建立连接

目标: 创建客户端对象 CuratorFramework

//重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 10); //每3秒重试一次,总共重试10次
//2.第二种方式
CuratorFramework client = CuratorFrameworkFactory.builder()
    .connectString("127.0.0.1:2181")
    .sessionTimeoutMs(60 * 1000)
    .connectionTimeoutMs(15 * 1000)
    .retryPolicy(retryPolicy)
    .namespace("itheima")
    .build();

//开启连接
client.start();

节点的操作:

client.create().forPath("");
client.getData().forPath("");
client.setData().forPath("");
client.delete().forPath("");
client.getChildren().forPath("");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值