avatar
文章
126
标签
134
分类
17
首页
归档
标签
分类
友链
咕咕
搜索
首页
归档
标签
分类
友链

咕咕

漏桶与令牌桶速率限制算法
发表于2019-07-01|算法•限流•Nginx
一、漏桶算法漏桶算法(Leaky Bucket)是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。示意图如下所示: 1.1、算法过程 数据包入队列:数据包按照一定的顺序存储入用于临时存储的缓存队列(数据桶)中; 数据包等待或溢出:数据包在缓存队列(数据桶)中等待一段时间,或者如果此时缓存队列(数据桶)已经达到存储的上限,数据包溢出(被丢弃); 数据包出队列:将缓存队列(数据桶)中的数据包按照固定的速率依次出队列并进行处理; 1.2、特点 优点: 能够强行限制数据的传输速率; 保证严格的延迟界限; 缺点: 对突发性的流量缺乏处理效率; 1.3、相关项目 Nginx中关于漏桶的设计与实现:ngx_http_limit_req_module...
Redis的Memory命令讲解
发表于2019-01-24|C/C++•Redis
一、简述Memory指令是Redis4.0版本更新的特性,可用于详细的分析内存的使用情况,内存使用诊断,内存碎片回收等工作; 可以通过memory help指令打印出memory指令的信息,详细信息如下所示: 1) MEMORY <subcommand> arg arg ... arg. Subcommands are:2) DOCTOR - Return memory problems reports.3) MALLOC-STATS -- Return internal statistics report from the memory allocator.4) PURGE -- Attempt to purge dirty pages for reclamation by the allocator.5) STATS -- Return information about the memory usage of the server.6) USAGE <key> [SAMPLES <count>] -- Return memory in...
TCL语言入门
发表于2019-01-13|Redis•TCL
一、简述Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,一条TCL的命令串包含若干条命令,命令使用换行符或分号来隔开;而每一条命令包含若干个域(field),域使用空白(空格或TAB)来隔开——第一个域是命令的名字,其它的域是该命令的参数。 二、基本语法2.1、注释注释在调试的过程中轻常碰到。TCL语言的注释符号是 # ,加在每一行的最前面。 2.2、脚本、命令、单词一个TCL 脚本 可以包含一个或多个 命令 。 命令 之间必须用换行符或分号隔开,推荐使用换行符分开。下面就是一个合法的TCL 脚本 ,它由两个赋值 命令 组成; set a 1set b 2 TCL的每一个 命令 包含一个或几个 单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用 空格 或 TAB键 隔开。上面代码中的 set , a , 1 分别是三个单词。 TCL解释器对一个 命令 的求值过程分为两部分:分析和执行; 在分析阶段,TCL 解释器运用规则把 命令 分成一个个独立的单词,同时进行必要的 置换(substitution) ; 在执行阶段,TCL...
localtime函数死锁分析
发表于2019-01-12|Redis•锁
一、简介前段时间,线上的redis实例出现了一些异常的情况,具体变现就是bgsave子进程hang住了,从而引发了后续的很多问题,通过排查最终发现是localtime相关函数引起的,这里做一下总结记录。 C 库函数 *struct tm *localtime(const time_t timer) 作用是根据本地时区信息将 time 函数获取的 UTC 时间调整为为本地时间,并将具体的时间信息填充到tm结构体之中; 二、详细介绍由于localtime函数的具体底层实现的缘由,在某些场景下会触发localtime函数导致的死锁问题,这里详细的分析原因以及后续的处理方案; 2.1 底层实现分析localtime函数底层的调用栈信息为: localtime() => __tz_convert() localtime 函数的底层代码实现(代码位于./time/localtime.c): /* Return the `struct tm' representation of *T in local time. */struct tm *localtime...
Clang-Format格式化工具
发表于2019-01-08|C/C++•编程语言•工具
Clang-Format 是基于 clang 的一个命令行工具,这个工具能够自动化格式 C/C++/Obj-C 代码,支持多种代码风格(Google, Chromium, LLVM, Mozilla, WebKit),同时也支持自定义风格(通过编写.clang-format文件),这里记录了常用的配置 Clang-Format 常用的配置项及其含义。 一、安装方式# macbrew install clang-format 二、参数解析官方文档的参数解析为:http://clang.llvm.org/docs/ClangFormatStyleOptions.html 2.1 参数解析BasedOnStyle样式信息: LLVM:一种遵循LLVM coding standards的样式; Google:一种遵循Google’s C++ style guide的样式; Chromium:一种遵循Chromium’s style guide的样式; Mozilla:一种遵循Mozilla’s style...
hashlimit-Iptables笔记
发表于2019-01-04|hashlimit•iptables•网络
一、简介hashlimit是iptables的一个匹配模块,用它结合iptables的其它命令可以实现限速的功能。注意:单独hashlimit模块是无法进行限速的; 二、原理介绍实际上,使用 hashlimit 进行限速主要包括两个步骤: 对符合 hashlimit 匹配规则包放行 丢弃/拒绝未放行的包 2.1 令牌桶模型hashlimit 的匹配方式是基于令牌桶(Token bucket)的模型,令牌桶是一种网络通讯中常见的缓冲区工作原理,它有两个重要的参数,令牌桶容量n和令牌产生速率s; 令牌桶容量n:可以把令牌当成是门票,而令牌桶则是负责制作和发放门票的管理员,它手里最多有n张令牌。初始时,管理员开始手里有n张令牌,每当一个数据包到达后,管理员就看看手里是否还有可用的令牌。如果有,就把令牌发给这个数据包,hashlimit 就告诉iptables,这个数据包被匹配了,而当管理员把手上所有的令牌都发完了,再来的数据包就拿不到令牌了;这时,hashlimit 模块就告诉 iptables...
Linux内核软件框架-Netfilter概述
发表于2019-01-03|Netfilter•Linux
一、简述Netfilter是Linux内核中的一个软件框架,用于管理网络数据包。不仅具有网络地址转换(NAT)的功能,也具备数据包内容修改、以及数据包过滤等防火墙功能。利用运作于用户空间的应用软件,如iptables等,来控制Netfilter,系统管理者可以管理通过Linux操作系统的各种网络数据包。1990年代,Netfilter在Linux 2.3.15版时进入Linux内核,正式应用于Linux 2.4版。 现今许多市面上许多的IP分享器或无线网络路由器(Wireless...
PrettyTable-Python使用笔记
发表于2019-01-02|PrettyTable•Python
一、简述PrettyTable是一个简单的Python库,旨在快速,轻松地在视觉上吸引人的ASCII表中表示表格数据。 它的灵感来自PostgreSQL shell psql中使用的ASCII表。 PrettyTable允许选择要打印的列,列的独立对齐(左对齐或右对齐或居中)以及通过指定行范围打印“子表”。GitHub 二、安装与使用# 安装:使用pip可以方便的安装PrettyTablepip install PrettyTable# 使用:python代码中引入该库import prettytable as pt 三、相关API介绍3.1、创建表3.1.1、普通创建表:import prettytable as pttb = pt.PrettyTable() 3.1.2、从已有的文件中创建# 【利用CSV文件创建】# + 变量pt将是一个完全填充的PrettyTable对象;# + CSV文件的第一行将被解释为字段名称并用于表头;# + 可以通过传递“field_names”关键字参数来指定自己的字段名称;from prettytable import...
Linux下的Cache/Buffer
发表于2019-01-01|内存
经常在使用 Linux 的时候会发现有一些内存经常被 Cache 和 Buffer 占用,而关于这两者之间的关系与区别却不了解,这篇文章主要就是介绍一下两者的区别与相关的运维手段。 一、含义 Cache(缓存):指 CPU 和内存之间高速缓存,为了调高CPU和内存之间数据交换而设计,用来给文件做缓存(相关的是PageCache),主要是针对读操作设计的; Buffer(缓冲):指在写入磁盘前的存储在内存中的内容,为了提高内存和硬盘(或其他I/O设备的数据交换而设计),主要是针对写操作设计的; 下面为Linux下free指令显示的信息,以下简单描述一下各选项的含义: [root@* ~]# free -g total used free shared buff/cache availableMem: 125 2 109 1 13 120Swap: 7 ...
Netfilter的数据包过滤器iptables
发表于2019-01-01|iptables•Netfilter
...
1…789…13
avatar
bugwz
持续学习,持续进步
文章
126
标签
134
分类
17
最新文章
Ceph Crimson 设计实现深入解析
Ceph Crimson 设计实现深入解析2025-06-01
Ceph Crimson 集群搭建指南
Ceph Crimson 集群搭建指南2025-01-12
Ceph QoS 机制深入分析
Ceph QoS 机制深入分析2024-10-25
GPFS 集群部署与运维记录
GPFS 集群部署与运维记录2024-08-01
Ceph CRUSH 设计实现剖析
Ceph CRUSH 设计实现剖析2023-06-30
分类
  • Redis17
    • RedisCluster1
    • RedisModule10
    • 异地多活1
    • 演进史3
    • 特性1
    • 相关库1
  • 论文10
标签
抓包 性能分析 论文 Notes SSD 区块链 Redis Latex RedisTimer OpenVPN GitHub Pages Tools MacOS 算法 SmartCache C/C++ 哈希表 Shadowsocks RateLimit 树 HAProxy Go Docker 爬虫 nf_conntrack 刷机 Windows RedisIntervalSet 内网穿透 分布式 工具 GDB SS-Panel RedLock 代理服务器 TopK Ngrok 常用命令 负载均衡 RPM
归档
  • 六月 2025 1
  • 一月 2025 1
  • 十月 2024 1
  • 八月 2024 1
  • 六月 2023 4
  • 四月 2023 1
  • 一月 2023 1
  • 十二月 2022 3
网站信息
文章数目 :
126
本站总字数 :
469k
本站访客数 :
本站总浏览量 :
©2019 - 2025 By bugwz
框架 Hexo 6.3.0|主题 Butterfly 5.3.5