Nacos 服务注册中心

解决:Nacos 2.x版本的spring.cloud.nacos.server-addr不生效问题,以及nacos地址一直为localhost:8848问题 解决:Nacos 2.x版本的spring.cloud.nacos.server-addr不生效问题,以及nacos地址一直为localhost:8848问题[Request nacos server failed][Client not connected,current status:STARTING] 阅读详情

Nacos概述:

                Nacos是一个用于服务注册与发现,配置管理的平台。是阿里巴巴基于spring-cloud创造,此组件不仅提供了注册中心,还具备配置中心的功能。

官方教程网址:https://nacos.io/zh-cn/docs/quick-start.html

下载网址:Releases · alibaba/nacos · GitHub

当我们使用Nacos时需要进行相关的配置:

        确保电脑的JAVA_HOME环境变量。确保MySQL版本在5.7以上 或者MariaDB10.5以上。

Nacos链接数据库:

        1.创建一个数据库

初始化配置:打开操作系统命令行,登陆mysql 然后执行如下指令:

 

 通过上面的网址下载获取sql。并执行到数据库中

source d:/nacos-mysql.sql 

 成功后会创建一个nacos_config数据库,打开数据库会看到一些表,例如:

        2.在/nacos/conf/application.properties里打开默认配置,并基于你当前环境配置要链接的数据库。切连接的数据库必须能对上。

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

Nacos服务启动与访问:

Nacos端口号默认是:8848

        通过nacos的bin目录通过指令进行启动:

        Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):

./startup.sh -m standalone

        Windows启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

Idea添加 Nacos

默认账号密码都是nacos/nacos

Idea中进行配置注册NacosServe(server指web服务,服务的调用者和提供则都需要在其进行注册服务)

服务提供者添加依赖:

<!--    基础springboot 工程的web服务依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
<!--    基于alibaba的nacos实现服务注册管理,当添加了此依赖后,系统启动时 会向nacos
        服务发送一些心跳包,进行服务注册 一般5秒会发送一次。服务的注册和发现-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>    
	添加feign组件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
<!--        添加nacos配置中心依赖,此依赖添加后,项目会从nacos获取配置信息-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

 在配置文件application.yml或者(application.properties)实现服务的注册:

#配置端口号
server:
  port: 8090

#管理数据源
spring:
  application:   #链接--------nacos
    name: sso-springbootCS  #服务注册时,服务名必须配置
  cloud:
    nacos:
      discovery:
        server-addr: http://192.168.232.126:8848   # nacos注册中心地址  从哪里去查找服务
      config:
        server-addr: http://192.168.232.126:8848   # nacos配置中心地址
        group: DEV_GROUP   # 指定分组名
        file-extension: yml  # 指定yaml格式的文件配置
        #namespace: # 命名空间
        enabled: false   #关闭报错

之后创建启动类,启动并刷新nacos。检测服务是否注册成功:

 远端服务之间的调用:

通过spring中的RestTemplate对象进行调用。

1.在配置启动类的下面进行定义一个@Bean 得到RestTemplate对象。

    @Bean  //提交给容器进行管理
    @LoadBalanced //通过这个注解描述对象。底层会调用一个拦截器并进行负载均衡的算法
    public RestTemplate restTemplate01(){
        return new RestTemplate();
    }

2.在业务层进行注入,并进行调用服务。得到服务提供方的地址URL 及 类型

返回调用服务的地址和类型就可以得到对应的服务

 @Autowired
    private RestTemplate restTemplate01;

    @Value("${spring.application.name:sca-consumer}")
    String appname1;//获得执行的服务对象的名字

    @GetMapping("/consumer")
    public String doConsumer01(){
                //通过骨架给其赋值    会自动拦截 并且根据要进行调用的服务的名字匹配端口号和id
        String url = String.format("http://sca-provider/provider/echo/%S",appname1);
        return restTemplate01.getForObject(url, String.class);
    }

