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

工匠之路

分类 网络编程 下的文章

开源: 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...

开源项目:manEcho(一个Linux内核函数查询工具)

背景描述由于工作原因,经常需要查询linux内核函数,对于不同版本的linux版本,部分函数还有一些差异,对于这种需求,我就动手实现了一个小工具,可以帮助我快速查询linux内核函数。工具原理工具分为两部分,客户端和服务端,客户端用于发送搜索请求,服务端用来接受用户的请求并把用户的请求转换成linux的man命令在指定版本的内核文档目录中执行,执行完毕后,把标准输出中的结果数据通过socke...

开源项目:基于UDP协议的日志记录系统(LogDarts)

背景介绍日志对于任何一个需要稳定运行的系统都弥足珍贵,如何构造一个高性能的统一日志平台,首先需要解决的是“记录”,如何用最快、性能损耗最小的方式来记录日志?UDP是一个不错的选择:首先UDP通道的带宽需求小,能达到很好的实时性;其次UDP不需要维持连接,在网络传输中的动作少。有人会说,UDP是不稳定传输、使用时数据风险大。对于这点,我们需要考量具体使用环境,在我们的日志系统中,每台机器都会运...

研究报告: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...

网络编程:读取完整数据包的细节处理(适用于Unix domain socket)

对于TCP网络编程,读取对方数据是一个最普遍的操作,但是如何把对方的数据包完整读取到,这个看似简单的问题,需要小心处理,下面发一份公众代码,无论是书籍还是网上问答基本给出的都是这个答案。var dataBytes bytes.Buffer buf := make([]byte, 10); for { n, err := conn.Read(buf) if err != nil...