🥚今日鸡汤🥚
当你最倒霉地时候一定要扛住。
因为,那正是你运气该上升的时候。
——《一人之下》
目录
🧈1.Nacos介绍
🧂2.Nacos服务提供者注册
🥓3.Nacos服务消费者
🌭4.Nacos作为配置中心
🍿5.命名空间+Group+Data Id
- Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。
- 实现微服务架构中的服务注册与发现、动态配置管理、服务健康监测等功能。
- Nacos就是注册中心+配置中心的组合
- 替代Eureka做服务注册中心
- 替代Config做服务配置中心
父工程添加pom:
com.alibaba.cloud spring-cloud-alibaba-dependencies2.2.0.RELEASE pom import
子工程pom:
org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-actuatororg.springframework.boot spring-boot-starter-testorg.projectlombok lombokcom.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
server: port: 9002 spring: application: name: ncaos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 management: endpoints: web: exposure: include: '*'
@SpringBootApplication @EnableDiscoveryClient public class PaymentMain9002 { public static void main(String[] args) { SpringApplication.run(PaymentMain9002.class); } }
启动9001,9002,web端访问Nacos,说明访问成功
org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-actuatororg.springframework.boot spring-boot-starter-testorg.projectlombok lombokorg.example cloud-api-commons1.0-SNAPSHOT com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
server: port: 83 spring: application: name: nacos-order-consumer cloud: nacos: discovery: server-addr: localhost:8848
@SpringBootApplication @EnableDiscoveryClient public class OrderNacosMain83 { public static void main(String[] args) { SpringApplication.run(OrderNacosMain83.class); } }
@Configuration public class MyConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } }
@RestController public class OrderNacosController { private static final String SERVER_URL="http://nacos-payment-provider"; @Autowired private RestTemplate restTemplate; @GetMapping("/consumer/order/{id}") public String getPayment(@PathVariable("id")Integer id){ return restTemplate.getForObject(SERVER_URL+"/payment/nacos/"+id,String.class); } }
org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-actuatororg.springframework.boot spring-boot-starter-testorg.projectlombok lombokorg.example cloud-api-commons1.0-SNAPSHOT com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discoverycom.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
1.要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。
2.springboot中配置文件的加载是存在优先级顺序的, bootstrap优先级高于application
server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 #Nacos注册中心地址 config: server-addr: localhost:8848 #Nacos作为配置中心地址 file-extension: yml #指定yml格式的配置 #${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension} #nacos-config-client-dev.yml
spring: profiles: active: dev #表示开发环境
根据公式,配置Data ID
${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
@SpringBootApplication @EnableDiscoveryClient public class NacosConfigClientMain3377 { public static void main(String[] args) { SpringApplication.run(NacosConfigClientMain3377.class); } }
@RestController @RefreshScope//保持动态刷新 public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo(){ return configInfo; } }
浏览器访问controller接口
与Nacos配置里一样,说明成功~
这三者的关系类似于Java里面的package名和类名,最外层的Namespace是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象
Namespace=public,Group=DEFAULT_GROUP,默认Cluster是DEFAULT
spring: profiles: #active: dev #表示开发环境 active: test #表示测试环境
server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 #Nacos注册中心地址 config: server-addr: localhost:8848 #Nacos作为配置中心地址 file-extension: yml #指定yml格式的配置 group: TEST_GROUP #分组 namespace: 277386e3-b431-4b12-a73e-222f61304889 #命名空间
spring: profiles: active: dev #表示开发环境 #active: test #表示测试环境 #active: info #表示测试环境