服务器负载均衡设计及实现

使用@LoadBalanced底层就会自动拦截增强,使用负载均衡算法。

当我们使用此注解描述ResrTemplate对象时,系统底层会基于对象使用拦截器进行拦截,然后进行功能增强,拦截器(Interceptor),其增强是基于LoadBalancerClient对象进行服务实例获取,而这个服务实例获取的过程,底层会采用负载均衡。

负载均衡的七种策略:

基于Irule 得到其中的方法。

默认的是轮训策略  可以在yml文件种进行配置所要的负载均衡的策略。

负载均衡的算法配置:

#sca-provider服务负载均衡配置 赋予服务提供方策略
sca-provider:
  ribbon: #负载均衡组件,是ribbon组件提供了Irule接口及相关实现
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

Feign远程服务调用

Feign的作用:Fegin是一种声明式Web服务客户端。底层封装了对RestTemplate技术的应用,通过Feign可以简化服务调用方对服务提供方的调用实现。Feign默认已经启用负载均衡和重试。

Feign集成Ribbon:

Ribbon提供负载均衡和重试的功能

Ribbon的重试:

调用后台服务失败(异常,宕机,超时)可以自动发起重试调用

·ribbon.MaxAutoRetries

单台服务器的重试次数

·ribbon.MaxAutoRetriesNextServer

更换服务器的次数

·ribbon.ReadTimeout

超时时间,默认1000

·riboon.ConnectTimeout

与后台服务器简历连接的超时时间,默认1000

·ribbon.OkToRetryOnAllOperations

是否对所有类型请求都重试,默认只对Get请求重试

需要在服务的调用方添加Fegin的依赖:

<!--        添加feign依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

1.在服务的调用方添加表示启用Fegin的注解:

@EnableFeginClients

//进行配置启动类
@SpringBootApplication
@EnableFeignClients//用于描述一种配置类。
// 告诉系统底层 启动@FeignClient注解描述的接口创建实现类及对象然后交给Spring管理
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);


    }

2.定义一个接口,并使用注解@FeignClient,在注解中输入服务提供方的名字,并在其中指定一个contextId作为远程调用服务的唯一标识。且定义的路径必须与要调用的服务路径一致

//value指向要调用的服务的名字。contextId指远程服务调用的唯一标识
@FeignClient(value = "sca-provider",contextId = "remoteProviderService1")
public interface RemoteProviderService1 {

    @GetMapping("/provider/echo/{string}")
    String xxoo(@PathVariable("string") String string);
                        //将定义的参数与Restful进行绑定
}

在业务层进行调用

  @Autowired
    private RemoteProviderService1 remoteProviderService1;

    @GetMapping("/consumer/look/{string}")
    public String look(@PathVariable String string){

        return remoteProviderService1.xxoo(string);
    }

3.当在进行远程服务调用时,假如调用的服务突然不可用,或者过程超时时。我们就需要给服务消费端一个具体的容错方案,在Feign应用中通过FallbackFactory接口的实现类进行默认的相关处理。

3.1

在配置yml文件中进行配置熔断机制

feign:
  hystrix:
    enabled: true  #打开熔断机制,如果调用不到启动备选方案
//基于此对象处理接口调用时出现的服务中断,超时等问题
public class Remote11 implements FallbackFactory<RemoteProviderService1> {
    @Override
    public RemoteProviderService1 create(Throwable throwable) {

            //会在出现异常后进行执行
        return new RemoteProviderService1() {
            @Override
            public String xxoo(String string) {
                return "服务超时,请重新";
            }
        };
    }
}

3.2在接口中进行指定

//value指向要调用的服务的名字。contextId指远程服务调用的唯一标识
@FeignClient(value = "sca-provider",contextId = "remoteProviderService1",
fallbackFactory = Remote11.class)//当访问出现异常时会执行此字节码对象

Nacos配置中心:存储项目配置信息的一个服务

为什么要使用配置中心:集中管理配置信息,动态发布配置信息

