Spring Cloud Alibaba—服务注册、发现、管理中心Nacos

Spring Cloud 存在 Spring Cloud1.x和Spring Cloud2.x 版本,目前主流使用2.x版本,因为服务注册组件 eureka 的停止维护,所以目前很多公司都开始使用其他的替代方案,而阿里系的 Spring-Cloud-Alibaba 成了微服务生态一个主流解决方案。目前我所在公司也准备使用阿里这套方案进行微服务开发。本文主要介绍服务注册中心 nacos 的使用入门

概念

什么是Nacos?

Nacos 致力于帮助您发现、配置管理微服务。 Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 主要特性(目前我使用到的):

  • 服务发现和服务健康监测
    Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
    Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求 。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量
  • 动态配置服务
    Nacos提供对服务的动态配置,即支持动态修改服务配置文件 application.yml 中的属性,利用此特性我们可以动态配置Spring Cloud Gateway动态路由。

快速安装

  • 安装运行Nacos
    安装教程查看nacos官网,推荐使用编译后压缩包安装方式,自己编译可能报错。
    安装以后运行或关闭软件
    Windows直接运行 startup.cmdshutdown.cmd
    linux中执行脚本 sh startup.sh -m standalonesh shutdown.sh
  • 检测安装
    访问 http://ip:port/nacos ,打开 nacos 后台主页说明安装成功

整合Spring Cloud生态

  • 启动服务发现

    服务注册实现:新建项目provider,添加依赖 spring-cloud-starter-alibaba-nacos-discovery

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

在启动类加上注解 @EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

}
复制代码

配置 application.yml 文件

spring:
  application:
    name: service-provider
  cloud:
    nacos:
      discovery:
        server-addr: 10.0.0.205:8848


server:
  port: 9005

feign:
  sentinel:
    enabled: true
复制代码

配置结束,启动provider,查看nacos管理后台查看服务是否注册成功(被检测到)

Spring Cloud Alibaba---服务注册、发现、管理中心Nacos
  • 启动服务配置

    Spring Cloud Alibaba Nacos ConfigSpring Cloud Config ServerClient 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容

    服务配置功能让我们可以通过 Nacos 后台去修改微服务配置文件或者在此处来写,无需重启项目。我们以provider为例来检测 Nacos 服务配置的强大功能。

    此处我们以获取配置文件中 nanshen.name 的值为例

1、服务端初始化

在Nacos配置管理列表里添加一个服务配置:

Spring Cloud Alibaba---服务注册、发现、管理中心Nacos
Spring Cloud Alibaba---服务注册、发现、管理中心Nacos

配置好以后点击发布即可!

2、客户端初始化

因为我们已经把服务配置放到Nacos上进行动态管理,所以我们就不需要在服务中去维护配置文件application.yml了,我们可以把它删除掉,但是存在一个问题,我的微服务怎么去发现Nacos中的配置呢,所以此时我们仍然需要一个bootstrap.properties配置文件用于识别Nacos中所在服务器中的配置文件。

Spring Cloud Alibaba---服务注册、发现、管理中心Nacos

3、测试配置

编写一个接口返回配置文件中user.name值:此处需要使用
ConfigurableApplicationContext 类,不能使用
@Value 注解读取,因为
@Value 为一次性读取,读取一次后会把数据存到内存,不会再去读取配置环境中的值,所以如果要实现动态配置的话就不能使用
@Value

注解。

@RestController
public class TestController {

    @Autowired
    private ConfigurableApplicationContext configurableApplicationContext;

    @GetMapping("/get_name")
    public String getNanShenName(){
        String username=configurableApplicationContext.getEnvironment().getProperty("user.name");
        return username;
    }
}
复制代码
Spring Cloud Alibaba---服务注册、发现、管理中心Nacos

测试动态配置:在Nacos对应的配置文件中修改user.name值为nanshen,然后发布,可以在微服务后台日志看到user.name值被修改。

Spring Cloud Alibaba---服务注册、发现、管理中心Nacos
Spring Cloud Alibaba---服务注册、发现、管理中心Nacos

如图可以看到实现了动态修改配置文件功能,此功能对于网关动态路由技术有非常大的意义。

更新中…

原文 

https://juejin.im/post/5c89ca09f265da2da7720f22

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring Cloud Alibaba—服务注册、发现、管理中心Nacos

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址