- 直接访问链接:https://t.zsxq.com/14F2uGap7
- 微信扫码下图:
Nacos中的保护阈值的作用是什么?
假如现在有一个服务,本来有10个实例,但是现在挂掉了8个,剩下2个正常实例,此时本来由10个实例处理的流量,就全部交给这个两个正常实例来处理了,此时这两个实例很有可能是处理不过来的,最终导致被压垮,为了应对这种情况,Nacos提供了保护阈值这个功能,我们可以给某个服务设置一个0-1的阈值,比如0.5,那就表示,一旦实例中只剩下一半的健康实例了,比如10个实例,只剩下5个健康实例了,那么消费者在进行服务发现时,则会把该服务的所有实例,也包括不健康的实例都拉取到本地,然后再从所有实例中进行负载均衡,选出一个实例进行调用,在这种情况下,选出来的即可能是一个健康的实例,也可能是挂掉的实例,但是通过这种方式,很好的保护的剩下的健康实例,至少保证了一部分请求能正常的访问,而不至于所有请求都不能正常访问,这就是Nacos中的保护阈值,同时,这个功能在Spring Cloud Tencent中叫全死全活。
Nacos中的负载均衡是怎么样的?
Nacos的负载均衡指的是,在进行服务发现时进行负载均衡,正常情况下,在进行服务发现时,会根据服务名从Nacos中拉取所有的实例信息,但是Nacos中提供了一个功能,就是可以在拉取实例时,可以根据随机策略只拉取到所有实例中的某一个,这就是Nacos中的负载均衡,它跟Ribbon的负载均衡并不冲突,可以理解为Ribbon的负载均衡是发生在Nacos的负载均衡之后的。
Nacos的就近访问是什么意思?
首先,在Nacos中,一个服务可以有多个实例,并且可以给实例设置cluster-name,就是可以再进一步的给所有实例划分集群,那如果现在某个服务A想要调用服务B,那么Naocs会看调用服务A的实例是属于哪个集群的,并且调用服务B时,那就会调用同样集群下的服务B实例,根据cluster-name来判断两个实例是不是同一个集群,这就是Nacos的就近访问。
你是怎么理解CAP理论的?
CAP理论是分布式领域中最为重要的理论,CAP理论可以理解为目前硬件条件下对于分布式架构的一种限制,就是对于一个分布式系统,只能保证AP或CP,而不能同时保证CAP,首先对于一个分布式系统,P,也就是分区容错性是一定要保证的,对于一个分布式系统,得保证在网络出现分区后,分布式系统仍然能工作,所以得保证P,只不过当出现网络分区后,整个分布式系统如果想要保证数据一致性,那么就要损耗系统可用性,或者如果想要保证系统的可用性,就不能保证系统的一致性,这里说的是强一致性,因为如果网络出现问题,分布式系统中的数据就无法进行及时的同步,如果要求强一致性,那么就只能等网络好了之后,数据同步好了之后,才能提供给用户使用,同理,如果要求网络出现后问题,系统要能使用,那就可能数据会不一致,所以对于一个分布式系统,目前来说只能保证CP或AP。
Nacos中保证的是CP还是AP?
通常我们说,Nacos技能保证CP,也能保证AP,具体看如何配置,但其实只不过是Nacos中的注册中心能保证CP或AP,Nacos中的配置中心其实没什么CP或AP,因为配置中心的数据是存在一个Mysql中的,只有注册中心的数据需要进行集群节点之间的同步,从而涉及到是CP还是AP,如果注册的节点是临时节点,那么就是AP,如果是非临时节点,那么就是CP,默认是临时节点。
如何理解Nacos中的命名空间?
命名空间,也就是namespace,其实这个概念并不是Nacos中独有的,在Nacos中,不管是配置还是服务,都是属于某一个命名空间中的,默认情况下都是属于pulibc这个命名空间中的,我们可以在Nacos中新增命名空间,也就相当于开辟了另外一套存放服务和配置的地方,命名空间之间是独立的,完全不冲突的,所以我们可以利用Nacos中的命名空间来实现不同环境、不同租户之间的服务注册和配置。
你觉得注册中心应该是CP还是AP?
我觉得大部分情况下,注册中心应该是AP,如果注册中心是CP的,那么表示,当我们向注册中心注册实例或移除实例时,都要等待注册中心集群中的数据达到一致后,才算注册或移除成功,而这是比较耗时的,随着业务应用规模的增大,应用频繁的上下线,那么就会导致注册中心的压力比较大,会影响到服务发现的效率以及服务调用了,而如果注册中心是AP的,那么注册中心集群不管出现了什么情况,都是可以提供服务的,就算集群节点之间数据出现了不一致,对于业务应用而言,可能拉取到了一个已经下线了的服务节点,但是现在一般的微服务框架或组件都提供了服务容错和重试功能,也可以避免这个问题,而如果是AP,对于注册中心而言就不需要消耗太多的资源来实时的保证数据一致性了,保证最终一致性就可以了,这样注册中心的压力会小一点,另外像Zookeeper来作为注册中心,因为Zookeeper保证的就是CP,但是如果集群中如果大多数节点挂掉了,就算还剩下一些Zookeeper节点,这些节点也是不能提供服务的,所以这个也不太合适,所以综合来看,注册中心应该保证AP会更好,就像Euraka、Nacos他们默认保证的就是AP。
nacos 作为配置中心要配置什么
Nacos作为配置中心,需要配置以下内容:
- 数据源配置:包括数据库连接信息、用户名、密码等。这些信息将用于Nacos存储配置数据的数据库。
- 配置项:定义需要在Nacos中管理和存储的配置项。可以根据业务需求自定义配置项的名称、类型、默认值等。
- 集群配置:如果需要使用Nacos作为分布式配置中心,需要配置集群信息,包括集群节点的IP地址、端口号等。
- 权限配置:根据需求设置不同用户或角色的权限,以保证配置数据的安全性。
- 监控配置:可以配置Nacos的监控指标,包括监控数据的收集周期、存储方式等。
- 通知配置:可以配置Nacos在配置变更时发送通知的方式,比如邮件、短信等。
- 注册中心配置:如果需要将Nacos用作服务注册中心,需要配置相关信息,如注册中心的地址、端口等。
为什么要将服务注册到nacos?
将服务注册到Nacos有以下几个重要原因:
- 服务发现与负载均衡:Nacos可以作为服务注册中心,帮助应用实现服务发现和负载均衡。通过在Nacos上注册服务,其他应用可以方便地发现和调用该服务,提高了应用的可用性和可扩展性。
- 动态配置管理:Nacos提供了动态配置管理功能,可以动态地修改应用的配置信息,而无需重启应用。这样可以方便地对应用进行配置调整,提高了配置的灵活性和可管理性。
- 服务健康检查:Nacos可以定期检查已注册的服务的健康状态,及时发现故障或不可用的服务,并对其进行下线或重启操作。这样可以提高服务的稳定性和可靠性。
- 跨区域部署:Nacos支持多区域的服务注册和发现,可以方便地将服务部署到不同的区域,实现跨区域的服务调用和负载均衡。这对于构建分布式系统和实现高可用架构非常有价值。
总而言之,将服务注册到Nacos可以提供服务发现、负载均衡、动态配置管理、服务健康检查等功能,帮助应用实现高可用、可扩展和灵活的架构。
Nacos服务是如何判定服务实例的状态?
Nacos服务通过以下几个步骤来判定服务实例的状态:
- 心跳检测:Nacos会定期向每个注册的服务实例发送心跳请求,以检测其是否存活。如果Nacos在一段时间内没有收到实例的心跳回复,就会将该实例标记为不可用。
- 健康检查:Nacos可以配置一些健康检查的规则,例如HTTP接口的返回状态码、响应时间等。Nacos会定期调用这些接口,根据返回结果来判断服务实例的健康状况。如果实例返回的结果不符合预期的健康规则,Nacos会将其标记为不可用。
- 负载均衡:Nacos还会根据实例的负载情况来判定其状态。如果某个实例的负载过高,超过了一定的阈值,Nacos可能会将其标记为不可用,以避免过多的请求落在该实例上,导致服务质量下降。
需要注意的是,Nacos的状态判定是基于一定的策略和规则进行的,具体的判定方式可以根据实际需求进行配置和扩展。以上是一般情况下Nacos服务判定服务实例状态的方式,避免了敏感内容的提及。