工作的时候一直喜欢尽量把架构设计的简单,能不能做的复杂功能就不做
比如之前产品要我们做个后台录制客户给的直播视频链接,产品有个问题就是如果不同客户提交了同一个链接,是不是我们后台会重复录制?
我觉得用重复录制的设计会比较好,因为我原本设计的录制机,是一个链接就会单独起一个 deployment ,也不会检查是否有重复的链接;其二重复录制也不会占用多大资源,链接大概率是我们内网的直播,不占用带宽,录下的东西存对象存储里一天也就几毛几分钱。
不过这样的设计大概争对的也就是二位数以内客户,最多三位数的录制链接了,我觉得在这个量级下面,完全完全没有必要设计复杂的去重逻辑,根据链接去重?那每个链接都要存到数据库里计数,计到 0 才能删除录制服务,万一客户提交的链接后面有乱七八糟的参数?是去参数拿原始链接去重,还是直接带上参数存数据库里?
以前有另一个同事就是这样的设计,我觉得真的是非常、非常的负责,首先他的 worker 服务启动的时候会去查数据库,查有哪些链接还没有分配到 worker ,如果有的就把自己的 workerid 更新进去,然后自己作为 worker 开始录制,这样每次要查有哪些视频没有录制还有去翻数据库,不甚其烦。一个 deployment 一个录制,在 deployment 列表里直接就能看到所有正在录制的信息,不需要拿个直接把 replica 改成 0 ,不是很方便吗。
我觉得这个量级下面很多架构完全完全没有必要设计的那么复杂,我的思路有错吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.