前言


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-providercloud:nacos:discovery:server-addr: 10.0.0.205:8848server:port: 9005feign:sentinel:enabled: true
复制代码

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

   

  • 启动服务配置
      Spring Cloud Alibaba Nacos ConfigSpring Cloud Config ServerClient 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的bootstrap 阶段,配置被加载到Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容
      服务配置功能让我们可以通过Nacos后台去修改微服务配置文件或者在此处来写,无需重启项目。我们以provider为例来检测Nacos服务配置的强大功能。
    此处我们以获取配置文件中nanshen.name的值为例

  1、服务端初始化
  在Nacos配置管理列表里添加一个服务配置:

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

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

@RestController
public class TestController {@Autowiredprivate ConfigurableApplicationContext configurableApplicationContext;@GetMapping("/get_name")public String getNanShenName(){String username=configurableApplicationContext.getEnvironment().getProperty("user.name");return username;}
}
复制代码

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

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

示例源码更新中...

转载于:https://juejin.im/post/5c89ca09f265da2da7720f22

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

  1. Spring Cloud Alibaba —— 服务注册与配置中心

  2. 【Spring Cloud Alibaba】Spring Cloud Alibaba 服务注册与发现实践

    1. 简介 服务注册与发现是微服务架构体系中最关键的组件之一.如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于服务的动态扩缩容.Nacos Disc ...

  3. Spring Cloud之服务注册与发现机制

    一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...

  4. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  5. Spring cloud实现服务注册及发现

    为什么80%的码农都做不了架构师?>>>    服务注册与发现对于微服务系统来说非常重要.有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访 ...

  6. 用ZooKeeper做为注册中心搭建基于Spring Cloud实现服务注册与发现

    前提: 先安装好ZooKeeper的环境,搭建参考:http://www.cnblogs.com/EasonJim/p/7482961.html 说明: 可以再简单的理解为有两方协作,一个是服务提供这 ...

  7. Spring Cloud Alibaba系列使用(二)----Nacos注册中心

    1|1Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spri ...

  8. Spring Cloud Alibaba 服务消费者调用 nacos 服务报错:java.net.UnknownHostException: xxx

    目录 1. 服务消费者启动类 1.1. 服务消费者 controller 2. 服务提供者启动类 2.1. 服务提供者 controller 3. 服务报错 4. nacos 信息 5. 解决思路 5 ...

  9. spring cloud eureka服务注册和调用

    SPRING INITIALIZR构建工程 spring boot 可通过SPRING INITIALIZR构建项目 访问SPRING INITIALIZR官网,填写项目相关信息后,生成项目. 将下载 ...

  10. Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 通过上一篇<使用Sentinel实现接口限流>的介绍,相信大家对Sentinel已经有了初 ...

最新文章

  1. 干货丨机器学习?人工智能?还在傻傻分不清楚?
  2. 【原创】gooogleman亲自参与设计的三星Cortex A8 S5pv210 之Sate210核心板硬件用户手册(作者:gooogleman)...
  3. 限制部分Postfix用户只能内部收发的例子(完整版)
  4. mysql 高性能引擎_《高性能MySQL》笔记1-MySQL架构与引擎
  5. 【oracle】创建DBLink
  6. mybatis学习(36):动态sql-set
  7. 关于.c和.h 和定义变量的问题
  8. 深度佳能MP4视频恢复软件 v8.1.0
  9. 02 掌握变量的定义和使用方法 1214
  10. 实战:基于自定义注解实现自定义框架Spring
  11. linux文件重定向用什么命令实现,Linux基础:文件描述符与重定向
  12. Maven下载JasperReports报错Could not find artifact com.lowagie:itext:pom:2.1.7.js6 in alimaven
  13. 麻将游戏简介firefly游戏框架介绍
  14. 【解决方案】解除微信群二维码100人扫码限制和7天有效期!
  15. 极值点、驻点、拐点的区别-----专升本
  16. 【U盘检测】为了转移压箱底的资料,买了个2T U盘检测仅仅只有47G~
  17. python必背100源代码下载-100行Python代码实现一款高精度免费OCR工具
  18. 诱惑视频木马样本态势
  19. [CF14E]Camels
  20. python thinker(菜单,滚动条,回调函数,对话框)

热门文章

  1. set firefox new tab url
  2. Java学习笔记—接口
  3. File.documentsDirectory抛出异常Error #2014问题解决方案
  4. 创建oracle发邮件job导致的故障
  5. 【转】在Java中连接字符串时是使用+号还是使用StringBuilder StringBuffer 加号
  6. ABP Zero示例项目问题总结
  7. 模拟实现常用字符串函数
  8. (tomcat访问不了的两种解决方法)Bad Request(Invalid Hostname)
  9. 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!
  10. The Road to learn React书籍学习笔记(第三章)