用户您好!请先登录!

分类目录协议

动态演示Raft分布式一致性协议

Raft作为一种比较好理解的分布式一致性算法(相对于paxos来说,其实要理解还是有点难度的!),是通过选举机制,日志复制来保证发布式系统数据的一致性。

相对于Paxos算法,Raft引入主节点,通过竞选。其中节点类型:

  • Follower
  • Candidate
  • Leader

Leader 会周期性的发送心跳包给 Follower。每个 Follower 都设置了一个随机的竞选超时时间,一般为 150ms~300ms,如果在这个时间内没有收到 Leader 的心跳包,就会变成 Candidate,进入竞选阶段。

1. 无Leader阶段(系统初始阶段)

流程:

① 下图表示一个分布式系统的最初阶段,此时只有 Follower,没有 Leader。Follower A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。

阅读更多

深入解析Keepalive机制

很多同学包括自己对keepalive理解不清晰,经常搞不清楚,TCP也有keepalive,HTTP也有keepalive,Nginx有keepalive,高可用也有叫keepalived的工具,经常混淆这几个概念。很多时候keepalive对于开发人员几乎是透明的,但从架构的角度,大家还是有必要认真了解一下keepalive后面那些事。

1. HTTP中的keep-alive

1.1 为什么HTTP是短连接

众所周知,HTTP是短连接,client向server发送一个request,得到response后,连接就关闭。之所以这样设计使用,主要是考虑到实际情况。例如,用户通过浏览器访问一个web站点上的某个网页,当网页内容加载完毕之后,用户可能需要花费几分钟甚至更多的时间来浏览网页内容,此时完全没有必要继续维持底层连。当用户需要访问其他网页时,再创建新的连接即可。

阅读更多

边缘计算那点事

边缘计算(Edge Computing)是云计算向边缘的延伸,本文对边缘计算、雾计算、MEC、Cloudlet、分布式云等边缘计算领域相关概念和技术的定义、架构、场景等进行了比较分析,并对该领域的技术发展趋势给出了预测与展望。

一、概述

在整个行业数字化转型的大背景下,在 IoT、5G、 VR、AI 等业务云化需求驱动和技术发展推动下,边缘计算(Edge Computing)概念应运而生并迅速得到了行业的广泛关注。相对于经典云计算带来的“云端”的海量计算能力,边缘计算实现了资源和服务向边缘位置的下沉, 从而能够降低交互时延、减轻网络负担、丰富业务类型、优化服务处理,提升服务质量和用户体验。

边缘计算概念并无明确定义,雾计 算、MEC、Cloudlet、 边 缘 计 算、 分 布 式 云 等 概 念 迭 出,ETSI、ITU、OpenFog、ECC、OEC、3GPP、ISO、IEC、 IEEE、Linux 基金会、OpenStack 基金会等业界主流标准 化、开源和行业组织都在积极推进但都有所侧重。本文针对边缘计算、雾计算、MEC、Cloudlet、分布式云等领域内核心技术的定义、架构、场景等进行简介,并进行比较分析。

阅读更多

HTTP和HTTPS那点事

一、HTTP和HTTPS发展历史

什么是HTTP?

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

发展历史:

版本产生时间内容发展现状

HTTP/0.91991年不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求没有作为正式的标准

HTTP/1.01996年传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令正式作为标准

HTTP/1.11997年持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码2015年前使用最广泛

HTTP/22015年多路复用、服务器推送、头信息压缩、二进制协议等逐渐覆盖市场

阅读更多

SD-WAN与VPN的选择

当谈到是选择SD-WAN还是虚拟私人网络时,企业往往都要考虑两者之间的成本、云使用和应用程序等差异和因素。一方面,也是由于近些年来业界对SD-WAN的热度颇高。因此,不少企业想知道,选择SD-WAN与虚拟私人网络的根本区别和相似之处到底在哪。

先来说说虚拟私人网络。虚拟私人网络的定义是通过不太安全的网络传输(例如互联网)创建安全网络。长久以来,虚拟私人网络的基本任务一直是删除来自已验证端点的数据包。端点之间的所有通信都会进行最高级别的加密,这构成了Internet上虚拟私人网络的基础,可以说它是简单且具有成本效益的,但在保证网络性能方面可能存有问题。

阅读更多

SD-WAN学习用例

SD-WAN服务基于高品质的网络资源,充分利用SDN/NFV技术进行重构骨干网络,帮助企业客户快速实现总部与分支机构互联、数据中心互联和公有云互联。下面通过一个实例来快速了解SD-WAN服务。

