-
Nacos下载和安装:
- Release 1.4.3 (Jan 27, 2022) · alibaba/nacos · GitHub 👈下载的链接,这里下载windows版本进行学习
- 下载后解压,运行startup.cmd,注意单机版的启动命令,默认是集群
- 此时可以访问localhost:8848/nacos访问控制台,默认用户名密码都是nacos
-
Nacos服务注册:
-
服务提供者注册:
- 父工程导入POM
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
-
子工程导入POM
<!--服务注册--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.2.1.RELEASE</version> </dependency>
-
写子工程YML
server: port: 9001 spring: application: name: nacos-payment-provider cloud: nacos: discovery: # 配置nacos的地址 server-addr: localhost:8848 #暴露端点 management: endpoints: web: exposure: include: "*"
-
主启动
@SpringBootApplication @EnableDiscoveryClient public class NacosPaymentProviderMain9001 { public static void main(String[] args) { SpringApplication.run(NacosPaymentProviderMain9001.class,args); } }
-
controller
@RestController public class NacosPaymentController { @Value("${server.port}") private String serverPort; @GetMapping("/nacos/serverport/{id}") public String getServerPort(@PathVariable("id") Integer id){ return "nacos registry,serverport:"+serverPort+"\tid是"+id; } }
-
启动后,注册成功
-
一个微服务多端口号启动的方法:
-
启动后,会产生两个实例
-
服务消费者的注册和负载:
-
消费者端导入POM
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.2.1.RELEASE</version> </dependency>
-
写YML
server: port: 8085 spring: application: name: nacos-order-consumer cloud: nacos: discovery: # 配置nacos的地址 server-addr: localhost:8848 #消费者将要去访问的微服务名称 service-url: nacos-user-service: http://nacos-payment-provider
-
主启动:
@SpringBootApplication @EnableDiscoveryClient public class OrderNacosMain8085 { public static void main(String[] args) { SpringApplication.run(OrderNacosMain8085.class,args); } }
-
config:(因为nacos discovery自带ribbon)
/** * nacos discovery 自带ribbon */ @Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
-
controller:
@RestController public class OrderNacosController { @Value("${service-url.nacos-user-service}") //不可以加static修饰,不然只会加载一次 private String SERVER_URL; @Resource private RestTemplate restTemplate; @GetMapping("/cosumer/nacos/serverport/{id}") public String getProviderServerPort(@PathVariable("id") Integer id) { String result = restTemplate.getForObject(SERVER_URL + "/nacos/serverport" + id, String.class); return result; } }
-
测试发现,是轮询的负载均衡;
-
Nacos配置中心:
- 基础配置:
- 新建module
- 导入POM
<!--服务注册--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.2.1.RELEASE</version> </dependency> <!-- 配置中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
建bootstrap.yml
server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: # 注册进nacos discovery: server-addr: localhost:8848 config: # nacos作为配置中心的地址 server-addr: localhost:8848 # 指定yaml格式的配置 file-extension: yml
-
建application.yml
spring: profiles: # 表示开发环境 active: dev
-
主启动
@SpringBootApplication @EnableDiscoveryClient public class ConfigNacosMain3377 { public static void main(String[] args) { SpringApplication.run(ConfigNacosMain3377.class,args); } }
-
controller
@RestController //支持nacos动态刷新 @RefreshScope public class ConfigNacosController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo(){ return configInfo; } }
-
在nacos中进行配置:
-
通过dataId进行匹配,格式为:${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
-
启动后可以获取。
-
此时修改nacos中的配置文件,接口访问时会自动刷新。
-
分类配置: - Namespace, Group, Cluster, Instance
- group:创建属于dev_group和test_group的配置配置文件
- 在配置文件中创建一个group:
cloud: nacos: # 注册进nacos discovery: server-addr: localhost:8848 config: # nacos作为配置中心的地址 server-addr: localhost:8848 # 指定yaml格式的配置 file-extension: yml group: TEST_GROUP #${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
spring: profiles: active: info
-
通过这个配置就可以获取到TEST_GROUP中的配置信息
- namespace:创建dev和test的命名空间
- 在dev的namespace下面创建三个group
- 在配置文件中,配置namespace的id:
spring: application: name: nacos-config-client cloud: nacos: # 注册进nacos discovery: server-addr: localhost:8848 config: # nacos作为配置中心的地址 server-addr: localhost:8848 # 指定yaml格式的配置 file-extension: yml group: TEST_GROUP namespace: c62a89d6-96d9-40d4-a973-c3e4c77d4e3e
-
nacos集群:
- 切换mysql数据库,找到执行脚本,在mysql中执行
- 在该配置文件中进行配置:
- 重启nacos,此时连接上了mysql数据库,所以之前的数据已经不存在了
- 安装linux版本的nacos
- 集群的配置:
- 修改nacos脚本,从而修改端口;