注意
1,命名空间将服务隔离:不同命名空间的服务不能调用,若调用则会提示(Load balancer does not have available server for client:“负载均衡没有可用于客户端的服务器”)
一,Nacos配置
Nacos的默认端口号是8848
在conf文件夹下的application.properties中可以修改配置
Nacos远程请求配置的优先级
①:直接写的配置优先级最高----> 扩展配置 ----> 共享配置
②:当某一条属性在三个配置中都有时 按照优先级覆盖
③:扩展配置的优先级 ext-config[X] X越大优先级越高
spring:
application:
name: service1
###########Nacos配置的优先级
# 直接写的配置优先级最高----> 扩展配置 ----> 共享配置
# 当某一条属性在三个配置中都有时 按照优先级覆盖
# 多个扩展配置的优先级 ext-config[X] X越大优先级越高
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 #配置中心的IP地址
#没有配置具体的dataId 而是通过拼接获取
file-extension: yaml #获取dataId 根据你的applicationName加上此处的后缀设置就是dataId 即: service1.yaml
namespace: 925f061a-c27a-4636-8e0d-9e6a08bddd44 #命名空间的ID
group: TEST_GROUP #分组
########### 扩展dataId 即:获取多个配置文件###########
#扩展配置1 在默认group 并且不会动态刷新
ext-config[0]:
data-id: etc-config-common1.properties
#扩展配置2 有分组 但同样不会动态刷新
ext-config[1]:
data-id: etc-config-common2.properties
group: GLOBALE_GROUP
#扩展配置2 有分组 可以动态刷新
ext-config[2]:
data-id: etc-config-common3.properties
group: REFRESH_GROUP
refresh: true
#########共享配置文件##########也可理解为一次扩展多个?
#!!!!!!!!!!!!!!!!!!!注意这种方式只支持在DEFAULT_GROUP中的配置文件,其他自定义分组的文件是读取不到的,所以多个分组建议用上面的
# #设置你要共享的配置的dataId
# shared-dataids: etc-config-common1.properties,etc-config-common2.properties,etc-config-common3.properties
# #开启那些配置的动态刷新
# refreshable-dataids: etc-config-common1.properties,etc-config-common2.properties,etc-config-common3.properties
二,Nacos集群的配置与启动
首先Nacos集群的启动命令为:startup.cmd -m cluster
在Nacos集群中每一个Nacos的配置文件application.properties中都需要指定自己的ip地址
nacos.inetutils.ip-address=127.0.0.1
其次在conf文件夹下有一个名为cluster.conf.example的文件
将他的名字改为cluster.conf,之后再里面写上集群中所有Nacos服务节点的IP地址
#it is ip
#example
127.0.0.1:8848
127.0.0.1:8849
127.0.0.1:8850
Nacos集群也会自动选举出一个Leader,当该Leader挂掉后并不影响集群,他们会自动重选一个Leader
三,Nacos服务发现
①:每一个生产者和消费者的身份都可以自由灵活的转换,只需要修改添加配置即可,
Nacos服务发现配置
server:
port: 56020
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery: #设置服务发现中心的地址
server-addr: 127.0.0.1:8848
# 将该服务注册到dev 下面两个不写的话默认注册到public空间
namespace: 925f061a-c27a-4636-8e0d-9e6a08bddd44
cluster-name: DEFAULT #默认分组
Nacos消费者——>服务列表——>负载均衡——>Feign远程调用——>Nacos生产者
②:Nacos服务中心默认的负载均衡模式为:轮询—即:ABAB…一人一次
③:在Nacos服务中心中点击服务列表—>详情,可以对服务进行上线or下线,下线的服务将无法使用,重新点击上线即可继续使用
Feign远程调用
/*
* Feign远程调用
* 即:创建一个接口用来作为Feign的客户端
* 在接口名注解 @FeignClient 来表示他是一个远程调用客户端 value是服务的名称 在nacos配置中心服务列表中的服务名称
*接口中每一个方法就是你需要调用的生产者的方法,只需要从生产者中copy过来就行
* */
@FeignClient(value = "nacos-provider")
public interface DiscoveryFeignClient {
@GetMapping("/service")
public String service1();
}
在Controller中使用Feign:
//动态注入配置 Feign远程调用客户端
@Autowired
DiscoveryFeignClient discoveryFeignClient;
@GetMapping("/service")
public String getProviderService(){
//使用Feign远程调用
String service1 = discoveryFeignClient.service1();
return "Consumer Service"+"|"+service1;
}