穷则独善其身,达则兼济天下

工匠之心,技术狂热追求者,开源社区爱好者,一个记录成长的站点。

分类 网络编程 下的文章

HTTP/3与HTTP/2的性能比较

这是一篇来自cloudflare公司的博客译文,阐述了一些HTTP3与HTTP2的性能对比。我们在去年Cloudflare的生日周宣布支持HTTP/3,它是HTTP/2的继承者。我们的目标是并且一直是帮助建立一个更好的互联网。在标准方面的合作是其中的一个重要部分,我们很幸运能在这里做到这一点。尽管HTTP/3仍然处于草稿状态,但我们已经看到了很多用户的兴趣。到目前为止,已经有超过113000...

MKV-高性能分布式内存KV-开篇

一. 背景描述目前缓存环境中,使用较多的是Redis缓存,但是Redis单线程机制,在特高并发场景中还是能达到吞吐瓶颈,又由于很多大数据应用场景需要单次GET 1000或者更多的key,所以直接打到Redis服务器上,很容易让Redis主线程出现阻塞情况,产生吞吐大大下降的情况。在这样的情况下,我们就设想架构设计一个分布式内存的缓存系统(MKV),主要设计目标包括一下:多线程机制保障多核使用...

LibCurl连接复用原理

一. 背景描述Curl是计算机中使用最多的网络请求工具,很多开源项目在内核中对于HTTP、FTP的操作是通过libcurl库获得的技术支持。这篇文章主要调研libcurl库中的TCP连接复用部分。二. 连接池Libcurl针对tcp连接采用了连接池管理,一次传输完成后,它将在“连接池”(有时也称为连接缓存)中保持N个连接处于活动状态,以便恰好能够重用现有连接之一的后续传输可以使用它而不是创建...

PHP-CURL-Guzzle-HTTP-连接复用内核原理

PHP-CURL连接复用内核原理0.写在前面PHP是一个时代的产物,它的底层支持是C语言,因此它在CPU密集型计算或者系统内核调用上有天生的优势,Zend引擎把PHP执行生命期分成了五个阶段1,这五个阶段并不是全部都能常驻进程,这种模式下,对于很多使用场景会造成不好的影响,比如网络IO.对于网络IO中的HTTP请求 , 很多工程师使用 php-curl 系列函数 . 所以这篇文章将从内核角度...

开源: IO读取缓冲器-BufReader

一. IO问题思考IO读取缓冲器,顾名思义就是针对系统的IO读取操作添加一层缓冲层,有这层缓冲层到底有啥好处呢?针对这个问题,我先问大家以下几个问题.对于IO读取操作,无论针对的是对象,还是针对网络,每次IO操作均需要陷入内核调用,频繁内核调用会严重影响性能,请问有没有什么办法优化这部分?针对网络IO读取过程,网络时好时坏,如何让网络IO能够发挥最大的性能潜力,在网络好的时候抓紧多读,在网络...

开源: 高性能网络监听库-NetHandle

NetHandle这是一个库,方便构建高性能TCP服务端应用程序,站在Go语言的巨人肩膀上项目地址: https://github.com/gitsrc/NetHandle一. 特点高性能,低资源消耗非常简单易用的开发接口支持众多协议,TCP,UDP,UNIX二. 安装go get -u github.com/gitsrc/NetHandle三. 性能测试:3.1 50*10000 (50...

研究报告:JAVA 与 Golang 在 UDP服务器上的性能对比

背景介绍因工作需求,目前需要采用UDP协议来存储用户日志信息,目前采用了JAVA 和 Golang 两种途径。Linux内核优化(非常重要)可以使用netstat -su 查看UDP是否有错包,如果查看到有UDP receive errors,可以调整UDP缓冲区的大小以应对大规模请求,主要参数如下net.core.rmem_max=26214400 net.core.rmem_defaul...

UdsPipeTun使用教程

背景NetPipeTun是一个转发HTTP请求的中间件,因为传统的HTTP请求速度很慢,PHP对于Keep-alive支持的力度又不够,此中间件把用户GET或者POST请求序列化为完整的HTTP数据包、并把数据包通过Unix domain socket等高速通路进行传送,达到快速通信的目的。结构描述中间件结构包括client、config、exception、http、reponse、req...