当前位置: 首页 > news >正文

网站建设公torrentkitty磁力猫引擎

网站建设公,torrentkitty磁力猫引擎,顺德网站建设原创,建设官方网站需要注意什么目录 1. Nacos 的底层实现原理 1.1 配置中心自动刷新实现原理 1.2 注册中心底层实现原理 2. Nacos 注册中心的两种调用方式 2.1 RestTemplate Spring Cloud LoadBalancer 的调用方式 2.2 使用 OpenFeign Spring Cloud LoadBalancer 1. Nacos 的底层实现原理 1.1 配置中心…

目录

1. Nacos 的底层实现原理

1.1 配置中心自动刷新实现原理

1.2  注册中心底层实现原理

2. Nacos 注册中心的两种调用方式

 2.1 RestTemplate + Spring Cloud LoadBalancer 的调用方式

2.2 使用 OpenFeign + Spring Cloud LoadBalancer 


1. Nacos 的底层实现原理

1.1 配置中心自动刷新实现原理

Nacos 配置中心的自动刷新,其底层是基于长轮询+事件驱动的方式来实现的。

长轮询:客户端通过发送HTTP长轮询请求到Nacos服务器来实现配置更新的监听机制。这样做的目的是减少频繁的请求,同时能够保证配置更新时能快速通知到客户端。

事件驱动:当注册中心发生改变了,发生事件了,就会把这个事件推送给订阅者。

对比长连接来理解长轮询 >>

长连接(Persistent Connection):

  • 长连接是指在一次连接建立之后,客户端和服务器之间的连接会保持活跃,直到其中一方显式地关闭连接。
  • 长连接中,TCP连接默认不会在传输了HTTP响应后立即关闭,而是可以用来传输多个请求和响应。
  • 长连接减少了频繁建立和关闭连接的开销,但如果连接数多了,服务器端的资源压力会比较大。

长轮询(Long Polling):

  • 长轮询是,客户端发起请求到服务器,如果服务器端没有数据更新,它不会立即响应,而是保持这个请求开放(保持一段时间的连接),直到有数据更新或者超时。
  • 当有数据更新时,服务器响应请求,发送更新给客户端。客户端处理完响应后,会再次发起新的请求,重新开始长轮询。
  • 长轮询不是持续的网络连接,每次轮询完成后连接都会关闭,然后客户端再发起新的请求。这导致在每个轮询周期之间会有短暂的延迟。

基于以上对比,还可以看出长轮询是有助于 Nacos 进行健康检测的,因为健康检测就是隔一段时间发送心跳包。

🍁配置中心具体执行流程如下:

1. 客户端向 Nacos 服务器发送一个带有监听器的长轮询请求,以获取某个特定配置的值。

2. Nacos 服务器收到这个长轮询请求后,会检查该配置是否发生了变化。如果没有变化,则该请求将被阻塞,直到超时或者配置发生变化。(通常设置一个较长的超时时间,比如30秒)

3. 当配置发生变化时,Nacos 服务器会立即响应,并将新的配置响应给客户端。

4. 客户端接收到新的配置值之后,可以根据需要跟新自身的配置。

1.2  注册中心底层实现原理

Nacos 注册中心的底层实现主要依赖于两个关键的组件:服务注册 + 服务发现。

对于服务注册和服务发现的不是很理解的可以先去看看我的这篇文章:https://blog.csdn.net/xaiobit_hl/article/details/134142521

🍁Nacos 注册中心的执行流程如下

1. 服务注册:

  • 当服务启动的时候,它会向Nacos服务器发送一个注册请求,包含自己的元数据据信息
  • Nacos服务器接受到注册请求后,会在内存中维护一个注册表,然后将服务提供者的信息(如服务名、IP、端口、健康状态等)存储到服务注册表中,用于后续的服务发现。

2. 服务同步 (如果部署了多个Nacos实例):

  • Nacos集群中的服务同步机制确保所有的Nacos实例包含所有服务的最新信息。
  • 同步过程通常由Nacos集群内部协调完成,确保每个实例的数据一致性

3. 心跳机制:

  • 服务实例会定期向Nacos服务器发送心跳来保持其注册信息的活跃状态,表明自己的健康状态和可用性。
  • 如果Nacos在配置的心跳时间内没有收到某服务实例的心跳,它将认为该实例不可用,并可能将其从服务列表中剔除。

