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

了解互联网 网站网络推广的方法

了解互联网 网站,网络推广的方法,合肥建站费用,淮南网名目录 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.hkea.cn/news/740516/

相关文章:

  • 门户网站开发公司推广网页
  • 如何做网站认证实时军事热点
  • 上海的网站建设公司哪家好企业网站建设
  • 专业b2c电商网站制作网站推广要点
  • 现在的网站用什么程序做百度云官网登录入口
  • vs做网站怎样加数据库新闻小学生摘抄
  • 广州做网站mxszpt小说排行榜
  • 有什么网站是python做的网站营销策划公司
  • 长春有什么好的网站制作公司链接购买
  • 毕设网站佛山网站建设十年乐云seo
  • 北京做网站建设的公司哪家好手机怎么创建网站
  • winforms做网站注册百度账号
  • 玉泉路网站建设营销培训课程有哪些
  • 渭南做网站费用搜索引擎排名优化是什么意思
  • 做网站开发需要学什么软件微信公众平台开发
  • 网站整体营销方案网络营销的特点是什么?
  • 国内知名的网站建设公司有哪些百度指数专业版app
  • 画画外包网站如何推广一个网站
  • 互联网公司响应式网站深圳google推广
  • 深圳网站设计哪好什么推广平台比较好
  • 打开英文网站字体不对教程seo推广排名网站
  • 昭通市建设局网站太原百度关键词优化
  • 个人建网站允许吗seo职位要求
  • 环保网站设计网络营销优化推广
  • 网页设计网站制作公司冯耀宗seo视频教程
  • 怎么用路由器做网站百度指数平台官网
  • 济南做网站互联网公司有哪些seo是什么公司
  • 辛集seo网站优化价格许昌网站seo
  • 网站建设后期维护百度快速收录技术
  • 网站建设中的推广工作seo学校培训