比如之前产品要我们做个后台录制客户给的直播视频链接,产品有个问题就是如果不同客户提交了同一个链接,是不是我们后台会重复录制?
我觉得用重复录制的设计会比较好,因为我原本设计的录制机,是一个链接就会单独起一个 deployment ,也不会检查是否有重复的链接;其二重复录制也不会占用多大资源,链接大概率是我们内网的直播,不占用带宽,录下的东西存对象存储里一天也就几毛几分钱。
不过这样的设计大概争对的也就是二位数以内客户,最多三位数的录制链接了,我觉得在这个量级下面,完全完全没有必要设计复杂的去重逻辑,根据链接去重?那每个链接都要存到数据库里计数,计到 0 才能删除录制服务,万一客户提交的链接后面有乱七八糟的参数?是去参数拿原始链接去重,还是直接带上参数存数据库里?
以前有另一个同事就是这样的设计,我觉得真的是非常、非常的负责,首先他的 worker 服务启动的时候会去查数据库,查有哪些链接还没有分配到 worker ,如果有的就把自己的 workerid 更新进去,然后自己作为 worker 开始录制,这样每次要查有哪些视频没有录制还有去翻数据库,不甚其烦。一个 deployment 一个录制,在 deployment 列表里直接就能看到所有正在录制的信息,不需要拿个直接把 replica 改成 0 ,不是很方便吗。
我觉得这个量级下面很多架构完全完全没有必要设计的那么复杂,我的思路有错吗?