0%

1. http2介绍

HTTP/2 出来的目的是为了改善 HTTP 的性能。协议升级有一个很重要的地方,就是要兼容老版本的协议,否则新协议推广起来就相当困难,所幸 HTTP/2 做到了兼容 HTTP/1.1 。那么,HTTP/2 是怎么做的呢?

第一点,HTTP/2 没有在 URI 里引入新的协议名,仍然用「http://」表示明文协议,用「https://」表示加密协议,于是只需要浏览器和服务器在背后自动升级协议,这样可以让用户意识不到协议的升级,很好的实现了协议的平滑升级。

第二点,只在应用层做了改变,还是基于 TCP 协议传输,应用层方面为了保持功能上的兼容,HTTP/2 把 HTTP 分解成了「语义」和「语法」两个部分,「语义」层不做改动,与 HTTP/1.1 完全一致,比如请求方法、状态码、头字段等规则保留不变。

但是,HTTP/2 在「语法」层面做了很多改造,基本改变了 HTTP 报文的传输格式。

阅读全文 »

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

零. 前言

0.1 配置文件在哪

安装好nginx我们首先要知道配置文件在哪里?

1

说明nginx的主配置文件都在 /etc/nginx/nginx.conf里. 打开文件我们还可以看到

1
2
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

需要添加新配置选项的地方位于 sites-enabled 文件夹。如果你打开这个文件夹,你会发现一个名为 default 的文档,打开后你就会找到nginx的配置选项, 当你安装好nginx默认看到的首页就是在这里配置的.

在该目录下还有一个 sites-available 的文件夹, 这个文件夹一般在你需要建立和管理多个站点的时候非常有用,可以帮助你更好的组织不同的项目。你需要在这里添加你的nginx配置文案并将他们链接至 sites-enabled 目录下。

只有在 sites-enabled 目录下的配置文件才能够真正被用户访问。但是你同样可以将文件放在 sites-available 目录下用来存档或者生成链接。

阅读全文 »

新的博客系统准备使用hugo, 更想专注于写, 而不是写完每次都敲命令部署, 接下来搞下自动化部署.

另外blog要实现国内外分流进行加速, 国外去访问github page, 国内访问cdn, 或者自己的云服务器上(双十一撸的一直在吃灰)

阅读全文 »

1. kafka

1.1 安装

  • kafka_2.13-2.8.0.tgz , 前面的版本号是编译 Kafka 源代码的 Scala 编译器版本, 真正的版本号是2.8.0
1
2
3
wget https://mirrors.bfsu.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz
tar -xzf kafka_2.13-2.8.0.tgz
cd kafka_2.13-2.8.0
阅读全文 »

AWK 是一种处理文本文件的编程语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

grep 、sed、awk 被称为 linux 中的”三剑客”。grep 更适合单纯的查找或匹配文本, sed 更适合编辑匹配到的文本, awk 更适合格式化文本,对文本进行较复杂格式处理。

阅读全文 »

1. 安装和使用

1.1 mac安装

1
2
3
4
5
6
7
# 如果报错,提示安装 java, 安装即可
brew install kafka

# 先启动 zookeeper, 再启动 kafaka
zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties && kafka-server-start /usr/local/etc/kafka/server.properties

# 此时用 ps 查看进程可以看到是用 java 起来的。
阅读全文 »

1. TCP

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

  • 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;

  • 可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;

  • 字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。

    并且 TCP 报文是「有序的」,当「前一个」TCP 报文没有收到的时候,即使它先收到了后面的 TCP 报文,那么也不能扔给应用层去处理,同时对「重复」的 TCP 报文会自动丢弃。

1.1 TCP 头部字段

1

1. 头部格式

20字节固定 + 最大40字节扩展

2. 固定20字节详情

  • 源端口 2字节, 目的端口 2字节
  • 序号 4字节 , 我发送的是以 n 开始的序号
  • 确认号 4字节, 之前的都已经接收,下次希望给我传递 n, ACK位置必须=1
  • 数据偏移(说明头部字节是20还是到60) + 保留 + URG(紧急指针有效) + ACK + PSH(推送,尽快交给应用层) + RST(复位,重新建立连接) + SYN(tcp建立标志) + FIN(tcp释放标志) 一共2字节, 窗口2字节, 我的接收窗口大小 (例如rwnd=20)
  • 检验和2字节(检错算法), 紧急指针2字节(帮忙取出紧急数据)

3. 最大40字节扩展字段

阅读全文 »

1. 流量控制(滑动窗口)

TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。 接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

发送端和接收端各自有自己的滑动窗口。

阅读全文 »