dubbo 序列化 及 地址缓存、超时、重试

60 篇文章 0 订阅
6 篇文章 0 订阅
本文介绍了Dubbo中的序列化原理,如何通过实现Serializable接口创建可序列化的POJO,并重点讲解了服务调用的地址缓存、超时配置及其重要性。还探讨了超时设置的位置和如何处理服务调用中的阻塞问题。
摘要由CSDN通过智能技术生成

dubbo 序列化

序列化 是将对象 转换为 流的数据

  1. dubbo 内部已经将序列化和反序列化的过程内部封装了
  2. 我们只需要在定义pojo类时实现serializable接口即可
  3. 一般会定义一 个公共的pojo模块,让生产者和消费者都依赖该模块。

在maven 中 模块里的内容有修改的,要重新点击 install 进行安装

dubbo - pojo 实体类模块

这个模块 用来创建实体类对象

public class User implements Serializable {
    private int id;
    private String username;
    private String password;

    public User() {
    }

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

地址缓存

注册中心挂了,服务是否可以正常访问?

  1. 可以,因为dubbo服务消费者在第一-次调用时,会将服务提供方地址缓存到本地,以后在调用则不会访问注册中心。
  2. 当服务提供者地址发生变化时,注册中心会通知服务消费者。

超时

  • 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会直等待下去。
  • 在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩。
  • dubbo利用超时机制来解决这个问题,设置-个超时时间, 在这个时间段内,无法完成服务访问,则自动断开连接。
  • 使用timeout属性配置超时时间,默认值1000,单位毫秒
//timeout 超时时间 单位毫秒  retries 重试次数
@Service(timeout = 3000,retries=0)

超时的设置要配置在提供方,因为是哪个定义的超时就得知道超时的情况。这就是说,超时设置在被调用者内,是由被调用者内出现的问题引起的超时。

//@Service//将该类的对象创建出来,放到Spring的IOC容器中  bean定义
//将这个类提供的方法(服务)对外发布。将访问的地址 ip,端口,路径注册到注册中心中
@Service(timeout = 3000,retries = 2)//当前服务3秒超时,重试2次,一共3次
public class UserServiceImpl implements UserService {

    int i = 1;
    public String sayHello() {
        return "hello dubbo hello!~";
    }


    public User findUserById(int id) {
        System.out.println("服务被调用了:"+i++);
        //查询User对象
        User user = new User(1,"zhangsan","123");
        //数据库查询很慢,查了5秒

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return user;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

普希托夫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值