SpringCloud集成Nacos服务发现

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: SpringBoot、SpringCloud微服务,集成Nacos完成服务注册与服务发现

title: SpringCloud集成Nacos实现服务发现
date: 2020-01-12 09:05:42
categories: Nacos

description: SpringCloud集成Nacos实现服务发现

1. 目录

NACOS

2. 服务发现

本章节我通过在SpringCloud中写服务者(Provider,端口:9001)、消费者(Consumer,端口:9002),来演示服务发现。

服务中消费者、服务提供者都需要添加这个依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.1. 服务提供者-Provider

编写这个,我们基于
SpringCloud集成Nacos实现配置管理 中的案例来改造

2.1.1. 添加POM依赖包

<dependencies>
    <!--通用包依赖,一些Entity、Dao等-->
    <dependency>
        <groupId>xyz.wongs.weathertop</groupId>
        <artifactId>persistence-domain</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!--Nacos配置中心-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <!--步骤1、这是新增:Nacos服务发现-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>

2.1.2. resources文件夹

2.1.2.1. bootstrap.properties文件

//步骤2、服务名改一下
spring.application.name=discovery-nacos-provider

spring.profiles.active=dev
spring.cloud.nacos.config.group=CLOUD_GROUP
spring.cloud.nacos.config.server-addr=192.168.147.132:8848
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=yml
management.endpoints.web.exposure.include=*
//步骤3、新增配置
spring.cloud.nacos.discovery.server-addr=192.168.147.132:8848

2.1.2.2. application.yml文件

这里设定端口9001

server:
  port: 9001

mybatis:
  mapperLocations: classpath:mapper/**/*.xml

2.1.3. 新增配置项

将Data Id中cofig-nacos-dev.yml配置复制一份,重命名为discovery-nacos-provider-dev.yml。

discovery-nacos-provider-dev.yml

2.1.4. 应用入口

@RefreshScope
@MapperScan(basePackages = {"xyz.wongs.weathertop.**.mapper"})
@EnableDiscoveryClient
@SpringBootApplication
public class DiscoveryProviderApp {
    public static void main(String[] args) {
        SpringApplication.run(DiscoveryProviderApp.class,args);
    }
}

2.1.5. 启动项目

在浏览器打开地址:http://localhost:9001/locations/0

验证服务

生产者启动成功

再打开Nacos控制台“服务管理->服务列表”,有discovery-nacos-provider这个服务名,说明服务已经注册到Nacos。

服务提供者

2.2. 源码

消费者Github演示源码 ,记得给Star

3. 服务消费者

3.1. resources文件夹

3.1.1. bootstrap.properties

spring.application.name=discovery-nacos-consumer
spring.profiles.active=dev
spring.cloud.nacos.discovery.server-addr=192.168.147.132:8848
management.endpoints.web.exposure.include=*

3.1.2. application.yml

我们设定端口9002

server:
  port: 9002

3.2. Bean注册

我们利用SpringBoot管理Bean的便捷性,来对RestTemplate实例进行管理,利用它的LoadBalanced注解来实现负载均衡。

@EnableDiscoveryClient
@SpringBootApplication
public class DiscoveryConsumerrApp {
    public static void main(String[] args) {
        SpringApplication.run(DiscoveryConsumerrApp.class,args);
    }

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

3.3. 调用生产者

@RestController
@RequestMapping(value = "/locations")
public class LocationController extends BaseController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "/consumer/{lv}")
    public ResponseResult echo(@PathVariable(value = "lv") Integer lv) {
        return restTemplate.getForObject("http://discovery-nacos-provider/locations/" + lv, ResponseResult.class);
    }
}

restTemplate.getForObject(String url, Class responseType, Object... uriVariables)

  • url:地址名,这里一定要填写Nacos服务列表中的服务名
  • responseType: 返回数据类型,由于我使用了统一类型来返回数据,这里大家根据实际内容自行更改

3.4. 验证服务

打开浏览器,输入我们的地址:http://localhost:9002/locations/consumer/0 ,
控制台中日志有刷新:

