spring-cloud和ribbon可以执行基于DNS的负载平衡吗?

Gui*_*che 7 java spring-cloud netflix-ribbon spring-cloud-netflix

Cloudfoundry计划添加对映射到多个IP的DNS A记录的支持(每个应用容器实例一个),请参阅docs-proposal.我想知道弹簧云发现是否与功能区配合可以支持基于DNS的客户端负载平衡.

Spring-Cloud DiscoveryClient似乎没有DNS解析,它管理主机名

功能区负载平衡库通过ListOfServers属性支持FQDN列表.

但我无法找到与指定服务器的DNS查找相关的文档:即,如果DNS A/AAA记录(从ListOfServers获取)返回多个IP地址,那么Ribbon会在IP地址之间进行负载平衡吗?

我需要在哪里配置DNS缓存指令?这是java.security支持中的JVM范围,还是可以将其作为客户端幻灯片负载平衡选项(来自功能区)进行管理?

slo*_*k2k 1

如果您使用的是Spring Cloud Eureka服务,则每个服务实例都会在Eureka上注册。这意味着您可以在同一主机上托管同一服务的多个实例,并且 eureka 知道每一个服务。

如果您使用功能区进行基于客户端的负载平衡,那么功能区会查询尤里卡以获取服务的所有实例,并了解服务的每个实例。

这样,功能区可以选择连接到每个实例。因此,不需要多个 DNS A 记录。使用多个 DNS A 记录会适得其反,因为功能区无法再通过 DNS 区分服务的多个实例。在这种情况下,我建议设置eureka.instance.preferIpAddress为 true,以区分多个实例。

据我所知,ribbon支持2种工作模式,RoundRobinRule和AvailabilityFilteringRule。

您可以在《Spring 微服务》一书中找到一个很好的介绍。