- 举例说明
- 一个服务可以有多个实例,比如我们当前有4个实例,都叫做nacos-user-service服务
-
ip地址 端口 服务器所属地区 集群 192.168.xxx.xxx 18080 广东 GD 192.168.xxx.xxx 18081 广东 GD 192.168.xxx.xxx 18082 广西 GX 192.168.xxx.xxx 18083 广西 GX
-
- 所以我们可以将nacos-user-service服务根据地区划分为广东集群、广西集群这两个集群,同时每个集群下面又存在两个服务实例,这样就形成了服务->集群->实例的分级模型
- 在微服务相互访问时,我们应该尽可能的在同集群(地区)实例之间相互访问,因为局域网或者本地访问的速度较快,如果当同集群中的实例不可用时,才会访问其他集群的服务
- 一个服务可以有多个实例,比如我们当前有4个实例,都叫做nacos-user-service服务
- 那么现在我们可以在nacos的关联微服务中application.yml配置集群配置信息,示例为nacos-user-service实例的配置
-
server:port: 18080 spring:application:#应用的名称name: nacos-user-servicecloud:nacos:# Nacos Server 启动监听的ip地址和端口server-addr: 192.168.xxx.xxx:8848discovery:# nacos开启鉴权之后的用户名username: nacos# nacos开启鉴权之后的用户登录密码password: nacos# 配置服务实例的集群名称cluster-name: GD
- 除了根据上面直接修改配置文件的集群名称(cluster-name)外,我们也可以在微服务启动时设置JVM的运行参数,如下列设置运行的服务端口以及服务实例的集群名称
-
-Dserver.port=18083 -Dspring.cloud.nacos.discovery.cluster-name=GX
-
-
- 启动4个nacos-user-service实例之后,查看nacos的控制台
- 点击详细按钮
- 广东集群(GD)
- 广西集群(GX)
- 广东集群(GD)
- 点击详细按钮
- 配置nacos的集群下同集群优先的负载均衡
- 默认的注解的@LoadBalanced中ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。所以我们需要使用Nacos中提供的一个NacosRule来实现,这样就可以实现优先从同集群中挑选服务实例。以下示例为nacos-order-service
- 首先需要将nacos-order-service归属到广东集群(GD)中,然后修改负载均衡规则,配置application.yml文件如下
-
server:port: 18090 spring:application:#应用的名称,可选name: nacos-order-servicecloud:nacos:# Nacos Server 启动监听的ip地址和端口server-addr: 192.168.xxx.xxx:8848discovery:# nacos开启鉴权之后的用户名username: nacos# nacos开启鉴权之后的用户登录密码password: nacoscluster-name: GDnacos-user-service:ribbon:# 配置同集群优先的负载均衡规则NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
-
- 首先需要将nacos-order-service归属到广东集群(GD)中,然后修改负载均衡规则,配置application.yml文件如下
- nacos的控制台信息
- 默认的注解的@LoadBalanced中ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。所以我们需要使用Nacos中提供的一个NacosRule来实现,这样就可以实现优先从同集群中挑选服务实例。以下示例为nacos-order-service
- 修改集群中的权重配置实现负载均衡
- 默认情况下NacosRule是同集群内随机挑选,不会考虑机器的性能问题。但我们在实际部署中会出现服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。因此,Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。
- 在nacos的控制台,找到服务的实例,点击编辑按钮,即可修改服务实例的权重
- 如果权重修改为0,则该实例永远不会被访问
- 在nacos的控制台,找到服务的实例,点击编辑按钮,即可修改服务实例的权重
- 默认情况下NacosRule是同集群内随机挑选,不会考虑机器的性能问题。但我们在实际部署中会出现服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。因此,Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。