常见的配置中心例如:(nacos,Apollo...)

配置中的功能:最基础的功能就是存储用户发布的配置,进阶的功能就是当某个配置发生变更时,不需要停机就可以动态刷新服务内部的配置项。

配置中心一般配置什么内容:连接池,日志,线程池,限流熔断规则

@slf4j 注解 添加此注解就可以直接使用日志功能。

1.在服务提供方添加配置中心依赖:

<!--        添加nacos配置中心依赖,此依赖添加后,项目会从nacos获取配置信息-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

2.将提供服务方的application.yml的名字改成    bootstarp.yml(启动优先级最高),并添加配置中心配置:

spring:
  application:
    name: sca-consumer #服务注册时,服务名必须配置
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #从哪里去查找服务
      config:
        server-addr: localhost:8848
        file-extension: yml
        namespace: 671607e0-4a02-4457-b4c1-b29069814309 #指定的配置管理路径名

配置更新注解@RefreshScope 当配置中心发生变化时,能够及时看到类中属性值的更新。

在服务提供方进行添加

@RefreshScope  //当配置中心进行变化时,能够及时看到类中属性值的更新
@RestController
public class ProviderLogController{
  //.....
}

Nacos配置管理模式:在yml中进行的配置

Namespace:命名空间 

Group: 分组 

Service/Datald: 指定某一个  一般对应一个配置文件

   namespace: 671607e0-4a02-4457-b4c1-b29069814309 #指定的配置中心名
       group: DEFAULT_GROUP_51
       

共享配置设计及读取:

当namespace的多个配置文件都有相同配置时,就可以进行提取,然后存储到nacos配置中心的一个或多个指定配置文件,哪个需要就直接读取即可。

创建一个配置文件:共享配置名字不需要一致

在yml中进行共享配置

        namespace: 671607e0-4a02-4457-b4c1-b29069814309 #指定的配置中心名
       #group: DEFAULT_GROUP_51
        shared-configs[0]:   
                data-id: xxx.yml  # 执行目标配置
                refresh: true #是否开启更新

Nacos服务注册中心底层实现原理 1.x版本是通过Http协议来进行服务注册的2.x由于客户端与服务端的通信改成了gRPC长连接,所以改成通过gRPC长连接来注册2.x比1.x多个Redo操作,当注册的服务实例是临时实例是,出现网络异常,连接重新建立之后,客户端需要将服务注册、服务订阅之类的操作进行重做这里你可能会有个疑问既然2.x有Redo机制保证客户端与服务端通信正常之后重新注册,那么1.x有类似的这种Redo机制么?当然也会有,接下往下看。心跳机制仅仅针对临时实例而言。 阅读详情

相关推荐

Nacos服务注册中心简析

Nacos是阿里开源的一个新框架,在分布式的架构中,Nacos同时扮演着服务注册中心和配置中心的角色。今天主要讲的是Nacos作为服务注册中心。 分布式中著名的CAP理论,任何一种服务注册中心都只能实现其中的两个特性,一般是AP(注重可用性)或者CP(注重一致性)。 Eureka就是一个AP的服务注册中心,任何一个Eureka Server都是独立的,可存储所有的服务注册信息,即使任意一台Eure...

LO_YUN的博客 4540

Nacos

Spring Cloud 之 Nacos 服务注册中心和配置中心

weixin_46061449的博客 1万+

【SpringCloud入门】-- Nacos快速入门之搭建服务与注册中心

本文章是SpringCloud入门之nacos简单的搭建和介绍。

不知名菜鸡 3328

四、Nacos服务注册中心

目录一、Nacos基本介绍二、构建NacosServer端 一、Nacos基本介绍 1.Nacos是什么 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施 Nacos是Java语言编写的,阿里巴巴推出的 其实总结就是:Nacos可以帮助我们实

qq23001186的博客 4516

【微服务】(七)—— Nacos注册中心

