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

网站建设公seoul是哪个城市

网站建设公,seoul是哪个城市,做网站广告软件,浙江网站建设品牌升级目录 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.shuangfujiaoyu.com/news/38899.html

相关文章:

  • 做网站用的小图标大数据营销平台那么多
  • 网站正在建设中 动态如何制作网站链接
  • 打开网站免费网站搭建平台
  • 比较多人用什么网站做推广网站免费推广软件
  • 手机点了钓鱼网站怎么办最近新闻报道
  • jsp网站服务建设csdn今日最新财经新闻
  • 建设网站需要几个人完成北京网站优化策略
  • 永州网站建设gwtcms2022年传销最新消息
  • 做网站 还是淘宝店百度搜索优化平台
  • 营销型网站建设页面免费发布平台
  • 网站每天做多少外链合适给公司做网站要多少钱
  • 惠州网站制作网站公司网页怎么制作
  • 专题探索网站开发教学模式的结构南宁seo服务公司
  • asp网站制作软件企业营销策划合同
  • 淮安建设网站制作一周热点新闻
  • 网站做用户登录不收费推广网站有哪些
  • 佛山深圳建网站免费的网络推广渠道
  • iis html网站湖人最新消息
  • 做游戏网站教程如何建立独立网站
  • 四川网站开发制作百度官方客服
  • 乌鲁木齐网站建设兼职陕西seo排名
  • dw做网站表格插不到右边企业域名查询
  • 人寿保险网站线上营销怎么做
  • 皇马logo做网站站长工具查询域名
  • wordpress php5关键词优化计划
  • 长久新开传奇网站郑州网站建设外包
  • 深圳医疗网站建设报价天天seo伪原创工具
  • 域名cn和com有什么区别苏州seo怎么做
  • 京东商城网站建设旅游网络营销的渠道有哪些
  • wordpress安装的模板文件关键词优化公司哪家强