2019-12-15 18:19:53.140  INFO 22048 --- [tp2060799061-34] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client discovery-nacos-provider initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=discovery-nacos-provider,current list of Servers=[192.168.68.235:9001],Load balancer stats=Zone stats: {unknown=[Zone:unknown;    Instance count:1;    Active connections count: 0;    Circuit breaker tripped count: 0;    Active connections per server: 0.0;]
},Server stats: [[Server:192.168.68.235:9001;    Zone:UNKNOWN;    Total Requests:0;    Successive connection failure:0;    Total blackout seconds:0;    Last connection made:Thu Jan 01 08:00:00 CST 1970;    First connection made: Thu Jan 01 08:00:00 CST 1970;    Active Connections:0;    total failure count in last (1000) msecs:0;    average resp time:0.0;    90 percentile resp time:0.0;    95 percentile resp time:0.0;    min resp time:0.0;    max resp time:0.0;    stddev resp time:0.0]
]}ServerList:org.springframework.cloud.alibaba.nacos.ribbon.NacosServerList@66588ff
2019-12-15 18:19:54.121  INFO 22048 --- [erListUpdater-0] c.netflix.config.ChainedDynamicProperty  : Flipping property: discovery-nacos-provider.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647

查看数据!

3.5. 源码

消费者Github演示源码 ,记得给Star

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
17天前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
243 14
|
4月前
|
存储 Java Nacos
Spring Cloud+Nacos+KMS 动态配置最佳实践
本文讲述了 Spring Cloud 应用中结合 Nacos 实现了运行期配置动态更新的功能,以及在此基础上结合 KMS 在不改动代码的情况下对应用使用的敏感配置进行保护,解决将配置迁移到 Nacos 中可能存在的数据安全顾虑,并对其底层工作原理做了简单介绍。
925 64
|
2月前
|
Java Spring 容器
springcloud-config客户端启用服务发现报错找不到bean EurekaHttpClient
解决 Spring Cloud Config 客户端启用服务发现时报错找不到 bean `EurekaHttpClient` 的问题,主要涉及版本兼容性、依赖配置和正确的配置文件设置。通过检查依赖版本、添加必要的依赖项、配置文件的正确性以及启用服务发现注解,可以有效解决此问题。确保日志中没有其他错误信息也是关键步骤之一。通过这些方法,可以确保 Spring Cloud Config 与 Eureka 客户端正常工作。
48 6
|
2月前
|
监控 Java Nacos
使用Spring Boot集成Nacos
通过上述步骤,Spring Boot应用可以成功集成Nacos,利用Nacos的服务发现和配置管理功能来提升微服务架构的灵活性和可维护性。通过这种集成,开发者可以更高效地管理和部署微服务。
331 17
|
3月前
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
94 8
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
3月前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
428 19
|
4月前
|
API Docker 微服务
Ocelot集成Consul实现api网关与服务发现
本文介绍了如何在.NET微服务架构中集成API网关Ocelot和Consul服务发现。首先通过Docker安装并配置Consul,接着在GoodApi项目中实现服务的自动注册与注销,并配置健康检查。然后,通过修改Ocelot的配置文件`ocelot.json`和`Program.cs`,实现基于Consul的服务发现,确保API请求能够正确路由到后端服务。最后,解决了服务解析时可能出现的问题,确保服务的IP地址而非节点名称被正确解析。
77 0
Ocelot集成Consul实现api网关与服务发现
|
5月前
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
330 1
Springcloud Alibaba + jdk17+nacos 项目实践
|
5月前
|
负载均衡 算法 Java
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
40岁老架构师尼恩分享了关于SpringCloud核心组件的底层原理,特别是针对蚂蚁集团面试中常见的面试题进行了详细解析。内容涵盖了Nacos注册中心的AP/CP模式、Distro和Raft分布式协议、Sentinel的高可用组件、负载均衡组件的实现原理等。尼恩强调了系统化学习的重要性,推荐了《尼恩Java面试宝典PDF》等资料,帮助读者更好地准备面试,提高技术实力,最终实现“offer自由”。更多技术资料和指导,可关注公众号【技术自由圈】获取。
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
|
3月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
700 81
高效搭建Nacos:实现微服务的服务注册与配置中心

热门文章

最新文章