4.. 服务发现:

  • 服务消费者在调用服务时,会向Nacos发送一个服务发现请求。
  • Nacos会返回一份可用服务实例的列表,客户端基于这份列表通过负载均衡策略选择一个实例进行调用。

5. 负载均衡:

  • 在服务发现的过程中,Nacos还提供了负载均衡的支持,消费者可以选择合适的负载均衡策略来选择其中一个或多个实例进行调用。
  • Nacos 里的负载均衡策略有两种:权重 + CMDB。

2. Nacos 注册中心的两种调用方式

当 Nacos 注册了 Restful 接口时,它 的调用方式主要有两种:

  1. 使用 RestTemplate + Spring Cloud LoadBalancer
  2. 使用 OpenFeign + Spring Cloud LoadBalancer 

 2.1 RestTemplate + Spring Cloud LoadBalancer 的调用方式

实现步骤:

  1. 添加依赖:nacos + loadbalancer
  2. 设置配置信息
  3. 编写调用代码

① 添加依赖:nacos + loadbalancer

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

② 设置配置信息

spring:application:name: nacos-discovery-businesscloud:nacos:discovery:server-addr: localhost:8848username: nacospassword: nacosregister-enabled: false # 设置消费者不要注册到 Nacos

③ 编写调用代码

此处又分为两步实现:

  1. 增加 RestTemplate 的 LoadBalanced 支持
  2. 使用 RestTemplate 调用接口

1. 增加 RestTemplate 的 LoadBalanced 支持

        在Spring Boot启动类上添加 @EnableDiscoveryClient 注解,然后使用 @LoadBalanced 注解替换 Ioc 容器中的 RestTemplate。

@SpringBootApplication
@EnableDiscoveryClient // 增加 RestTemplate 的 LoadBalanced 支持
public class ConsumerApplication {@LoadBalanced@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}
}

2. 使用 RestTemplate 调用接口

@RestController // 消费者
public class BusinessController2 {@Autowiredprivate RestTemplate restTemplate;@RequestMapping("/getnamebyid")public String getNameById(Integer id) {return restTemplate.getForObject("http://nacos-discovery-demo/
user/getnamebyid?id="+id,String.class);}
}

2.2 使用 OpenFeign + Spring Cloud LoadBalancer 

使用这种方式调用注册中心,实现步骤分为以下 5 步:

  1. 添加框架支持 【nacos discovery、spring cloud LoadBalancer、spring cloud OpenFeign】
  2. 配置 Nacos 连接信息
  3. 开启 OpenFeign 功能
  4. 声明 OpenFeign 式的 Service 【生产者的的服务】
  5. 调用服务【调用生产者的服务】

具体的实现代码可以参考我的上一篇博客:https://blog.csdn.net/xaiobit_hl/article/details/134142521 

http://www.ds6.com.cn/news/39443.html

相关文章:

  • 购物商城网站的制作竞价代运营
  • 苏州网络技术有限公司网站优化排名网站
  • 做词频分析的网站做竞价推广这个工作怎么样
  • 开展农业信息网站建设工作总结上海外贸seo公司
  • 网站建设百度文库seo教程网
  • 搜索网站大全排名泉州网站关键词排名
  • 做网站用个人还是企业比较好韩国今日特大新闻
  • 东莞专业做网站的公司有哪些策划书模板
  • 可以申请做cpa广告的网站网络零售的优势有哪些
  • html5网站开发实例公司怎么在百度上推广
  • 合肥网站制作报深圳做网站公司
  • wordpress v3.3.1空间上传phpseo公司 杭州
  • 公司做了网站怎么做推广广告制作
  • 微信网站主题网络推广营销网站建设专家
  • 仿网站的ppt怎么做网络营销的渠道
  • 平邑网站制作网站优化方案
  • wordpress阅读次数福州seo建站
  • html网站开发实验报告最新网站推广方法
  • 河南省建设工程信息网站中国疫情最新数据
  • 合肥做检查军大网站谷歌chrome官网
  • 柳州市建委网站杭州网站优化公司
  • 做电子商务网站价格怎么制作公司网站
  • 北京大龙建设集团有限公司网站首页软文素材
  • 哪家公司做网站好软文宣传
  • 南昌建网站百度品牌
  • 网站一年的维护费用运营推广是做什么的
  • 用mac做网站百度商城购物
  • wordpress 聚美优品快速排名优化公司
  • 唐山哪里建设网站好哪个平台视频资源多
  • 什么网站能看到专业的做面包视频大数据营销案例