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

spring cloud 这套高可用真的靠谱么,还是少了啥部件

  •  
  •   myCupOfTea · 12 天前 · 2874 次点击
    真有服务挂了,eureka 下线其实还挺慢的,就算警报受到了,我也没法在 euraka 的监控面板让它主动下线

    然后其实 spring gateway 内部还有缓存机制,重新拉 eureka 也要时间,感觉恢复太慢了
    26 条回复    2021-07-23 10:05:54 +08:00
    myCupOfTea
        1
    myCupOfTea   12 天前
    如果在这套基础上玩弹性伸缩,岂不是延迟很高
    pigbug
        2
    pigbug   12 天前
    @myCupOfTea 只能说能用,弹性伸缩 spring cloud 不支持把。要么 k8s 要么自研
    RichardYyf
        3
    RichardYyf   12 天前 via Android
    用 spring cloud 这套到了后期一般都需要定制某些组件模块的。既然觉得有问题,就去改呗。我们服务治理就是自研的,然后配套 k8s 做弹性伸缩
    cclander
        4
    cclander   12 天前
    1.有命令可以让注册在 euraka 上的服务主动下线的。
    2.spring cloud 也不是银弹,根据需求开发符合自己的东西才是王道
    securityCoding
        5
    securityCoding   12 天前
    这套东西是很烂 ,尤其是那个 loadbalance 模块的代码简直是坨屎,内部缓存刷新机制真的很烦人
    abcbuzhiming
        6
    abcbuzhiming   12 天前
    spring cloud 这玩意这不是银弹,它的很多基础组件其实也仅仅是 [开发出来了] 而已,netflix 的那套其实是有点东西的,可是 netflix 后来直接说我不更新了,2.0 闭源,其实微服务的基础组件是有研发难度的。也是比较有价值的东西,真大路货的话 netflix 也不会突然就说不更新了
    cheng6563
        7
    cheng6563   12 天前
    然后你会发现,就算你在 Eureka 上把服务下线了,过一会服务自己又注册回来。
    linbiaye
        8
    linbiaye   12 天前
    这玩意儿胜在简单,
    buliugu
        9
    buliugu   12 天前
    我们换了 nacos,实时性感觉还可以
    wdlth
        10
    wdlth   12 天前   ❤️ 2
    Spring Boot 和 Spring Cloud 有很多代码都是偷懒的,美名其曰“约定大于配置”,其实一用起来还得自己写配置。
    realrojeralone
        11
    realrojeralone   12 天前
    要想保证高可用,不能只依赖注册中心,负载均衡器内部也要做服务探活,如果探活失败,就不加到可访问的结点里,即使注册中心告诉你它是活的
    xwayway
        12
    xwayway   12 天前
    我们用的 nacos,然后 gateway 自研的,感觉还行,蓝绿,灰度这种流量控制做得比较好
    myCupOfTea
        13
    myCupOfTea   12 天前
    @abcbuzhiming 妈嗨,跟老板说问题,老板只会说现在社区啥都有,人家用的人那么多不可能是玩具

    想自研组件都不让
    abcbuzhiming
        14
    abcbuzhiming   12 天前
    @myCupOfTea 行呗,老板这不已经发话了,既然老板都不怕死,你怕什么,照着他说的弄。反正手上随时准备后路,老板要死就让他死好了。
    Kyle18Tang
        15
    Kyle18Tang   12 天前
    网关和各个微服务可以配置重试机制, 这样拿到已经下线的服务 IP 请求报错就会试其他的.
    anubu
        16
    anubu   12 天前
    在 k8s 上套的 spring cloud,内部缓存特别烦人,有时间研究的话优先把 eureka 踢出去。
    mmdsun
        17
    mmdsun   12 天前 via Android
    记得 eureka 可以 毫秒级的吧。

    估计是缓存没关。

    另外 eureka spring 还在更新并没有放弃。

    netflix 系列除了 eureka,其他的 spring 只是维护了没有更新了。
    yalin
        18
    yalin   12 天前
    一主二从 传统 HA
    nekoneko
        19
    nekoneko   11 天前
    eureka 换 consul 吧,naco 真不推荐
    xuanbg
        20
    xuanbg   11 天前
    eureka 换 consul 吧,naco 真心不推荐
    tyit
        21
    tyit   11 天前 via iPhone
    说说我这边遇到的问题。

    对于请求通过 k8s 的 service 层到达 pod 容器的情况,可以通过 k8s 优雅机制来确保 pod 容器在上线滚动更新期间,做到业务"无感知"。但是目前线上 pod 容器服务主动注册到 nacos 配置中心,业务方通过 nacos 网关调用 pod 容器服务,即调用请求绕过了 k8s 的 service 层。

    这就出现了一个问题:pod 容器更新期间,老 pod 已经优雅终止掉了,但是其 ip 和端口还在 nacos 的网关缓存里,调用请求会在 nacos 网关缓存未完全更新之前打到已经终止掉的 pod 地址,这就会出现连接超时,调用失败错误,从而造成业务流量损失。
    passerbytiny
        22
    passerbytiny   11 天前 via Android
    spring cloud 是开源非商业集成器,貌似连可选的商业服务都没有。这是管送不管养的东西,你不能拿来直接用。
    0576coder
        23
    0576coder   11 天前
    @xuanbg


    是不是可以直接把请求转到 k8s 的 service 层 这样是不是可以不用自研 gateway 层了
    0576coder
        24
    0576coder   11 天前
    @tyit

    是不是可以直接把请求转到 k8s 的 service 层 这样是不是可以不用自研 gateway 层了
    securityCoding
        25
    securityCoding   11 天前 via Android
    @tyit 我也遇到了,在解决中。k8s 分批更新 nacos 客户端能及时收到推送更新,应该不是 nacos 的问题。我猜应该是 loadbalance 组件的内部缓存,它是自己定时刷新机制,解决思路 1.魔改 loadbalance 源码 2.路由策略支持失败转移
    buliugu
        26
    buliugu   11 天前
    @tyit 可以在 preStop 里调用 /actuator/service-registry 将服务下线,等待一段时间后删除 pod
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3588 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 08:07 · PVG 16:07 · LAX 01:07 · JFK 04:07
    ♥ Do have faith in what you're doing.