nacos作为SpringCloud注册中心

╰+哭是因爲堅強的太久メ 2021-12-12 00:15 455阅读 0赞

一、nacos 简介

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • 动态配置服务:动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
  • 服务发现及管理:动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。
  • 态DNS服务:通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
    官网:https://nacos.io/zh-cn/index.html

二、SpringCloud 用 nacos作为注册中心

2.1 服务提供方

1) pom依赖

  1. <properties>
  2. <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
  3. <spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version>
  4. </properties>
  5. <dependencyManagement>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.cloud</groupId>
  9. <artifactId>spring-cloud-dependencies</artifactId>
  10. <version>${spring-cloud.version}</version>
  11. <type>pom</type>
  12. <scope>import</scope>
  13. </dependency>
  14. <dependency>
  15. <groupId>org.springframework.cloud</groupId>
  16. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  17. <version>${spring-cloud-alibaba.version}</version>
  18. <type>pom</type>
  19. <scope>import</scope>
  20. </dependency>
  21. </dependencies>
  22. </dependencyManagement>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-actuator</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.cloud</groupId>
  29. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  30. </dependency>

2)配置文件
application.properties

  1. #随机端口号
  2. server.port=0
  3. #nacos地址及端口
  4. spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

bootstrap.properties

  1. #服务名称
  2. spring.application.name=waiter-service

3)代码配置

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class WaiterServiceApplication implements WebMvcConfigurer {
  4. public static void main(String[] args) {
  5. SpringApplication.run(WaiterServiceApplication.class, args);
  6. }
  7. @Bean
  8. public Jackson2ObjectMapperBuilderCustomizer jacksonBuilderCustomizer() {
  9. return builder -> {
  10. builder.indentOutput(true);
  11. builder.timeZone(TimeZone.getTimeZone("Asia/Shanghai"));
  12. };
  13. }
  14. }

2.2 服务消费方

1) pom依赖

  1. <properties>
  2. <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
  3. <spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version>
  4. </properties>
  5. <dependencyManagement>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.cloud</groupId>
  9. <artifactId>spring-cloud-dependencies</artifactId>
  10. <version>${spring-cloud.version}</version>
  11. <type>pom</type>
  12. <scope>import</scope>
  13. </dependency>
  14. <dependency>
  15. <groupId>org.springframework.cloud</groupId>
  16. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  17. <version>${spring-cloud-alibaba.version}</version>
  18. <type>pom</type>
  19. <scope>import</scope>
  20. </dependency>
  21. </dependencies>
  22. </dependencyManagement>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-actuator</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.cloud</groupId>
  29. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  30. </dependency>

2)配置文件
application.properties

  1. #随机端口号
  2. server.port=0
  3. #nacos地址及端口
  4. spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

bootstrap.properties

  1. #服务名称
  2. spring.application.name=customer-service

3)代码配置

  1. @SpringBootApplication
  2. @Slf4j
  3. @EnableDiscoveryClient
  4. public class CustomerServiceApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(CustomerServiceApplication.class, args);
  7. }
  8. @Bean
  9. public HttpComponentsClientHttpRequestFactory requestFactory() {
  10. PoolingHttpClientConnectionManager connectionManager =
  11. new PoolingHttpClientConnectionManager(30, TimeUnit.SECONDS);
  12. connectionManager.setMaxTotal(200);
  13. connectionManager.setDefaultMaxPerRoute(20);
  14. CloseableHttpClient httpClient = HttpClients.custom()
  15. .setConnectionManager(connectionManager)
  16. .evictIdleConnections(30, TimeUnit.SECONDS)
  17. .disableAutomaticRetries()
  18. // 有 Keep-Alive 认里面的值,没有的话永久有效
  19. //.setKeepAliveStrategy(DefaultConnectionKeepAliveStrategy.INSTANCE)
  20. // 换成自定义的
  21. .setKeepAliveStrategy(new CustomConnectionKeepAliveStrategy())
  22. .build();
  23. HttpComponentsClientHttpRequestFactory requestFactory =
  24. new HttpComponentsClientHttpRequestFactory(httpClient);
  25. return requestFactory;
  26. }
  27. @LoadBalanced
  28. @Bean
  29. public RestTemplate restTemplate(RestTemplateBuilder builder) {
  30. return builder
  31. .setConnectTimeout(Duration.ofMillis(100))
  32. .setReadTimeout(Duration.ofMillis(500))
  33. .requestFactory(this::requestFactory)
  34. .build();
  35. }
  36. }

2.3 验证 服务注册结果

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,455人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringCloud注册中心-Nacos

    Nacos简介 Nacos是阿里巴巴开源的一款支持服务注册与发现,配置管理以及微服务管理的组件。用来取代以前常用的注册中心(zookeeper , eureka等等),以