摘要:
k8s节点介绍 分为master节点和node节点,master节点负责整个集群的调度,node节点负责应用容器的运行。 k8s组件介绍 kubectl kubectl 是一个客户端的管理工具,它会监听apiserver,比如有创建pod的事件时,会执行pod创建的相关操作,也会执行探针检测。 ku 阅读全文
摘要:
1. 前言 首先介绍一下rpc的概念,首先它是一种框架,而不是一种协议, 它的初衷是让用户可以向调本地方法一样调用远端的服务,在通信过程中,客户端和服务端需要约定一种通信机制,确保发送者发送的数据能被接收者能正确的解析,这就是协议 , 如grpc框架采用的是HTTP2协议,而HTTP2是采用prot 阅读全文
摘要:
1. 字符串高效拼接 在 Go 语言中,字符串(string) 是不可变的,拼接字符串事实上是创建了一个新的字符串对象。如果代码中存在大量的字符串拼接,对性能会产生严重的影响 1.1 常见的拼接方式 为了避免编译器优化,我们首先实现一个生成长度为 n 的随机字符串的函数。 const letterB 阅读全文
摘要:
1.什么是粘包? “粘包”这个说法已经被诟病很久了,既然坊间流传这个说法咱们就沿用吧,关于这个问题比较准确的解释可以参考下面几点: TCP是流传输协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议 TCP没有包的概念,它只负责传输字节序列,UDP是面向数据报的协议,所以不存在拆包粘包问题 应 阅读全文
摘要:
令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。 package main import ( "fmt" "github.com/juju/ratelimit" "time" ) var bucketMap 阅读全文
摘要:
前言 假设作为一个完全不懂算法的人,让你去实现一个限速功能(1秒内最多100次),你可能会想到的最简单方式就是记录一个开始时间,然后开始计数,当计数达到100之后限制调用,等待时间间隔达到1秒的时候重置计数器,然后重新计数,如此往复。 这种方式被称为计数器算法,也可以理解为固定时间窗口计数法,因为与 阅读全文
摘要:
前言 怎么用channel来控制并发呢?我们最直观的想法就是构造一个带缓存的channel,一个协程在执行前先往里面占一个坑,执行完后再释放这个坑位,这样一来始终只有固定数量的协程在同时执行,从而达到并发控制的效果。 实现 open-falcon里使用第三方包 github.com/toolkits 阅读全文