• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fFeeOps
V2EX  ›  程序员

IM 长链接网关 ID 求助

  •  
  •   fFeeOps · Aug 9, 2024 · 1544 views
    This topic created in 669 days ago, the information mentioned may be changed or developed.

    背景

    有一个 Netty 为基础的 IM 长链接网关,下面有种 channelId 的生成方式,但是楼主不太确定是否能在分布式高并发环境下保证 id 唯一性,请教一下各位大佬。

    1. 有没有必要自定义 channelId ,还是直接用 Netty 的 id
    2. 能不能保证唯一性,不能的话怎么优化一下?

    代码

        public static String generateChannelId(InetSocketAddress remoteAddr, long timestamp) {
            // 初始化一个容量为 96 的 StringBuilder 对象
            StringBuilder sb = new StringBuilder(96);
            // 添加本地 IP 地址
            sb.append(NetUtil.LOCAL_IP_ADDR);
            // 添加分隔符
            sb.append(CH_ID_SEPARATOR);
            // 获取并添加远程 IP 地址
            sb.append(remoteAddr.getAddress().getHostAddress());
            // 添加分隔符
            sb.append(CH_ID_SEPARATOR);
            // 获取并添加远程端口
            sb.append(remoteAddr.getPort());
            // 添加分隔符
            sb.append(CH_ID_SEPARATOR);
            // 添加时间戳
            sb.append(timestamp);
            // 添加分隔符
            sb.append(CH_ID_SEPARATOR);
            // 获取并添加当前序列号的十六进制字符串表示
            sb.append(Integer.toHexString(SEQ.getAndIncrement()));
            // 返回拼接好的字符串
            return sb.toString();
        }
    
    5 replies    2024-08-09 16:01:25 +08:00
    v2orz
        1
    v2orz  
       Aug 9, 2024
    ipv6 环境下,你这个 96 是不是不够用?

    默认情况 netty 应该用的 uuid ,如果不需要可读性,就用默认的就可以了
    coderxy
        2
    coderxy  
       Aug 9, 2024
    基本可以认为就是全局唯一的
    sujin190
        3
    sujin190  
       Aug 9, 2024
    这 ID 有啥用?平台唯一性区分那也是用户 ID 吧,如果允许多端登录那也是用户下再生成设备 ID 就是了,这个过程鉴权会话的时候就处理好了,不需要这边生成吧,否则默认的内存地址不挺好的么,本程序内肯定不冲突
    fFeeOps
        4
    fFeeOps  
    OP
       Aug 9, 2024
    @v2orz #1 自建 id 就是想要考虑可读性~
    wkong
        5
    wkong  
       Aug 9, 2024
    没必要自己开发了,我都为你开发好了 😄 https://github.com/WuKongIM/WuKongIM
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   959 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 21:58 · PVG 05:58 · LAX 14:58 · JFK 17:58
    ♥ Do have faith in what you're doing.