目录 一、Nacos 注册中心的设计原理 1、数据模型 2、数据⼀致性 3、负载均衡 4、健康检查 二、Nacos 注册中心服务数据模型 1、服务(Service)和服务实例(Instance) 1)定义服务 3)定义实例 4)实例元数据 5)持久化属性 2、集群(Cluster) 1、定义集群 3、生命周期 1)服务的⽣命周期 2)实例的⽣命周期 3)集群的⽣命周期 4)元数据的⽣命周期 一、Nacos 注册中心的设计原理 1、数据...

jizhibing的博客 6430

SpringCloud-Alibaba之Nacos服务注册和配置中心以及集群搭建

Nacos服务注册和配置中心以及集群搭建

usa_washington的博客 981

服务治理:Nacos 注册中心

一、什么是服务治理 二、Nacos 注册中心的 核心功能 三、Nacos 环境搭建 3.1 本地部署 3.2 服务器部署 四、Nacos 应用实战

秀岩的博客 2887

SpringCloud Alibaba系列 Nacos(一)

springcloud nacos nacos注册中心 nacos配置中心 nacos配置mysql数据源 nacos开启鉴权

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 5673

【微服务】Nacos注册中心

本文涉及Nacos的概述与安装、如何将服务注册到Nacos、服务分级存储模型、权重配置、环境隔离、Nacos与Eureka的区别

十八岁讨厌编程的博客 5356

Linux中Hadoop 集群搭建

零、下载Hadoop: http://archive.cloudera.com/cdh5/cdh/5/?tdsourcetag=s_pctim_aiomsg 一、集群规划: 搭建的 hadoop 集群由 3 台服务器组成,分别叫做 master,salve1 和 slave2。其中 master 作为主节点,slave1 和 slave2 作为从节点。 二、网络配置: 1.查看 3 个节点的主机名...

白墨的小白博客 3992

5分钟搞定Nano-Banana图片编辑API对接:从Base64编码到生成图片全流程

本文详细介绍了如何快速对接Nano-Banana图片编辑API,基于gemini-2.5-flash-image-preview模型,从环境准备、Base64编码到API调用的全流程。通过实战示例和优化技巧,帮助开发者高效集成AI图片处理能力,提升产品竞争力。

dog123的博客 260

SpringCloudAlibaba微服务 【实用篇】| Nacos注册中心

SpringCloudAlibaba微服务 【实用篇】| Nacos注册中心

m0_61933976的博客 5690

MPU6050的四元数解算姿态方法

使用MPU6050硬件DMP解算姿态是非常简单的,下面介绍由三轴陀螺仪和加速度计的值来使用四元数软件解算姿态的方法。 我们先来看看如何用欧拉角描述一次平面旋转(坐标变换): MPU6050的四元数解算姿态方法 设坐标系绕旋转α角后得到坐标系,在空间中有一个矢量在坐标系中的投影为,在内的投影为由于旋转绕进行,所以Z坐标未变,即有。 转换成矩阵形式表示为: 即 所以从旋转到可以写成上面仅仅是绕一根轴的旋转,如果三维空间中的欧拉角旋转要转三次: MPU6050的四元数解算姿态方法 上面得到了一个表示旋转的方

qq_41938005的博客 8392

【SpringCloud】Nacos微服务注册中心

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了⼀组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。nacos的作⽤就是⼀个注册中心,用来管理注册上来的各个微服务。

Stringzhua的博客 1527

SAP ABAP 如何实现物料主数据接口的增量传输机制?

如何实现物料主数据接口的增量传输机制?我在各客户系统中看到了五花八门的实现方式,即使是 IBM 实施的开发质量也并没有保证。其实这是一个很简单的问题,下面以物料主数据接口为例子,介绍 SAP 中更改文档对象的接口数据增量传输机制。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 1316

MySQL 一一 MySQL基本使用

