41-ARQ 自动重传请求(Automatic Repeat-reQuest,ARQ)自动重传请求(Automatic Repeat-reQuest,ARQ)是 OSI 模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认信息(Acknowledgements,就是我们常说的 ACK),它通常会重新发送,直 2021-03-08 network #network
41-SACK 标准的 TCP 确认机制中,如果发送方发送了 0-1000 序号之间的数据,接收方收到了 0-100、300-1000,那么接收方只能向发送方确认 101,这时发送方会重传所有 101-1000 之间的数据,实际上这是不必要的,因为有可能仅仅是丢了一小段而已,但是在标准的 TCP 确认机制中,发送方无法感知这一事情,只能重传从 101 开始的所有数据。 为了优化这种情况,必须让发送方知道更多的接收 2021-03-08 network #network
70-HTTP HTTP 1.0 和 HTTP 1.1 的主要区别是什么HTTP/1.0 最早在网页中使用是在 1996 年,那个时候只是使用一些较为简单的网页上和网络请求上,HTTP/1.1 则在 1999 年才开始广泛应用于现在的各大浏览器网络请求中,同时 HTTP1.1 也是当前使用最为广泛的 HTTP 协议。主要区别主要体现在: 长连接: HTTP/1.0 中,默认使用短 2021-03-08 HTTP #HTTP
70-HTTP 请求方式 根据 HTTP 标准,HTTP 请求可以使用多种请求方法 HTTP1.0 定义了三种请求方法:GET、POST 和 HEAD 方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。 1、GET【获取资源】GET 本质就是发送一个请求来取得服务器上的某一资源。资源通过一组 HTTP 头和呈现数据(如 HTML 文本 2021-03-08 HTTP #HTTP
71-HTTPS 这篇文章写的不错,转载一下 https://zhuanlan.zhihu.com/p/43789231 为什么需要加密?因为 http 的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们才需要对信息进行加密。最容易理解的就是对称 2021-03-08 HTTP #HTTP
71-SSL TLS 握手协议 1、TLS/SSL 的前世今生SSL(Secure Sockets Layer)最初由 Netscape 定义, 分别有 SSLv2 和 SSLv3 两个版本(SSLv1未曾对外发布),在 SSLv3 之后 SSL 重命名为 TLS。 TLS(Transport Layer Security)版本从 TLSv1.0 开始,TLSv1.0 是在 SSLv3 的基础上升级而来。 协议 2021-03-08 HTTP #HTTP
80-00 IO 模型 简介 IO 模型介绍传统的网络 IO 模型包括五种: [阻塞IO(blocking IO)](#阻塞IO(blocking IO)) [非阻塞IO(non-blocking IO)](#非阻塞IO(non-blocking IO)) [多路复用IO(IO multiplexing)](#多路复用IO(IO multiplexing)) 信号驱动IO模型 [异步IO(Asynchronous I 2021-03-08 network #network
80-30 IO 模型-多路复用 基础 前提在介绍 select、poll、epoll 前,有必要说说 linux(2.6+) 内核的事件 wakeup callback 机制,这是 IO 多路复用机制存在的本质。 Linux 通过 socket 睡眠队列来管理所有等待 socket 的某个事件的 process,同时通过 wakeup 机制来异步唤醒整个睡眠队列上等待事件的 process,通知 process 相关事件发生。 通常情 2021-03-08 network #network
80-31 IO 模型-多路复用 select select 函数该函数准许进程指示内核等待多个事件中的任何一个发送,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒。函数原型如下: 123456789101112131415161718192021222324252627282930313233343536#include <sys/select.h>#include <sys/time.h>int select 2021-03-08 network #network
80-32 IO 模型-多路复用 poll 简介poll 的机制与 select 类似,与 select 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是 poll 没有最大文件描述符数量的限制。poll 和 select 同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。 poll 函数函数格式如下 2021-03-08 network #network
80-33 IO 模型-多路复用 epoll 背景epoll 是在 2.6 内核中提出的,是之前的 select 和 poll 的增强版本。相对于 select 和 poll 来说,epoll 更加灵活,没有描述符限制。epoll 使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的 copy 只需一次。 epoll 接口epoll 操作过程需要三个接口,分别如下: 1234567 2021-03-08 network #network
80-33 IO 模型-多路复用 epoll 2 原文链接:https://zhuanlan.zhihu.com/p/63179839 一、从网卡接收数据说起下图是一个典型的计算机结构图,计算机由CPU、存储器(内存)、网络接口等部件组成。了解epoll本质的第一步,要从硬件的角度看计算机怎样接收网络数据。 下图展示了网卡接收数据的过程。在①阶段,网卡收到网线传来的数据;经过②阶段的硬件电路的传输;最终将数据写入到内存中的某个地址上(③ 2021-03-08 network #network
Flink 上传的包 先看一张图片 上传 jar 包两个重要的配置 web.tmpdir:上传 jar 包临时目录,重启后上传包就会被删除。。格式:java.io.tmpdir + “flink-web-” + UUID web.upload.dir: jar 包上传目录。flink 上传 jar 包逻辑:从配置文件中找 UPLOAD_DIR,若是为 null 就找 TMP_DIR 目录来看成 jar 上传的路径 2021-03-08 Flink #Flink
Flink 历史服务器 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 历史服务器运行 Flink job 的集群一旦停止,只能去 yarn 或本地磁盘上查看日志,不再可以查看作业挂掉之前的运行的 Web UI,很难清楚知道作业在挂的那一刻到底发 2021-03-08 Flink #Flink
Flink 快速上手 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 1、创建项目在准备好所有的开发环境之后,我们就可以开始开发自己的第一个 Flink 程序了。首先我们要做的,就是在 IDEA 中搭建一个 Flink 项目的骨架。我们使用 J 2021-03-08 Flink #Flink
Flink 报错之 Upload 一直停留在 saving 报错: flink new Job 时 一直在saving 如下图所示: 通常是由于 nginx 服务器造成的,查看 nginx 报错,我碰到过两种情况 报错 500:上传文件目录没有权限 解决方案:修改上传目录权限 报错 413(Request Entity Too Large):上传文件太大,超出了 Nginx 的默认值 解决方案:修改 Nginx 设置 client_ma 2021-03-08 Flink #Flink
Flink 程序开发步骤(Java语言) 开发流程Flink 的流处理 API(DataStream API)位于 org.apache.flink.streaming.api.scala 包(Scala语言)或 org.apache.flink.streaming.api 包(Java语言)中。本文以 java 为例。 我们如果要使用Flink进行计算开发,一个完整的开发步骤是怎样的呢? 什么叫有界数据流,什么叫无界数据流(何为流处理, 2021-03-08 Flink #Flink
Flink 简介 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 1、Flink是什么Flink 核心目标,是 “数据流上的有状态计算” (Stateful Computations over Data Streams)。 具体说明:Apa 2021-03-08 Flink #Flink
Flink 配置之日志配置 前言本文介绍的内存配置方法基于 Flink 1.10 Flink 应用程序容器创建并写入三种类型的日志文件:.out 文件、.log 文件和 .err 文件。仅限将 .err 文件压缩并从文件系统中删除,而将 .log 和 .out 日志文件保留在文件系统中。 每个独立的JobManager,TaskManager,HistoryServer和zookeeper守护重定向stdout和stderr 2021-03-08 Flink #Flink
Flink 集群搭建及作业提交初体验 Flink 官网主页地址:https://flink.apache.org Flink 官方中文地址:https://nightlies.apache.org/flink/flink-docs-stable/zh/ 1、集群角色 Flink 提供作业和执行任务,需要几个关键组件: Client(客户端):代码由客户端获取并做转换,之后提交给JobManager JobManager:就 2021-03-08 Flink #Flink