笔迹-工匠之芯

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

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

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

LibCurl连接复用原理

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

LibCurl-DNS超时参数解析

一. 名称CURLOPT_DNS_CACHE_TIMEOUT - 设置DNS缓存条目的生存时间 二. 摘要1#include <curl/curl.h> 2 3CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age); 三. 描述传递一个long类型参 …

Go 十年

Russ Cox,代表Go团队 2019年11月8日 Happy birthday, Go! 这个周末,我们庆祝Go发布10周年,庆祝Go作为一种开源编程语言和构建现代网络软件的生态系统的10周年。 为了纪念这一时刻,Go gopher的创始人蕾妮·弗兰奇描绘了这一令人愉快的场景: 庆祝Go十周年让我回想起2009年11月上旬,那时我们正准备与世界分享Go。 …

Curl-VS-Guzzle 性能测试

Curl-VS-Guzzle 性能测试这里项目围绕Curl 和 Guzzle这两个HTTP请求组件进行一些压力测试,看一下性能差距.我们围绕两个组件的连接复用情况来测试.(文章中会强调opcache的作用) 一. 测试阐述 测试curl和guzzle在连接复用情况下的性能差别 (guzzle不开启opcache) 测试curl和guzzle在连接复用情况下的 …

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

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

PHP内核函数: microtime

microtime Description ¶ microtime ([ bool $get_as_float = FALSE ] ) : mixed microtime() returns the current Unix timestamp with microseconds. This function is only available on …

基于CMake构建标准GoLang编译和打包框架

##一. 背景描述 为了简化团队内部中间件的编译及打包和方便运维伙伴的线上环境部署过程 , 我们开始尝试使用标准的rpm安装包来进行线上的环境部署,虽然制作rpm安装包可以采用很多途径 , 但是我们选择采用CMake方式 , 采用这种方式的优点如下: 利用CMake 可以构建出很强大的自动编译系统. CMake在编译周期结束后,支持rpm , zip等格式的 …