1、数据库 简单来说,所谓的数据库就是存储数据的容器,而且是永久存储的。 2、为什么需要数据库 3、为什么要学习MySQL数据库 最早MySQL数据,瑞典AB公司开发的一款开源型的关系型数据库。 随着时间的推移,瑞典AB公司把MySQL数据库转让给Sun公司(Java语言的创始公司) 后来,Sun公司经营不善,又把MySQL数据库转让给甲骨文公司(Oracle数据库) 4、数

Guizy 7万+

Nacos服务注册中心

Nacos 是一个功能丰富的服务发现和配置管理平台,通过它可以帮助开发者更好地构建和管理云原生应用。无论是开发过程中的服务发现,还是在生产环境中的动态配置管理和服务治理,Nacos 都提供了一系列的解决方案和工具,使得应用开发和运维更加便捷和高效。

2301_81054483的博客 1971

Istio ICA考试之路---2-2

找到dr部分,这部分可以在mirroring里找也可以和题2-1一样在Traffic Management的dr里复制,内容都一样。此题之后都是在cluster-2上操作,所以就不需要再切换了.之后的几题2.1节就忽略掉了。可以看到,80%的流量被镜像到了dev上,实际考试这步可以忽略。看到ex-ip是192.168.126.220。获取gw,把gateways加入到vs配置中。获取istio-ingress的ex-ip。就获得了这样一个模板文件。查看2个pod的日志。

Q先生 854

微服务学习-Nacos 作为注册中心使用

微服务学习-Nacos 作为注册中心使用

qq_29768197的博客 1244

uniapp [微信小程序] - 实现语音播报功能+实时收款播报,使用同声传译插件做文字转语音播报类似微信/支付宝收款播报小程序语音识别和朗读,手机提醒播放自定义收款语音信息(音频+收款金额+文案)

uniapp-实现语音播报功能,实时收款播报,uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)IOS苹果手机播报没有声音,生成语音并播放,微信小程序接入官方wechatSi(微信同声传译)uniapp小程序使用文字转语音播报类似支付宝收款播报,uni-app 小程序端实现文字语音播报,uniAPP文本转语音,uniapp 文字转语音文字播报,手机静音播放没声音,收款方提示音 文字转语音朗读 同声传译,uniapp小程

🏆 前端领域优质创作者 3795

嵌入式编程模型 | 原型模式

本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。

嵌入式大杂烩 146

微服务组件Nacos注册中心

一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。集注册中心+配置中心+服务管理平台服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理2. Nacos注册中心管理所有微服务、解决微服务之间调用关系错综复杂、难以维护的问题。2.1 注册中心演变及其设计思想在这里插入图片描述2.2 核心功能。

zhzjn的博客 1052

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringCloud之Nacos基础认识-服务注册中心

不使用注册中心就直接用Spring的RestTemplate框架存在问题:如果ip和端口发生迁移,就调不通了因此我们可以手动维护一个注册表,从注册表拉取订单服务信息存在问题:订单服务水平扩容、某个订单服务宕机,没有及时更新注册表因此我们可以利用Nginx存在问题:成千上万的微服务,nginx的配置会非常复杂,运维不便因此我们考虑mysql作为注册中心在mysql里建服务注册表,包含状态1、服务启动调用注册接口,执行insert语句2、调用服务前查询订单服务列表,执行select语句。

2303_80933038的博客 959

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

微服务学习-Nacos 注册中心实战

微服务学习-Nacos 注册中心实战

qq_29768197的博客 1474

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【微服务】Nacos 注册中心的设计原理

注册中心的核心数据是服务的名字和它对应的网络地址,当服务注册了多个实例时,我们需要对不健康的实例进行过滤或者针对实例的⼀些特征进行流量的分配,那么就需要在实例上存储⼀些例如健康状态、权重等属性。

qq_57756904的博客 9817
上一篇: Mybatis框架
下一篇: Sentinel限流熔断
辣椒太少不适合吃
博客等级 码龄5年 2691粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值