客户介绍

某集团公司是知名的钟表行业领军人物,业务领域覆盖范围广,在全球有多个分支机构。随着公司业务的不断扩展,网络系统已不能满足,现提出改造:

  • 全球有多个分支机构,需要流畅的协同办公;
  • 国内多个分支机构互访不畅;
  • 流动办公人员的国际国内访问;
  • 在保障网络顺畅的同时,要保障网络安全;

阅读更多

断点继传的原理解析

断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分,而没有必要从头开始上传/下载。可以节省时间,提高速度。

断点续传的用途

有时用户上传/下载文件需要历时数小时,万一线路中断,不具备断点续传的 HTTP/FTP 服务器或下载软件就只能从头重传,比较好的 HTTP/FTP 服务器或下载软件具有断点续传能力,允许用户从上传/下载断线的地方继续传送,这样大大减少了用户的烦恼。

常见的支持断点续传的上传/下载软件:QQ 旋风、迅雷、快车、电驴、酷6、土豆、优酷、百度视频、新浪视频、腾讯视频、百度云等。

在 Linux/Unix 系统下,常用支持断点续传的 FTP 客户端软件是 lftp。

阅读更多

序列化框架的选择

什么是序列化通信?

将对象转换为字节数组,方便在网络中进行对象的传输。在网络通信中,不同的计算机进行相互通信主要的方式就是将数据流从一台机器传输给另外一台计算机,常见的传输协议包括了TCP,UDP,HTTP等,网络io的方式主要包括有了aio,bio,nio三种方式。

当客户端将需要请求的数据封装好了之后就需要进行转换为二进制格式再转换为流进行传输,当服务端接收到流之后再将数据解析为二进制格式的内容,再按照约定好的协议进行处理解析。最常见的场景就是rpc远程调用的时候,对发送数据和接收数据时候的处理。

下边我们来一一介绍一下现在比较常见的几款序列化技术框架。

阅读更多

IPSec的基本原理

鉴于目前访问国外部分网站非常困难的事实,重温一下其中的基本原理还是很有必要的。IPSec VPN是目前VPN技术中点击率非常高的一种技术,同时提供VPN和信息加密两项技术,接下来就看一下IPSec VPN的原理。

IPSec VPN应用场景

IPSec VPN的应用场景分为3种:

  1. Site-to-Site(站点到站点或者网关到网关):如弯曲评论的3个机构分布在互联网的3个不同的地方,各使用一个商务领航网关相互建立VPN隧道,企业内网(若干PC)之间的数据通过这些网关建立的IPSec隧道实现安全互联。
  2. End-to-End(端到端或者PC到PC): 两个PC之间的通信由两个PC之间的IPSec会话保护,而不是网关。
  3. End-to-Site(端到站点或者PC到网关):两个PC之间的通信由网关和异地PC之间的IPSec进行保护。

VPN只是IPSec的一种应用方式,IPSec其实是IP Security的简称,它的目的是为IP提供高安全性特性,VPN则是在实现这种安全特性的方式下产生的解决方案。

阅读更多

SD-WAN 那点事

1. 什么是SD-WAN,SD-WAN缘何而来,又为何引起了市场的如此关注?

这需要从SDN本身说起。从2006年斯坦福大学提出集中控制架构和Openflow协议,到2012年GoogleB4的商用案例,SDN萌芽期和幻灭期的关注点一直在云和数据中心内的场景,产业界急切需要找到下一个killer app。另一方面,云计算技术的发展引发了IT产业的变革,互联网+带动了传统行业的转型,to B的互联网化在2014年赶超了to C的关注度。

可以说,聚焦于企业市场和广域网范畴的SD-WAN 服务正是在这样的行业背景和期待中形成。关于SD-WAN这个词首次出现在公众视野是2014年9月发表在networkcomputing.com的文章“Software-Defined WAN: A Primer”,但实际上SD-WAN的概念来源于更早出现的Hybrid WAN,为解决企业市场Internet互联不稳定而MPLS VPN价格昂贵这样的博弈类问题。

阅读更多

Wi-Fi 6标准正式启用

9月16日,Wi-Fi联盟宣布启动Wi-Fi 6认证计划,这意味Wi-Fi 6技术标准即将进入我们的工作生活。可能这时候就会有小伙伴一脸懵逼的问道“啥?好好的Wi-Fi咋还整出一个6来呢?

什么是Wi-Fi 6?

