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

2019-06-25 15:55:17 +08:00
 shazhouyouren

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

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

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

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

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

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

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

异地集群互通,那服务完全没法用,少还可以,服务间调用关系复杂,超时是无法接受的。
whp1473
2019-06-25 19:25:28 +08:00
至于如果跨域两个服务器区域怎么办,一般数据同步速度都比较快,而人在上海节点-北京节点之间物理移动的速度远远小于数据同步的速度,所以基本是无感的。
这样的好处还有,物理光缆问题不影响本地服务,本地访问速度也大大提高,毕竟机房就在你附近。同时也可以全球搭建机房,服务出现问题只会在某个片区,比如阿里云出问题,一般也是一部分服务不可用,一部分区域,就是这个原因。
mooncakejs
2019-06-25 19:28:09 +08:00
北京西安 300 的延迟也有点夸张了,是带宽的问题吗?
wenjian881314
2019-06-25 21:00:47 +08:00
一般不会有异地集群间的调用,请求在前端最开始的时候就会路由到指定集群
wym7223645
2019-06-26 10:44:52 +08:00
@mooncakejs 带宽据说是千兆的,甲方说是 有很多防火墙 拦截器之类的检查,导致返回的比较慢
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
2019-06-26 14:13:36 +08:00
@wym7223645
@whp1473
感谢。大概明白了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/577303

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX