整合springcloud 和 springcloudalibaba,,,
版本对应关系
<dependencyManagement><dependencies><!--每个springcloud的工具都有一个版本每个springcloud alibaba的工具都有一个版本统一版本-->
<!-- 整合springcloud--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR12</version><type>pom</type><scope>import</scope></dependency>
<!-- 整合springcloud alibaba--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>0.9.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
使用nacos
<!--springcloud 里面的nacos--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId></dependency>
还有一个alibaba里面的nacos,,,区别:
alibaba里面的nacos,,不依赖于 Alibaba Cloud SDK ,,更加灵活的使用nacos
使用nacos
-
查看nacos对应的版本:
去下载对应的版本,并启动: 输入:http://localhost:8848/nacos
-
项目中引用nacos的包
- 配置文件 ,注册地址
spring:datasource:url: jdbc:mysql://localhost:3306/content_centerhikari:username: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverapplication:name: content-centercloud:nacos:discovery:server-addr: localhost:8848
- 怎么在同一个代码开启多个应用
检测nacos是否注册成功了服务
springcloud提供了一个类 DiscoveryClient
,这个类可以获取同一个服务的所有实例
- getInstance()
@RestController
public class TestController {@AutowiredDiscoveryClient discoveryClient;@GetMapping("/test")public List<ServiceInstance> setDiscoveryClient(){// 查询指定服务名字 所有的实例List<ServiceInstance> instances = discoveryClient.getInstances("user-center");// 所有服务的名字List<String> services = discoveryClient.getServices();services.forEach(System.out::println);return instances;}
}
nacos服务领域模型
namaspace : 空间上的分离
group : 将多个微服务划分到一个组里面
service : 微服务
cluster :一个微服务,可能分布在多个地区,,一个地区上的所有实例的集群
instance : 实例
创建命名空间:
点击详情:可以看到设置的集群
nacos元数据
- 通过页面配置元数据
- 通过代码设置 metaData
spring:cloud:nacos:discovery:#指定nacos server的地址server-addr: localhost:8848# 配置命名空间的id 不能写名称
# namespace: f31bc1eb-efdb-4c9f-9d51-3afcc6951d4b# 指定集群名字
# cluster-name: chengdumetadata:instance: heheversion: v1