一、多集群

1.1 为什么要有多集群?

生产环境qps非常高,依赖的主要服务存在集群层的单点故障,L0级别的服务,一旦故障,影响面非常广

  • 从单一集群考虑,多个节点保证可用性,我们通常使用n+2的方式来冗余节点
  • 单一集群故障
  • 单个机房内机房故障

1.2 什么是多集群?

多集群共享一个DB,Cache,物理上维护两套资源,逻辑上维护两套集群

1.3 带来了什么问题?

Q: 访问A集群为热点集群,流量切换至B集群后缓存雪崩

通过负载均衡,均匀分配流量,让B集群的缓存也热起来

Q:healthCheck接口访问量过多

利用划分子集限制连接池大小

二、多租户

2.1 为什么要有多租户?

  • 集群内测试困难

2.2 什么是多租户?

跨服务传递请求携带上下文(context),数据隔离的流量路由方案

在一个微服务架构中允许多系统共存是利用微服务稳定性以及模块化最有效的方式之一,这种方式一般被称为多租户(multi-tenancy)。租户可以是测试,金丝雀发布,影子系统(shadowsystems),甚至服务层或者产品线,使用租户能够保证代码的隔离性并且能够基于流量租户做路由决策

2.3 如何实现多租户?

image-1716810155443

新微服务A在注册时带上元数据如APPID=xxx,测试在测试A服务时,携带专属APPID,微服务获取到节点列表后,根据APPID选择服务进行连接

2.4 多租户带来了什么优点?

  • 并行测试