V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX  ›  程序员

为什么现在的大部分互联网产品都能不停机维护,游戏每周维护都是停机 4 小时以上?

  •  
  •   drymonfidelia · 89 天前 · 7375 次点击
    这是一个创建于 89 天前的主题,其中的信息可能已经有所发展或是发生改变。
    63 条回复    2024-08-22 15:15:03 +08:00
    angrylid
        1
    angrylid  
       89 天前
    游戏怎么搞灰度测试
    Monad
        2
    Monad  
       89 天前 via iPhone
    大部分游戏都停机 4 小时以上吗?
    bobryjosin
        3
    bobryjosin  
       89 天前
    大部分互联网产品就是小修小补,只会出现部分功能不可用,并涉及不到原本的业务,你用旧版本客户端也不会有太大障碍,游戏不一样,游戏涉及重大更新基本做不到热更新,客户端和服务端资源要同步,上线前内部也要测试,做这些前提都要把用户踢下线。
    IvanLi127
        4
    IvanLi127  
       89 天前
    啥游戏每周四小时停机维护?
    DeWjjj
        5
    DeWjjj  
       89 天前
    有的游戏就可以热更新。
    我觉得纯粹是技术使用问题,有的公司就不用。
    jhdxr
        6
    jhdxr  
       89 天前   ❤️ 1
    @bobryjosin 技术上可以做到,参考守望先锋。只是说大家都停机更新,那为啥要花额外的代价去做呢?
    henix
        7
    henix  
       89 天前   ❤️ 2
    之前看到的一个知乎回答: https://www.zhihu.com/question/653896828/answer/3480752444
    > 简单来说游戏服务器这种架构设计就是为了低延迟而牺牲服务可用性。而这个业务的特性决定了这么做是可行(甚至是必须的)。
    我的理解是游戏服务器更重视低延迟,而不太需要高可用。可用性低一点没关系,发补偿就行,玩家也不是随时都在玩(高峰集中在晚上和周末)。
    互联网产品更重视高可用,为了可用性可以牺牲延迟。
    crysislinux
        8
    crysislinux  
       88 天前 via Android
    web 维护的主要是应用服务器,实际上数据库这种也很少停机维护,要是停数据库那要想不停机复杂度加一个数量级
    whileFalse
        9
    whileFalse  
       88 天前 via Android
    大部分互联网产品,会把状态保存在中间件中,比如 db 和缓存。
    游戏的状态保存在游戏进程的内存里。
    网络游戏开发流程面向快速迭代优化,中间件开发流程面向稳定性优化
    kneo
        10
    kneo  
       88 天前 via Android
    因为游戏佬好糊弄。
    starinmars
        11
    starinmars  
       88 天前
    LOL 每次更新都是 0 点到 12 点,12 个小时啊。
    changnet
        12
    changnet  
       88 天前   ❤️ 2
    这个得看哪个游戏

    现在的游戏架构多数是可以热更新的。进程不停,数据保留,逻辑更新那种。

    但是呢,我们主策说除了 bug 修复,停服更新会让玩家感觉你这游戏还在更新维护,热更的话可能一个月玩家都感觉不到更新。另外停服更新确实可以免去一些兼容性的工作(比如服务器更新了,玩家客户端还没更新要兼容)

    但你说每周要停 4 个小时???没见过,一般都是公告停个半小时,实际上几分钟就更新完了。剩下的时间留给测试去验收以及各平台推送客户端版本更新
    imydou
        13
    imydou  
       88 天前 via iPhone
    dnf 手游 经常三小时以上
    jinliming2
        14
    jinliming2  
       88 天前 via iPhone   ❤️ 1
    我记得以前玩 dota2 的时候,游戏更新的时候是不会打断正在玩的人的,一局结束之后,需要退游戏更新客户端才能开下一局。
    不过也有崩服务器的时候,但貌似大部分情况貌似也不影响进行中的游戏,只是结束的时候加载不出结果。
    Biggoldfish
        15
    Biggoldfish  
       88 天前 via Android
    因为菜啊,跟地球市值第一的 AAPL 发布新机前官网要停机维护一样抽象
    agdhole
        16
    agdhole  
       88 天前
    dota 不停服,只会打完了让你重启游戏更新。
    yunye
        17
    yunye  
       88 天前
    激战 2 就不需要停机维护
    PandaIsGood
        18
    PandaIsGood  
       88 天前
    @Biggoldfish 是为了怕有人在那时候买旧手机
    mightybruce
        19
    mightybruce  
       88 天前
    游戏多数架构其实还是单体,或者说是分布式单体,
    玩家的数据要保证实时,施法、装备和物品 在服务进程中处理, 状态信息也是如此,而不像多数互联网应用在中间件中处理,所以互联网扩缩要容易。
    pain2w
        20
    pain2w  
       88 天前
    游戏不是必需品,玩家几个小时不玩问题不大,给点停机补偿就号。
    geekvcn
        21
    geekvcn  
       88 天前
    热更新现在基本规模大点的网游都支持,停机维护主要是大版本更新需要客户端和服务端都更新,大版本更新一般没法热更新,不是技术上做不到,而是不能保证不产生奇奇怪怪问题。

    至于周四停机维护还有一点就是游戏服务端很多都是 C++写的,有些程序员水平一般,可能内存回收做的不到位,开久了内存泄漏就多了,周四重启能保证周五周末高峰期服务器上的服务端处于最佳状态。

    游戏和 Web 这些服务不一样,吃计算性能,对带宽质量和实时性要求也高,web 服务一个几千 ms 的突发性能下降基本没问题,还能多机负载均衡因为用户与用户之间基本没啥实时交互。游戏除了玩家换服务器,或者切换位面/分线,核心负载没有办法均衡负载到多个服务器,最多把聊天之类的功能独立出来
    qinmenghuo
        22
    qinmenghuo  
       88 天前
    真的有每周停机维护四小时以上的游戏吗?怎么这么多人对一个几乎不存在的东西讨论的兴致勃勃的?
    wyxls
        23
    wyxls  
       88 天前   ❤️ 1
    @qinmenghuo
    这帖子让我不得不提一个童年回忆的老古董“辣鸡”游戏,MapleStory 冒险岛。经常 4-8 小时维护,高概率延长维护时间,中概率更出 BUG 回炉甚至直接回滚数据,相当于每周有半天时间到一天时间歇着,而且棒子可以没有任何补偿,玩家几乎没有怨言
    https://www.nexon.com/maplestory/news/maintenance/18272/completed-scheduled-maintenance-august-8-2024
    wyxls
        24
    wyxls  
       88 天前
    另外游戏服务器和商城服务器是完全两个玩意,两边氪金道具偶发性同步失败,需要玩家等待或者写 ticket 申诉反馈,余额偶尔需要玩家手动刷新才显示正常,等等等等情况,这种玩意要在手游里出现,我都不知道要补偿多少东西才行
    wpblank
        25
    wpblank  
       88 天前 via Android
    @wyxls 我就记得每次等冒险岛维护完,就去挖矿,因为地图资源会刷新。
    wyxls
        26
    wyxls  
       88 天前
    @wpblank 现在挖矿改成单独一套系统,叫专业技术,每天有疲劳值,低级矿材通过 NPC 直接进入地图循环刷,高级矿材在怪图随机循环生成,不需要等更新维护
    Daniel17
        27
    Daniel17  
       88 天前
    游戏也有很多不停机的,不一定
    Ayanokouji
        28
    Ayanokouji  
       88 天前
    也不是不行,王者荣耀就经常热更新。游戏嘛,停一会也无所谓的。
    bruce0
        29
    bruce0  
       88 天前   ❤️ 1
    分游戏类型吧, 像是王者,吃鸡这种, 房间对战的, 能做到不停服热更, 假设在玩的房间版本号是 1.1.0, 要更到 1.1.1, 只需要把新开的房间用 1.1.1, 1.1.0 的继续玩,对局结束, 后面再开用 1.1.1 就行了.

    像是 mmorpg 类型的, 热更有点麻烦, 如果是逻辑用 lua 等脚本写的, 可以热更, 如果全 C++的, 用动态加载释放 .so 文件应该也能做到热更, 只是麻烦很多.

    还是像楼上们说的, 游戏不是必需品, 提前发公告, 维护结束发奖励就行了, 简单可靠
    Ocean810975
        30
    Ocean810975  
       88 天前
    我玩炉石这么多年,唯一一次看见维护还是上次网易暴雪服务器炸了。

    好像暴雪家游戏都没啥停服更新的。
    lyxxxh2
        31
    lyxxxh2  
       88 天前
    大量数据,比如赛季更新,你敢热更新吗?
    说白就是现在技术做不到。
    就算能做到,所需要的代价,还不如停机稳妥。
    SkywalkerJi
        32
    SkywalkerJi  
       88 天前
    @lyxxxh2 #31
    apex 就是热更新,赛季也是热更新。
    JeffreyZhuang
        33
    JeffreyZhuang  
       88 天前
    维护都是一会的事,花的时间在新服上线后 QA 对正式运行环境做检查。
    paopjian
        34
    paopjian  
       88 天前
    都是屎山代码能用就行,国内自己重头研发的有几个?大部分不还是买过来的,买过来的也是屎山叠屎山,那维护就不如停机的了,反正用户也习惯了
    mouyase
        35
    mouyase  
       88 天前
    @qinmenghuo

    维护四小时的游戏,当然是我们创啦。

    尊敬的各位勇士:

      为了给各位勇士带来更优质的游戏体验,进一步加强游戏的安全性,我们将于 8 月 8 日(周四)5:00-9:00 对所有大区进行停机维护,整个维护过程预计需要 4 小时,因开机顺序以及数据维护内容差异,部分大区会提前开放。因停机给大家带来的不便,我们深表歉意。



    停机时间:8 月 8 日(周四)5:00-9:00

      更新大区:所有大区
    JustBecause
        36
    JustBecause  
       88 天前
    你们都说不存在停机四小时维护,但是我怎么这么熟悉,好像小时候玩的一款游戏就是每周四小时停机
    是跑跑卡丁车?还是魔兽世界?(魔兽好像是每周四不是四小时)
    印象中还是个有名气的游戏
    EndlessMemory
        37
    EndlessMemory  
       88 天前
    游戏服务器半夜停机影响不大
    laminux29
        38
    laminux29  
       88 天前
    两个原因:

    1.以暴雪为主的游戏厂商,极度傲慢,不关心玩家。它为了自己方便,就设计成每周一次停服维护,剥夺玩家权益。最近暴雪重新开服,又有很多玩家赶着去给暴雪送钱,我实在无法理解。

    2.有很多厂商,为了所谓的版本统一,不管玩家诉求。其实很多玩家对游戏统一版本的要求并不高,游戏厂商完全可以分阶段同步更新,这样玩家就可以不用遭遇停服时间。Steam 上面就有不少联机游戏是这样做的。
    dyllen
        39
    dyllen  
       88 天前
    @jinliming2
    @agdhole 是,我玩 dota2 从来没见过停服更新的,就见过全球登陆服务器崩的
    pkoukk
        40
    pkoukk  
       88 天前
    啥游戏每周停机维护 4 小时?每周?有这么多更新么?
    layxy
        41
    layxy  
       88 天前
    王者好像就可以不停机维护,主要是不停机维护可能需要更多的冗余资源,游戏厂商不想这么搞
    aphrodite
        42
    aphrodite  
       88 天前
    剑网三?
    一周维护两次,每次维护 4h 左右。
    aphrodite
        43
    aphrodite  
       88 天前
    @qinmenghuo 剑网 3
    aphrodite
        44
    aphrodite  
       88 天前
    @JustBecause 剑网 3
    HenryLuis
        45
    HenryLuis  
       88 天前
    12306 每天晚上停机维护
    fiveStarLaoliang
        46
    fiveStarLaoliang  
       88 天前
    大型游戏一般对客户端有强一致性要求,不同版本的客户端一般不敢放在一起玩,不然必出 bug 。相反,普通 app 就没这么多要求了,不同版本的影响也不大,所以可以搞灰度发布
    ViolaH
        47
    ViolaH  
       88 天前 via iPhone
    @IvanLi127 挺多的,以前玩的手游每周四下午维护四小时,有时候出问题会更久
    valord577
        48
    valord577  
       88 天前
    @qinmenghuo #22 梦幻西游 雷打不动每周 2 哈哈哈
    duanxianze
        49
    duanxianze  
       88 天前
    有什么必要呢?难道玩家会因为你更新不停机就多充钱?不会的
    baoshijiagong
        50
    baoshijiagong  
       88 天前
    游戏嘛,玩玩而已,停了也损失不大。不过有些只是老游戏的架构和维护习惯而已。新的游戏,比如炉石传说,不需要停机维护了。甚至大版本更新也是无缝切换的,客户端更新后服务器同时提供新版本和老版本的服务。
    Emiya1208
        51
    Emiya1208  
       88 天前
    非常简单,不一定是游戏,任何产品都是如此,是否停机维护完全取决于有没有必要。

    对于任何产品,思考两个问题,停机维护带来了什么?不停机维护能带来什么?
    tangchi695
        52
    tangchi695  
       88 天前
    想起了高中的时候,翻墙去网吧通宵打毒奶粉,结果开了机子发现停机维护🤣
    ZeroYe
        53
    ZeroYe  
       88 天前
    @jinliming2 是的 Dota2 一直都是这样。出过比较搞笑的事情,就是在举行比赛的时候,V 社直接对 Dota2 进行的大版本游戏更新,而且是史诗级的更新,加入很多技能和变更了 N 多机制,大家打着比赛还是上一个版本,下一把就是另外一个版本了,职业哥也只能打比赛的时候先暂停看一下看英雄技能说明和机制说明😂
    alleluya
        54
    alleluya  
       88 天前
    @ZeroYe g 胖: 我让你更新期间举办比赛了? (狗头
    cybort
        55
    cybort  
       88 天前 via Android
    其他产品没这么多美术资源的更新,很占带宽的
    dingdangnao
        56
    dingdangnao  
       88 天前
    4 小时不能聊天会死
    4 小时不能听音乐会死
    4 小时不能看视频会死
    4 小时不玩游戏 可以去听音乐看视频 hhhhh
    jiangnan01
        57
    jiangnan01  
       88 天前
    蓝洞:不停机怎么给你们加 bug ?
    OnGameNet
        58
    OnGameNet  
       88 天前
    剑网三,一周两次
    ellermister
        59
    ellermister  
       87 天前 via Android
    @qinmenghuo pubg 每周三 8 小时,一年只有十来次例外,偶尔不需要更新
    l4ever
        60
    l4ever  
       87 天前
    web 服务简单, 一个容器就起来了, 后端可能有几十个容器在服务,
    升级时候销毁一部分容器, 再启动新版本容器就行了

    过段时间再销毁剩余部分, 启动新版本容器.
    Subfire
        61
    Subfire  
       87 天前
    我们游戏的 Java 服务器端热更, 不支持 Lambda 的写法呢
    cyspy
        62
    cyspy  
       87 天前
    互联网大部分服务都是无状态的,出了错直接刷新就行了。游戏强状态,鬼知道有什么隐藏的逻辑漏洞
    lshero
        63
    lshero  
       87 天前
    大部分互联网产品都是信息发布形式实时交互很少,可以用缓存撑着。只要停止数据库的写入,就可以慢慢维护,看看贴吧当年整顿 17 年之前的内容都消失了,算不算一种停机维护呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2943 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:42 · PVG 20:42 · LAX 04:42 · JFK 07:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.