简介
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理官方文档
搭建步骤
-
nacos.client(springboot)
- 引依赖
<!--子工程引入--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--父工程管理version--> <properties> <springcloudalibaba.version>0.9.0.RELEASE</springcloudalibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${springcloudalibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>- 加注解
无- 加配置
# yml对缩进有严格的要求,务必一致 spring: cloud: nacos: discovery: # 指定nacos server的地址 server-addr: localhost:8848 application: # 服务名称尽量用-,不要用_,不要用特殊字符 name: user-center -
nacos.server
- 从spring-cloud-alibaba-dependencies找到client版本
<nacos.client.version>1.0.0</nacos.client.version>tar -xvf nacos-server-$version.tar.gz cd ./nacos/bin sh startup.sh -m standalone- http://localhost:8848/nacos/index.html
- 默认账号密码nacos/nacos

使用
原生写(可以通过整合ribbon,feign优化)
...
private final DiscoveryClient discoveryClient;
...
List<ServiceInstance> instances = discoveryClient.getInstances("lock-center");
String url = instances.stream()
.map(instance -> instance.getUri() + "/lock/test/{id}")
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("没有当前实例"));
List<String> urls = instances.stream()
.map(instance -> instance.getUri() + "/lock/test/{id}")
.collect(Collectors.toList());
int i = ThreadLocalRandom.current().nextInt(urls.size());
log.info("请求的URl:{}",urls.get(i));
TblCar tblCar = restTemplate.getForObject(urls.get(i), TblCar.class, 4000002L);
领域模型
- 层级
- Namespace:实现隔离,默认public
- Namespace不同的服务无法互相调用
- Group:不同服务可以分到同一组,默认DEFAULT-GROUP
- Service:微服务
- Cluster:对指定微服务的虚拟划分,默认DEFAULT
- Instance:微服务实例
- Namespace:实现隔离,默认public

元数据
- 级别
- 服务级别
- 集群级别
- 实例级别
- 设置
- 控制台
- yml
# yml对缩进有严格的要求,务必一致 spring: cloud: nacos: discovery: metadata: version: v1