想问一下大厂的大神,对于有多个集群的微服务系统,是否要支持跨集群的服务调用。
即,如果有两个集群 c1,c2.现在两个服务 s1,s2.是 s1 要调用 s2.
主流的配置,是否支持 c1 集群的 s1 服务调用 c2 集群的 s2 服务。
我个人的理解是,不同的集群可能物理距离很远,跨集群的调用响应时间不是很好。
一般情况,应该是优先在同一集群内调用。但如果某个服务在一个集群下出现问题,全都不可用,应该也是要支持能跨集群的调用的。
不知道像阿里的异地多活方案里,究竟是怎么对服务路由做配置的
1
wym7223645 2019-06-25 17:17:18 +08:00
我们现在有 A、B 两集群, s1 服务在 A 集群 s2 服务在 B 集群, A 集群在北京,B 集群在西安,s1 调用 s2 生产环境的确有延迟(经过比较与本地比多了 300 毫秒左右的延迟),但是在可接受范围之内,用户基本无感知,所以就先这么用着了
|
2
shazhouyouren OP @wym7223645 额。。那为啥两个服务要部署在不同集群呢?是怎么个考虑?
|
3
whp1473 2019-06-25 19:18:05 +08:00
同城容灾、异地多活,一般同城 A1、A2 在物理是两个机房,我们称为集群 A,该集群例如在北京,它服务于周边省份。而异地多活,就是城市 B 有一个集群,下面有两个物理机房 B1、B2。用户访问时可以通过手动选择区域的方式切换,也可以通过其 ip、响应自动选择机房。A、B 两地的通用数据通过同步服务保证,只保证最终一致性,也就是在未来的某一刻一定会同步。
异地集群互通,那服务完全没法用,少还可以,服务间调用关系复杂,超时是无法接受的。 |
4
whp1473 2019-06-25 19:25:28 +08:00 1
至于如果跨域两个服务器区域怎么办,一般数据同步速度都比较快,而人在上海节点-北京节点之间物理移动的速度远远小于数据同步的速度,所以基本是无感的。
这样的好处还有,物理光缆问题不影响本地服务,本地访问速度也大大提高,毕竟机房就在你附近。同时也可以全球搭建机房,服务出现问题只会在某个片区,比如阿里云出问题,一般也是一部分服务不可用,一部分区域,就是这个原因。 |
5
mooncakejs 2019-06-25 19:28:09 +08:00
北京西安 300 的延迟也有点夸张了,是带宽的问题吗?
|
6
wenjian881314 2019-06-25 21:00:47 +08:00
一般不会有异地集群间的调用,请求在前端最开始的时候就会路由到指定集群
|
7
wym7223645 2019-06-26 10:44:52 +08:00
@mooncakejs 带宽据说是千兆的,甲方说是 有很多防火墙 拦截器之类的检查,导致返回的比较慢
|
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 密集型的服务。 算是伪异地集群
|
9
shazhouyouren OP |