初识KV,SSE

最近在接口文档上发现了kv获取配置和see辅助参数提交的接口,但是不知道在什么地方会用到她,同时为什么要有这些?接下来,我这边把我的认知和网上的理解给简单解释下

一、KV(key value),可以存任何端需要的配置类东西

由于 Nacos 的服务模块存储,更多的都是根据单个或者多个唯⼀ key 去执行点查的操作,因此Key-Value 类型的存储接口最适合不过。而 Key-Value 的存储接口定义好之后,其实就是这个KVStore 的具体实现了。可以直接将 KVStore 的实现对接 Redis,也可以直接对接 DB ,或者直接根据 Nacos 内核模块的⼀致性协议,在此基础之上,实现⼀个内存或者持久化的分布式强(弱)⼀致性 KV。通过功能边界将 Nacos 进程进⼀步分离为计算逻辑层和存储逻辑层,计算层和存储层之间的交互仅通过⼀层薄薄的数据操作胶水代码,这样就在单个 Nacos 进程里面实现了计算和存储二者逻辑的彻底分离。

主要用于配置的读取修改等,方便统一化操作,可用于bs或cs代码里面的枚举为文件名,xml文件格式为 id value的格式。

(1)下面是采用kv命令处理数据:

新增或者修改数据:consul kv put key value

查询命令:consul kv get key

查询指定路径下所有的key:consul kv get -recurse path

删除数据命令如下:consul kv delete key
 

(2)那么接口如何操作呢,下面是http api的一些写法:

使用之前需要注意一点,启动consul agent的时候,需要加上-client 0.0.0.0参数,这个的意思就是允许任何ip的机器连接consul,如果不加这个参数,consul默认只有本机可以访问。

<1 查询数据:

使用http get,url如下,ip为运行consul agent的机器ip,port默认为8500,可以在启动consul agent的时候通过-http-port选项指定为其他端口,key注意如果有path的话需要带上,url如下:

http://ip:port/v1/kv/key

例如:

注意:value是经过base64编码的,程序里使用http api的话需要对结果中的value进行解码。

<2 新增或修改数据:

使用http put,url如下,body中携带value:

http://ip:port/v1/kv/key

例如:

如果需要设置flags,加在query参数中,例如:

 使用http delete,url如下:

http://ip:port/v1/kv/key

例如:

 其他相关kv可参考:

https://blog.csdn.net/Fanbin168/article/details/52504839

https://blog.csdn.net/weixin_45932150/article/details/122163152

 二、sse(server -sent event) ,通俗解释起来就是一种基于HTTP的,以流的形式由服务端持续向客户端发送数据的技术

由于HTTP是无状态的传输协议,每次请求需由客户端向服务端建立连接,HTTPS还需要交换秘钥,所以一次请求,建立连接的过程占了很大比例
在http1.1中(1.0也有但未写入标准),虽然增加了keep-alive来保持和服务器的长连接,省去了很多建立连接的过程,但通信过程仍然是应答式1:1的方式,也就是想要获得数据,就必须先发送一个request才能得到一个response,所以在实时监控、推送、视频直播等实时性较高或者带宽利用较苛刻的场景,仍然不是很合适
SSE技术由于能保持连接,并持续接收服务端的数据,所以弥补了这一缺点,与其他类似技术方案相比,短轮询、Coment、WebSocket,在大多数时候,SSE仍然是最好的选择

web API接口EventSource

EventSource 接口用于接收服务器发送的事件。它通过HTTP连接到一个服务器,以text/event-stream 格式接收事件, 不关闭连接。

例如:

(1)服务端代码:

<?php
# 指定数据类型,指定允许域访问
header("Content-Type: test/event-stream; charset=utf-8");
header("Access-Control-Allow-Origin:http://127.0.0.1");
echo "data: 现在北京时间是:".date('H:i:s')."\r\n\r\n";
?>
 

(2)前端代码

let source;

function init(arg) {
  source = new EventSource('http://127.0.0.1/sse/data.php');
  source.onopen = () => {
    console.log("连接已建立", this.readyState);
  }
  source.onmessage = (event) => {
    console.log("从服务器拉取的时间:", event.data);
  }

  source.onerror = () => {
    console.log('');
  }
}
init();
 

其他相关参考:

https://www.cnblogs.com/goloving/p/9196066.html

https://blog.csdn.net/weixin_30321709/article/details/101747736

https://www.jianshu.com/p/ed94c8005f2c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值