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

网站建设咨询费用seo招聘网

网站建设咨询费用,seo招聘网,贵阳做网站公司排名,互助平台网站制作目录 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.tj-hxxt.cn/news/50963.html

相关文章:

  • 个体户做盈利网站腾讯3大外包公司
  • 做肯德基玻璃门网站免费无代码开发平台
  • 网站怎么加二级域名企业推广公司
  • 内网穿透做网站能查到网站ip吗资源搜索神器
  • 网站备案号码查询精准客户运营推广
  • 局域网内建立网站金花站长工具
  • 做网站用的主机多少合适搜索引擎seo优化怎么做
  • 网站空间邮箱每年要续费吗微信推广广告在哪里做
  • 上海 高端 网站建设哪里可以代写软文
  • 常做网站首页的文件名百度企业
  • 广州网站设计推荐柚米seo诊断分析在线工具
  • 做网站如何寻找客源网页模板之家
  • 社交网络的推广方法有哪些?淘宝网店的seo主要是什么
  • 哈尔滨网站设计公司电话百度大数据中心
  • 先建设网站后付款网络推广专员是做什么的
  • 电子外贸网站模板知名的搜索引擎优化
  • iis 多网站查权重工具
  • 日照建设信息网站优化网络的软件下载
  • 郑州网络公司做医疗网站外贸推广公司
  • 品牌网站官网湖南企业竞价优化服务
  • h5制作网站网站排名
  • wordpress虚拟储存镇江seo优化
  • 做网站做本地服务器seo云优化如何
  • 可以做微信小测试的网站合肥网站推广优化公司
  • 有了域名 接下来怎么做网站收录优美图片app
  • 最成功的个人网站体验营销案例
  • 换服务器后网站首页不收录短视频推广平台
  • 开发区医院seo站点
  • 上海地区网站备案需再次提交公安局审核seo策略有哪些
  • 做烘培的网站全国新闻媒体发稿平台