- 博客(22)
- 资源 (27)
- 收藏
- 关注
原创 C语言创建tap设备并且设置ip
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/socket.h>#include <netinet/in.h>#include <net/if.h>#include &a
2019-01-29 15:03:33 2415
原创 KVM虚拟机典型配置文件xml
<domain type='kvm'> <name>vm64-1</name> //虚拟机名称 <memory unit='MiB'>2300</memory> //最大内存,单位M <currentMemory unit='MiB'>2300</currentMemory> //可用内存,单位M &am
2019-01-29 13:14:29 5586 1
原创 菜鸟学习nginx之总结杂耍
本篇是对Nginx学习最后一篇,若日后工作中对Nginx有了更深入了解,会再次写相关博客。一、关于Nginx几个典型问题1.1、为什么Nginx是高性能HTTP?是如何做到高性能?这种问题比较广,往往出现在面试过程中,比如说阿里、腾讯的人,他们就比较喜欢问这种问题。这种问题让谁说都可能比较头疼,下面是我自己的理解:1.优异框架,采用全异步方式2.优秀数据结构,例如内存池,字符串...
2019-01-17 23:06:54 235
原创 菜鸟学习Nginx之平滑升级
Nginx高可用、高可靠性体现它的平滑升级--在升级过程中能够保证业务不间断,那它是如何实现的呢?接下来我们一起探讨它的实现原理。一、升级过程1.1、查看进程信息先通过命令行感性的了解一下Nginx是如何进行平滑升级的?首先通过命令行查看进程信息,可知,一个master进程、两个worker进程,如下所示:[root@localhost ~]# ps -ef | grep ngi...
2019-01-17 23:06:00 717
原创 菜鸟学习Nginx之定时器
今天来分析一下Nginx定时器实现原理。一、Nginx定时器在网络通信中,客户端给服务端发送一个请求,如果服务端一直没有响应,那么客户端是不能一直傻傻的等待的,一般情况下,客户端需要设置一个超时定时器,当定时器超时后客户端需要进行后续处理。Nginx定期器常用在upstream、子请求中,这些在分析http模块时已经介绍。二、定时器实现2.1 定时器Nginx中定时器事件是...
2019-01-15 23:08:28 952
原创 菜鸟学习nginx之结束HTTP请求
当我们发送响应的时候,意味着我们即将结束当前HTTP请求,注意这里并不是关闭TCP连接,因此TCP连接可能正用在其他请求上。Nginx定义了很多接口用关闭HTTP请求,但用的最多还是ngx_http_finalize_request。接下来分析一下它。一、Nginx管理HTTP核心思想众所周知,Nginx全异步框架,当一个流程可能需要较长时间占用进程,那么Nginx建议派生出子请求(sub...
2019-01-15 09:56:17 4116
原创 菜鸟学习nginx之发送HTTP响应
上一篇介绍了Nginx接收HTTP body流程,今天介绍Nginx发送HTTP响应流程。一、发送HTTP Response header发送响应需要设置两部分内容,Response header和Response body(若有)。这里介绍一下发送的header函数。1.1、存储结构发送HTTP响应行、HTTP响应头保存的数据结构在,ngx_http_request_t中head...
2019-01-14 18:47:41 1499
原创 菜鸟学习nginx之HTTP body接收(3)
上一篇介绍了,Nginx是如何接收body主体流程,但是我们仍然没有了解到,Nginx是如何保存body的?也就是第一篇中提到的问题。本篇主要分析ngx_http_request_body_filter函数,该函数会帮助我们解决。一、ngx_http_request_body_t结构体typedef struct { ngx_temp_file_t ...
2019-01-13 15:29:26 2428 4
原创 菜鸟学习nginx之HTTP body接收(2)
上一篇介绍Nginx是如何丢弃body,虽然是丢弃body但是仍然需要乖乖的从socket缓冲区中读取报文才行。本篇将介绍实际接收流程。一、概要接收流程是比较复杂的,主要涉及到两个方面考虑:body过长如何保存以及一次接收不完body应该如何设置下次接收。Nginx采用如下方式解决上述问题:1、如果一个buffer缓冲区不能够容纳body,则会把body写入到临时文件中。2、如果一...
2019-01-13 15:29:20 4342
原创 菜鸟学习nginx之HTTP body接收(1)
上一篇介绍了Nginx是如何处理HTTP请求的,其实对于一个真正的HTTP请求,往往是有body的,只有处理完body才算真正处理完该请求。对于HTTP body来说一般处理有两种方式,要么是丢弃body,要么是接收body。对于接收body面临比较大的挑战,因为body是不定长,我们无法预先分配内存来接收body。况且http body可能很大,例如都上传一个高清电影,可能就有几个G大小。直...
2019-01-13 15:29:11 2476
原创 菜鸟学习nginx之HTTP请求处理(2)
在上一篇介绍了Nginx定义的11个阶段,本篇将深入介绍Nginx是如何处理HTTP请求的。一、ngx_http_process_request/** * 处理HTTP请求 * @param r HTTP请求 * 当成功接收到请求行和Header时 就可以处理HTTP请求流程 * 至于是否存在body 则在后续流程中处理 */void ngx_http_process_req...
2019-01-10 08:36:25 1109
原创 菜鸟学习nginx之HTTP请求处理(1)
上一篇主要介绍Nginx是如何处理HTTP Header。由于HTTP请求处理这部分代码是Nginx核心内容,打算用两篇文章深入介绍。本篇先介绍HTTP处理的11个阶段。一、HTTP处理11阶段1.1、为什么要有11阶段?这个得从Nginx设计出发。首先Nginx是单线程且完全异步框架,Nginx把所有功能都统一抽象成模块,即“万物皆模块”。每个模块仅仅完成一个独立、简单的功能(说白点...
2019-01-10 08:35:39 1381
原创 菜鸟学习nginx之接收HTTP Header
上一篇介绍了《菜鸟学习nginx之接收HTTP请求行》,本篇介绍Nginx接收HTTP Header处理流程。一、HTTP Header处理流程处理Header与上一篇处理HTTP请求行很类似,比较容易理解1.1、流程图1.2、代码/** * 处理HTTP Header * @param rev 读事件 */static voidngx_http_process...
2019-01-09 08:52:03 5675
原创 PostMan操作etcd数据库
对于通过http api操作etcd网上大部分教程都是通过curl命令行方式(官网介绍方式),但是对于window系统或者测试人员可能更喜欢用HTTP接口测试工具,今天来介绍一下如何用Postman操作etcd,其他HTTP接口测试工具也是一样的。一、查询/v2/keysetcd支持的HTTP api有很多,不可能把所有的都介绍了,这里只把常用api接口进行演示说明。第一个就是查询接口,查...
2019-01-08 18:22:33 1357
原创 菜鸟学习nginx之接收HTTP请求行
上一篇介绍了HTTP会话建立流程,本篇介绍接收HTTP Header流程。由于Nginx是完全异步的,这对编写HTTP框架提出比较高的要求,因此Nginx在实现HTTP框架时定义出11个阶段。后续章节会详细介绍该11阶段。本篇介绍的接收HTTP Header请求在HTTP框架中是逻辑比较简单。HTTP协议本身虽然比较简单,但是对于解析HTTP协议并不是很容易。体现之处就是HTTP协议heade...
2019-01-08 15:22:52 1949
原创 深入剖析Flannel-简介
随着docker容器化兴起,云计算面对的挑战越来越大,例如:网络管理、存储等。一个数据中心很容易搞出成百上千个容器,这么多的容器我们需要如何管理呢?今天来介绍的flannel就是为了解决网络问题。一、网络管理方案目前使用最多的解决方案有两种:直接路由和overlay network。具体差异如下: 特点 代表 直接路由 采用直接路由的方式,这种方式性能损耗最低,...
2019-01-08 15:00:39 19929
原创 菜鸟学习Nginx之HTTP会话
从本篇开始,介绍Nginx中HTTP相关。Nginx做为Web Server那么HTTP必然是重中之重。本篇不打算介绍太深入,本篇最主要内容是如何与事件驱动关联起来。一、监听端口Nginx默认监听端口是80端口,那么Nginx是如何将80端口的listening事件注册到事件驱动(epoll)中呢?这里简单回顾一下,具体内容可参考《菜鸟学习nginx之核心模块ngx_events_modu...
2019-01-07 10:35:41 657
原创 菜鸟学习nginx之惊群处理
“惊群”这个名词是我阅读Nginx时第一次接触到的,也算是学到了一点点知识吧。一、惊群1.1、惊群定义对于惊群的概念简单描述一下:通常场景一个端口P1只能被一个进程A监听,所以端口P1发的事件都会被该进程A所处理。但是,如果进程A通过系统调用fork(),创建子进程B,那么进程B也能够监听端口P1。这样就可以实现多进程监听同一个端口并且进入阻塞状态。这样就引发了一个问题,当客户端发起T...
2019-01-05 15:21:00 706 1
原创 docker-compose.yaml示例
docker提供了一个工具docker-compose命令行,用于批量部署容器,docker-compose需要一个yaml文件(实质为文本文件),默认名字为docker-compose.yaml(docker-compose.yml)。如果熟悉k8s的同学可能对yaml并不是陌生,这里只是做一个笔记方便日后查询。version: '2' services: #服务定义 开始标签 con...
2019-01-03 09:12:05 4923
原创 菜鸟学习nginx之事件模块epoll(2)
上一篇介绍的内容是ngx_epoll_module模块初始化、关闭以及核心内容事件循环。但是具体如何将事件注册到事件驱动中呢?nginx对其进行了封装,ngx_add_event/ngx_del_event。然而上层应用模块,例如HTTP模块并不直接使用这两个接口,而是使用再次封装函数ngx_handle_read_event/ngx_handle_write_event。一、ngx_add_...
2019-01-02 19:38:35 535
原创 死磕Linux防火墙(iptables和firewalld)
对于Linux防火墙无论是使用方式上还是实现机制上理解的都不是很深刻。例如,在windows做端口映射很方便,但是到了linux下面却很头疼,今天打算彻底搞懂它。一、Linux防火墙概述1.1、背景1) iptables和firewalld并不是真正的防火墙,他们两个只是管理工具。通过他们两个自身的服务(配置),去配置内核中Netfilter和TCPwrappers。对于日常工作,这两...
2019-01-02 13:03:56 455
原创 菜鸟学习nginx之事件模块epoll(1)
上一篇介绍核心事件模块,本篇介绍事件模块ngx_epoll_module。Nginx在linux环境下采用epoll网络模型,对于epoll网络型不了解的可自行百度查询,本篇不在阐述。一、问题本篇要澄清以下几个问题:1、当客户端发起TCP连接后,事件模块是如何管理新连接?2、Nginx是如何接收到客户端请求(只是TCP层请求非HTTP请求)?3、Nginx是如何发送响应给客户端...
2019-01-01 16:19:04 1357
charles-proxy-4.5.6_amd64.tar.gz
2020-07-22
MemoryAnalyzer-1.9.2.20200115-linux.gtk.x86_64.zip
2020-04-16
Dremel+made+simple+with+Parquet.pdf
2019-09-30
vscode支持golang相关bin
2019-01-15
wireshark支持flannel报文解析
2019-01-03
Nginx实现登录、留言板、文件上传
2018-12-04
无线网卡Rtl8188EUS驱动文件
2018-11-22
oauth-proxy docker 镜像
2018-03-30
openvswitch hmap举例
2015-12-27
Centos6.7 OpenVSwitch-2.4.1.rpm x86
2015-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人