V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shazhouyouren
V2EX  ›  程序员

求教关于多集群下微服务的调用问题

  •  
  •   shazhouyouren · 2019-06-25 15:55:17 +08:00 · 1920 次点击
    这是一个创建于 2011 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想问一下大厂的大神,对于有多个集群的微服务系统,是否要支持跨集群的服务调用。

    即,如果有两个集群 c1,c2.现在两个服务 s1,s2.是 s1 要调用 s2.

    主流的配置,是否支持 c1 集群的 s1 服务调用 c2 集群的 s2 服务。

    我个人的理解是,不同的集群可能物理距离很远,跨集群的调用响应时间不是很好。

    一般情况,应该是优先在同一集群内调用。但如果某个服务在一个集群下出现问题,全都不可用,应该也是要支持能跨集群的调用的。

    不知道像阿里的异地多活方案里,究竟是怎么对服务路由做配置的

    9 条回复    2019-06-26 14:13:36 +08:00
    wym7223645
        1
    wym7223645  
       2019-06-25 17:17:18 +08:00
    我们现在有 A、B 两集群, s1 服务在 A 集群 s2 服务在 B 集群, A 集群在北京,B 集群在西安,s1 调用 s2 生产环境的确有延迟(经过比较与本地比多了 300 毫秒左右的延迟),但是在可接受范围之内,用户基本无感知,所以就先这么用着了
    shazhouyouren
        2
    shazhouyouren  
    OP
       2019-06-25 17:23:59 +08:00
    @wym7223645 额。。那为啥两个服务要部署在不同集群呢?是怎么个考虑?
    whp1473
        3
    whp1473  
       2019-06-25 19:18:05 +08:00
    同城容灾、异地多活,一般同城 A1、A2 在物理是两个机房,我们称为集群 A,该集群例如在北京,它服务于周边省份。而异地多活,就是城市 B 有一个集群,下面有两个物理机房 B1、B2。用户访问时可以通过手动选择区域的方式切换,也可以通过其 ip、响应自动选择机房。A、B 两地的通用数据通过同步服务保证,只保证最终一致性,也就是在未来的某一刻一定会同步。

    异地集群互通,那服务完全没法用,少还可以,服务间调用关系复杂,超时是无法接受的。
    whp1473
        4
    whp1473  
       2019-06-25 19:25:28 +08:00   ❤️ 1
    至于如果跨域两个服务器区域怎么办,一般数据同步速度都比较快,而人在上海节点-北京节点之间物理移动的速度远远小于数据同步的速度,所以基本是无感的。
    这样的好处还有,物理光缆问题不影响本地服务,本地访问速度也大大提高,毕竟机房就在你附近。同时也可以全球搭建机房,服务出现问题只会在某个片区,比如阿里云出问题,一般也是一部分服务不可用,一部分区域,就是这个原因。
    mooncakejs
        5
    mooncakejs  
       2019-06-25 19:28:09 +08:00
    北京西安 300 的延迟也有点夸张了,是带宽的问题吗?
    wenjian881314
        6
    wenjian881314  
       2019-06-25 21:00:47 +08:00
    一般不会有异地集群间的调用,请求在前端最开始的时候就会路由到指定集群
    wym7223645
        7
    wym7223645  
       2019-06-26 10:44:52 +08:00
    @mooncakejs 带宽据说是千兆的,甲方说是 有很多防火墙 拦截器之类的检查,导致返回的比较慢
    wym7223645
        8
    wym7223645  
       2019-06-26 10:51:39 +08:00
    @shazhouyouren s1 服务在 A 集群 s2 服务在 B 集群, 基于业务的,A 集群主要是为了 S1 服务, B 集群主要是为了 S2 服务, 但是 S2 在 A 集群里面也是有的, 平时主要调用 B 集群的 S2,当 B 集群出现问题的时候切换至 A 集群的 S2, 两个集群的硬件配置有差异, 你可以理解为 A 集群是内存密集型的服务 B 集群是 CPU 密集型的服务。 算是伪异地集群
    shazhouyouren
        9
    shazhouyouren  
    OP
       2019-06-26 14:13:36 +08:00
    @wym7223645
    @whp1473
    感谢。大概明白了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3745 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 10:32 · PVG 18:32 · LAX 02:32 · JFK 05:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.