摘要:
GM模型 第一个M怎么来的?,G怎么找到对应的P? 1. 系统启动的时候,首先跑的是主线程,那第一个M应该就是主线程吧M1 2. 然后这个主线程会绑定第一个P1 3. 咱们写的main函数,其实是作为一个goroutine来执行的(雨痕说的) 4. 也就是第一个P1就有了一个G1任务,然后第一个M1 阅读全文
摘要:
一、什么是websocket Websocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。即:websocket分为握手和数据传输阶段,即进行了HTTP握手 + 双工的TCP连接。 下面我们分别来看一 阅读全文
摘要:
架构介绍 首先,从架构上,图片被两个datacenter分成了上下两部分;但这两部分又并不是完全隔离的,他们之间通过WAN GOSSIP在Internet上交互报文。因此,我们了解到consul是可以支持多个数据中心之间基于WAN来做同步的。 再看单个datacenter内部,节点被划分为两种颜色, 阅读全文
摘要:
熔断检测机制 (1)请求call到backend后,首先判断熔断开关是否打开 (2)如果熔断开关已打开,则表明当前请求不能被处理 (3)如果熔断开关未打开,则判断时间窗口(判断统计错误率)是否已满 (4)如果时间窗口(判断统计错误率)未满,则请求桶(redis) 中的请求数加1 (5)如果返回的re 阅读全文
摘要:
计数器(固定窗口)算法 计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。 此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。 这个算法通常用于QPS限流和统计总访问量,对于秒级以 阅读全文
摘要:
一、状态机要素 可以把状态机的要素分为4个要素,即:现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。 (1)现态:是指当前所处状态;(2)条件:又称为“事件”。当条件被满足时,将会触发一个动作,或者执行一次状态的迁移。(3)动作:条件满足后执行的动作。动作不是必须的,当条件满 阅读全文
摘要:
布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。 一、布隆过滤器简介 当你往简单数组或列表中插 阅读全文
摘要:
什么是负载均衡 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求 阅读全文
摘要:
k8s上service是用来解决Pod访问问题,它是通过kube-proxy在每个节点上创建iptables规则或ipvs规则,在用户请求某个pod时,用户的请求会被其service规则所捕获,从而实现访问对应pod。 对于service来讲,用户请求直接在传输层就被捕获转发,效率很高效,但这同时也 阅读全文
摘要:
简介 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真 阅读全文