Nacos配置(服务注册与发现)
Nacos配置(服务注册与发现)
Nacos简介
Nacos = (Dynamic) Naming and Configuration Service 注册中⼼+配置中⼼,也就是代替Eureka作为服务注册中⼼,替代Config作为配置中⼼,替代Bus作为消息总线。
Nacos是⼀个更易于构建云原⽣应⽤的动态服务发现、配置管理和服务管理平台。
Nacos主要提供的四种功能
服务发现和服务运⾏状况检查
Nacos使服务易于注册⾃⼰并通过DNS或HTTP接⼝发现其他服务。 Nacos还提供服务的实时运⾏状况检查,以防⽌向不正常的主机或服务实例发送请求。
动态配置管理
动态配置服务使您可以在所有环境中以集中和动态的⽅式管理所有服务的配置。 Nacos消除了在更新配
置时重新部署应⽤程序和服务的需求,这使配置更改更加有效和敏捷。动态DNS服务
Nacos⽀持加权路由,使您可以更轻松地在数据中⼼内的⽣产环境中实施中间层负载平衡,灵活的路由策略,流控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS的服务发现,并防⽌应⽤程序耦合到特定于供应商的服务发现API。
服务和元数据管理
Nacos提供了易于使⽤的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运⾏状况和指标统计信息。
Windows中Nacos下载及安装
下载之后,进⼊bin⽬录,d -m standalone启动单机模式。
作为服务注册中⼼演⽰
新建服务模块
新建模块:cloudalibaba-provider-payment9001,引⼊依赖:
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
编写yml配置
server:
port: 9001
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
主启动类
@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain9001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain9001.class, args);
}
}
Controller接⼝
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@GetMapping(value = "/payment/nacos/{id}")
public String getPayment(@PathVariable("id") Integer id) {
return "nacos registry, serverPort: " + serverPort + "\t id" + id;
}
}
测试
启动nacos,启动9001服务,访问localhost:8848/nacos。
服务已经成功注册进nacos注册中⼼。
演⽰负载均衡
仿照9001模块再建⼀个9002模块,具体步骤就省略了,端⼝号改⼀改就可以。接着依次启动nacos,9001,9002,观察nacos服务注册中⼼的情况:
nacos-payment-provider服务下包含了两个实例。
新建消费者模块
新建cloudalibaba-consumer-nacos-order83,依旧引⼊依赖:
<!--SpringCloud ailibaba nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
nacos默认⽀持负载均衡:是因为该依赖已经集成ribbon,故天然⽀持。
编写yml配置
server:
port: 83
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
nacos-user-service: nacos-payment-provider
主启动类
@EnableDiscoveryClient
@SpringBootApplication
public class OrderNacosMain83 {
public static void main(String[] args) {
SpringApplication.run(OrderNacosMain83.class, args);
}
}
Controller接⼝
@RestController
@Slf4j
public class OrderNacosController {
@Resource
private RestTemplate restTemplate;
@Value("${service-url.nacos-user-service}")
private String serverURL;
@GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id) {
ForObject(serverURL + "/payment/nacos/" + id, String.class);
}
}
配置类
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
测试⼀下
微服务注册中心有哪些启动nacos,80消费者,9001,9002服务提供模块。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。