时间轮算法

时间轮的用法

1
2
3
4
5
6
7
8
9
// 默认间隔时间为 100 毫秒
Timer timer = new HashedWheelTimer();
Timeout timeout = timer.newTimeout(new TimerTask() {
    @Override
    public void run(Timeout timeout) throws Exception {
        System.out.println("run");
    }
}, 10, TimeUnit.SECONDS);
timer.stop();

时间轮的原理

有一个环形数组,每个格子都是一个队列,每隔 interval 时间,指针就会移动到下一格,然后把队列中的任务拿出来判断是否到期并执行。

04 订阅服务

nacos 基于 2.2.4 版本

nacos 订阅服务主要分为 http+udpgrpc 这两种方式,这两者的内部调用方法都是一样的,这里主要分析 http+udp 的方式。

订阅服务的 curl

1
curl --location 'localhost:8848/nacos/v2/ns/instance/list?serviceName=test'

订阅服务的主流程

源码位置: com.alibaba.nacos.naming.controllers.v2.InstanceControllerV2#list