Wi-Fi 6是无线局域网(WLAN)技术的下一代发展方向。Wi-Fi 6的命名原则更像是蜂窝数据网络使用的3G/4G/5G。Wi-Fi 6名称的背后是802.11无线网络标准的最新版本:802.11ax。而Wi-Fi 6将是802.11的第一个包含正交频分多址(OFDMA)的迭代,这是对正交频分多址(OFDM)的改进。

综上所述,你可以用一个并不严谨的对比法将自家现用Wi-Fi进化为Wi-Fi 6理解成为4G向5G的进化。

阅读更多

Websocket协议及使用

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

传统的HTTP协议是一个请求-响应协议,浏览器不主动请求,服务器是没法主动发数据给浏览器的。

传统服务器推送方式

Ajax 轮询

浏览器通过JavaScript启动一个定时器,然后以固定的间隔给服务器发请求,询问服务器有没有新消息。

缺点

  • 实时性不够
  • 频繁的请求会给服务器带来极大的压力。

服务器反推

本质上也是轮询,但是在没有消息的情况下,服务器先拖一段时间,等到有消息了再回复。暂时地解决了实时性问题。

阅读更多

WebSocket的高性能实现(Go and Netty)

WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

WebSocket的优点

  • 节省通信开销(HttpRequest中的head很长,占用带宽和资源)
  • 服务器可以主动传送数据给客户端
  • 实时通信
    因为HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。这种通信模型有一个弊端:HTTP 协议无法实现服务器主动向客户端发起消息。如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数 Web 应用程序将通过频繁的异步JavaScript和XML(AJAX)请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。

WebSocket的生命周期

WebSocket端点生命周期的第一个事件是打开通知,它用来指示到WebSocket会话另一端的连接已经建立。一旦打开通知被WebSocket对话的两端都接收到,参与的任意WebSocket后续就可以发送消息了。在WebSocket对话期间,可能会出现一些消息传递的错误。接受消息的WebSocket端点本身就可能产生错误,或者WebSocket实现本身在某些情况下也会产生错误。要注意对错误的处理。不管在WebSocket对话的哪一端准备结束对话,他都可以初始化关闭事件。下面从Java组件的视角来看看其生命周期如何呈现。

  • 打开事件:@OnOpen 此事件发生在端点上建立新连接时并且在任何其他事件发生之前
  • 消息事件:@OnMessage 此事件接收WebSocket对话中另一端发送的消息。
  • 错误事件:@OnError 此事件在WebSocket连接或者端点发生错误时产生
  • 关闭事件:@OnClose 此事件表示WebSocket端点的连接目前部分地关闭,它可以由参与连接的任意一个端点发出

阅读更多

CDN(内容分发网络)浅析

概述

Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。

解决方案就是在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证。

网络缓存技术,其目的就是减少网络中冗余数据的重复传输,使之最小化,将广域传输转为本地或就近访问。互联网上传递的内容,大部分为重复的Web/FTP数据,Cache服务器及应用Caching技术的网络设备,可大大优化数据链路性能,消除数据峰值访问造成的结点设备阻塞。

阅读更多

MQ详解及四大消息队列中间件比较

一、消息中间件相关知识

1、概述

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。

2、消息中间件的组成

2.1 Broker

消息服务器,作为server提供消息核心服务

2.2 Producer

消息生产者,业务的发起方,负责生产消息传输给broker,

  2.3 Consumer

消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理

 2.4 Topic

主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的       广播

 2.5 Queue

队列,PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收

2.6 Message

消息体,根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输

阅读更多

掌握高性能网络编程前先了解基本Java Socket

场景

今天,和大家聊一下 JAVA 中的 socket 通信问题。这里采用最简单的一请求一响应模型为例,假设我们现在需要向 baidu 站点进行通信。我们用 JAVA 原生的 socket 该如何实现。

建立 socket 连接

首先,我们需要建立 socket 连接(核心代码

import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
// 初始化 socket
Socket socket = new Socket();
// 初始化远程连接地址
SocketAddress remote = new InetSocketAddress(host, port);
// 建立连接
socket.connect(remote);

处理 socket 输入输出流

成功建立 socket 连接后,我们就能获得它的输入输出流,通信的本质是对输入输出流的处理。通过输入流,读取网络连接上传来的数据,通过输出流,将本地的数据传出给远端。

阅读更多

为什么TCP三次握手、四次分手?

借用标准图例说下三次握手的过程

TCP为什么需要三次握手?两次可以吗?TIME_WAIT状态有什么用?
  1. 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
  2. 第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
  3. 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
  4. 完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。

阅读更多