PancakeLiu's Blog

Record my growth and record my life!

KCP:一种高效且可靠的ARQ协议

"KCP - A Fast and Reliable ARQ Protocol"

1. KCP简介 KCP是一个快速可靠协议,能以比 TCP 浪费 10-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。 纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。 整个协议只有 ikcp.h, ikcp.c...

基于eBPF的高性能网络转发实战

"High-performance network forwarding based on eBPF"

1. eBPF原理 每个eBPF程序都属于特定的类型,不同类型eBPF程序的出发事件是不同的。网络类eBPF程序可以分为XDP程序、TC程序、套接字程序以及cgroup程序。 XDP:在网络驱动程序刚刚收到数据包的时候触发执行,支持卸载到网卡硬件,常用语防火墙和四层负载均衡 TC:在网卡队列接收或发送的时候触发执行,运行在内核协议栈中,常用于流量控制 套接字:在套接字发...

kubernetes集群自定义指标扩容缩容hpa-custom-controller的原理及实现

"与promethues监控平台等组件交互,实现pod多维度扩容缩容的高可用组件"

1. k8s-hpa与我们的hpa-custom-controller 1.1 为什么需要自动扩容与缩容? 一个业务可能存在这样的问题:一天之中绝大多数的时间的流量都很平滑,每秒的qps比较低,cpu使用率常年低于20%。但因为某种原因(工人每天6点下班,某某活动)会存在一个海量请求汇聚的时间段。cpu瞬间提升至80%以上,接收队列与发送队列满,超时丢包情况频频发生。物理机或虚拟机该如何...

filebeat to elasticsearch针对于filebeat端稳定性优化--修复filebeat文件描述符溢出问题

"filebeate版本迁移至5.3,修复filebeat文件描述符溢出BUG,Make our filebeat stronger!"

1.ISSUE: filebeat文件描述符溢出 问题的描述:使用filebeat跑了过节的一段时间,线上环境磁盘报警。删掉日志后,发现剩余的磁盘容量仍不客观。使用lsof命令分析后。结果如下图所示: 产生这样的原因是因为后端elasticsearch压力过大挂掉后,filebeat代码整个会阻塞在publisher,不断往elasticsearch推数据、不断的失败。为什么...

filebeat to elasticsearch针对于filebeat端性能优化--性能提升230%

"基于配置文件的优化以及代码层面的优化"

注意:本文中说的日质量大小均为原始日质量文件大小。不是filebeat处理过后的日质量大小 1. filebeat介绍 filebeat最初是基于logstash-forwarder源码的日志数据shipper。Filebeat安装在服务器上作为代理来监视日志目录或特定的日志文件,要么将日志转发到Logstash进行解析,要么发送到Elasticsearch或Redis等组件进行...