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

Java 是不是没有好的热部署方案?

  •  3
     
  •   StarkWhite · 2019-07-24 09:46:43 +08:00 · 17097 次点击
    这是一个创建于 1730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    像 Node,PHP 推代码到服务器就行了,Java 每次打 jar/war 包、停止旧服务、启动新服务,挺麻烦的,从启动到能访问还得等几分钟。

    第 1 条附言  ·  2019-07-24 17:58:18 +08:00
    我目前是在做单机、单体服务,希望能够在不停服务的情况下更新服务。
    不管是 热部署、热更新、热加载,还是别的方式都请大家给出建议,谢谢
    第 2 条附言  ·  2019-07-25 10:15:32 +08:00
    被人安利了 apijson,大家评估下
    第 3 条附言  ·  2019-07-25 10:15:57 +08:00
    apijson 的热更新怎么样?
    https://v2ex.com/t/586011
    118 条回复    2020-01-03 10:18:24 +08:00
    1  2  
    StarkWhite
        101
    StarkWhite  
    OP
       2019-07-25 12:01:37 +08:00
    @lihongjie0209 当年 Mac 可是以不重启升级来作为比 Windows 好的一个宣传点呢
    StarkWhite
        102
    StarkWhite  
    OP
       2019-07-25 12:09:07 +08:00
    @passerbytiny 哈哈,当年 Mac 可是以不重启升级来作为比 Windows 好的一个宣传点呢。
    而且以前做不了,不代表现在做不了啊,技术是会升级的。
    pursuer
        103
    pursuer  
       2019-07-25 12:29:04 +08:00
    @StarkWhite 没用过,不清楚,在不用 native 代码或其他 hack 技巧情况下,单 jvm 动态加载代码应该是要用 classloader 的,不然可能是开了多个 jvm
    yingo
        104
    yingo  
       2019-07-25 12:39:05 +08:00
    java 来讲,还是用灰度,蓝绿,滚动吧..
    StarkWhite
        105
    StarkWhite  
    OP
       2019-07-25 14:12:42 +08:00
    @yingo 灰度、滚动都要多个服务,太麻烦了。蓝绿是啥?
    StarkWhite
        106
    StarkWhite  
    OP
       2019-07-25 14:14:26 +08:00
    @pursuer 也是
    momocraft
        107
    momocraft  
       2019-07-25 14:16:52 +08:00
    基本上,高可用性最现实的手段就是多服务了

    如果多个服务都嫌麻烦,其实热更新对你的价值是什么呢
    StarkWhite
        108
    StarkWhite  
    OP
       2019-07-25 14:37:37 +08:00
    @momocraft 省去打包、上传、重启服务等麻烦事。分析了下,热加载、热更新貌似比热部署更好,可以保留状态。
    StarkWhite
        109
    StarkWhite  
    OP
       2019-07-25 14:42:57 +08:00
    @yingo 原来是新旧服务切换啊,哈哈,又学到了一个新名词~
    misaka19000
        110
    misaka19000  
       2019-07-25 14:43:43 +08:00
    @StarkWhite #108 想要简单就做自动化就行了
    yingo
        111
    yingo  
       2019-07-25 14:53:16 +08:00
    StarkWhite
        112
    StarkWhite  
    OP
       2019-07-25 14:54:48 +08:00
    @misaka19000 写脚本嘛?个人的项目不好去找运维大哥帮忙啊,自己学的话感觉又不划算
    misaka19000
        113
    misaka19000  
       2019-07-25 15:03:52 +08:00
    @StarkWhite #112 有发这个帖子的时间已经足够学会并且写好自动化部署了
    StarkWhite
        114
    StarkWhite  
    OP
       2019-07-25 15:32:47 +08:00
    @misaka19000 大神带带我~
    StarkWhite
        115
    StarkWhite  
    OP
       2019-07-25 15:34:56 +08:00
    @szq8014 直接 run 和部署不是一回事吧? 那个得装 maven,而且一旦退出 maven 线程,服务也停了。。。
    StarkWhite
        116
    StarkWhite  
    OP
       2019-07-25 15:35:26 +08:00
    @Raymon111111 这个答案真是简单粗暴。。。
    Weixiao0725
        117
    Weixiao0725  
       2019-07-26 09:15:31 +08:00
    @pursuer 我觉得以 classloader 为单位的话,本质上和手动重启没啥区别。
    CodeXx
        118
    CodeXx  
       2020-01-03 10:18:24 +08:00
    @lastpass 老哥用的啥技术实现的
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1250 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:04 · PVG 02:04 · LAX 11:04 · JFK 14:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.