加入收藏 | 设为首页 | 会员中心 | 我要投稿 信阳站长网 (https://www.0376zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

员工签署联名信:AI大神Jeff Dean必须道歉!

发布时间:2021-02-01 16:33:11 所属栏目:评论 来源:互联网
导读:除了刚才说的读加载缓存,还有写缓存,我们知道有CAP定理,缓存一定有P,因为数据有冗余,在两台机器上都有缓存,但是关注于一致性的时候就是一个write through 方式的的缓存。AP 可能关注的是 write back 的缓存,这样单个请求的使用量会更高。 BASE 理论对

除了刚才说的读加载缓存,还有写缓存,我们知道有CAP定理,缓存一定有P,因为数据有冗余,在两台机器上都有缓存,但是关注于一致性的时候就是一个write through 方式的的缓存。AP 可能关注的是 write back 的缓存,这样单个请求的使用量会更高。

BASE 理论对缓存也有很多的用法,比如 Nginx 或 Openresty,后端挂掉了,每次访问都给返回 502 请求,你加一个东西后配 HTTP 502,它会把本来后期的缓存直接返回给客户,所以可用性也就提升了,相当于容灾了,提供了基本可用性。
 

接,分别是红蓝绿。如果是网络层的多播就是这么发,比如说主机1发了以后,路由器 A 把这个报文复制了一份,一份给路由器B,一份给主机2,到路由器B以后,又复制了两份,一个给主机3,一个给主机4,所以它的网络效率应特别高。

但是它没有办法跨网络,一是安全问题,很容易造成网络风暴;二是路由器A和路由器B不是一个厂家的,很难办。所以,只在局域网内会有网络层多播( ARP 协议等)。

所以我们最好用的是应用层的多播,主机1要给2、3、4发的时候是这样发的,主机1可能成为一个中心化的节点去拉了,说先给3发,3主动去拉也可以,拉完以后,3再从中心服务器里面拉,比如说4没有,3的层面就拉给他,这里的用处很大。

在很大的集群内要发布一个几百兆的新版本,这时候如果单机向大家推,机器就打爆了,即使用10G或者是40G的外置网卡,你的下限带宽也就几个G,根本抗不住成千上万同时拉你的服务器。比如说阿里开源的蜻蜓(Dragonfly)就很好用,他只是用这个理念,怎么实现就太容易了,什么协议都能实现,用 HTTP 协议就好了,整个实践成本都会低很多。
 

举个例子,比如说抓一个 HTTP3 的包就知道,抓包看完最上面是 UDP Header,UDP Header 就是一个4元组:源IP、目的IP、源端口、目的端口。接下来是 Packet Header,Packet Header 中有一个整数,叫 connection_id,为什么有 connection_id?

以前一个连接是如何定义的呢?四元组(源IP、目的IP、源端口、目的端口),只要四元组改了就需要重连。

在 IOT 时代,各种高速移动的设备会经常切换,比如经常切换的 5G 基站,或是切到一个 WIFI,这时IP地址肯定会发生变化,需要重新建立连接。重建连接的成本太高了,怎么样不重新建立连接呢?从 Packet Header 中,定义了一个 connection_id 的整数。

只要这个整数不变,这个连接就可以复用,TLS 握手也不用做了。为什么可以这样做呢?其实很简单,这些东西是加密到 HTTP3,如果能够解密的话,安全性是没有问题的。Packet Header 中,这就叫连接迁移,就是我们说的 Connection Migration,连接迁移,这是 HTTP3 的第一个用处。

HTTP3 的第二个用处多路复用。多路复用是到 QUIC Frame Header,Packet Header中定义了连接是无序的字节流连接,只管你不丢包,要是丢包了,我们有一个ID,能找到重发。

但顺序乱了,我是不管的,管顺序乱不乱是在 QUIC Frame Header,他做了一个东西,他重新定了叫 QUIC stream 的概念,就像跟 TCP 连接是一样的,这里做出来一个TCP 连接,跟 TCP 连接用起来是一模一样的。

大家都知道 TCP 三次握手时在同步 Sequence,SYN 参数的全称就是 Synchronize Sequence Numbers。在同步两边的序列号,因为在接下来的每发一个字节,序列号就会加1,对方接受确认的时候也是这么做的。他里面也有一个 Sequence,所有的都是一模一样的。

基于这个做出来的有序字节流,就完成完成解决了队头堵塞问题,所以它的多路复用是真正的多路复用。

再接下来到了 HTTP3 Frame Header,QUIC Frame Header 已经提供了一个 TCP 连接,但是 HTTP 是有自己很多独立的应用,比如说除了 request/response 以外,还有服务器推送,服务器推送就是一种新的 Frame Header,先所以前面又加了一层头部去完成这样的功能。

还包括另外一个功能,QPACK,大家知道 HTTP2 当中有一个 HPACK,功能就是压缩头部。最高的压缩就像我们看视频的时候,有关键帧和增量帧,如果经过什么压缩的视频,压缩完以后体积能减少几百倍,看起来还挺清晰的,它就是关键帧和增量帧,压缩效率特别高,HPACK 也是一模一样的。当你在一个连接上第一次传输一个 HTTP header 的时候,其实就是你的关键帧。

后面做增量帧的时候,只要传一个数字就行。但是这种方式也有一个时序效应,谁先谁后。所以就出现了 QPACK,这是基于无序的连接去实现一个功能。

(编辑:信阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读