最近接触到微服务框架go-zero,翻看了整个框架代码,发现结构清晰、代码简洁,所以决定阅读源码学习下,本次阅读的源码位于core/syncx/singleflight.go...
最近接触到微服务框架go-zero,翻看了整个框架代码,发现结构清晰、代码简洁,所以决定阅读源码学习下,本次阅读的源码位于core/syncx/singleflight.go...
上篇文章提到固定时间窗口限流无法处理突然请求洪峰情况,本文讲述的令牌桶线路算法则可以比较好的处理此场景。 工作原理 单位时间按照一定速率匀速的生产 token 放入桶内,直到...
如果你写一个 bug 管理系统,用了这个 PeriodLimit 你就可以限制每个测试人员每天只能给你提一个 bug。工作是不是就轻松很多了?:P 如今微服务架构大行其道本质...
什么是流处理 如果有 java 使用经验的同学一定会对 java8 的 Stream 赞不绝口,极大的提高了们对于集合类型数据的处理能力。 Stream 能让我们支持链式调用...
跌宕起伏的2021年快要过去了,今年对我来说经历的实在太多,提笔做个简单的总结吧。 回顾目标 去年的年终总结,我给自己立了两个flag。 第一个虽然不可量化,不是一个好的目标...
为什么需要分布式锁 用户下单 锁住 uid,防止重复下单。 库存扣减 锁住库存,防止超卖。 余额扣减 锁住账户,防止并发操作。分布式系统中共享同一个资源时往往需要分布式锁来保...
为什么需要布隆过滤器 想象一下遇到下面的场景你会如何处理: 手机号是否重复注册 用户是否参与过某秒杀活动 伪造请求大量 id 查询不存在的记录,此时缓存未命中,如何避免缓存穿...
为什么需要一致性哈希 首先介绍一下什么是哈希[https://baike.baidu.com/item/Hash/390310?fromtitle=%E5%93%88%E5%...
为什么需要降载 微服务集群中,调用链路错综复杂,作为服务提供者需要有一种保护自己的机制,防止调用方无脑调用压垮自己,保证自身服务的高可用。 最常见的保护机制莫过于限流机制,使...
为什么需要熔断 微服务集群中,每个应用基本都会依赖一定数量的外部服务。有可能随时都会遇到网络连接缓慢,超时,依赖服务过载,服务不可用的情况,在高并发场景下如果此时调用方不做任...
go-zero 实战项目:blog 本文以 blog 的网站后台为例,着重介绍一下如何使用 go-zero 开发 blog 的用户模块。 本文涉及的所有资料都已上传 gith...
为什么需要超时控制? 很多连锁故障的场景下的一个常见问题是服务器正在消耗大量资源处理那些早已经超过客户端截止时间的请求,这样的结果是,服务器消耗大量资源没有做任何有价值的工作...
rest框架概览 我们先通过 go-zero 自带的命令行工具 goctl 来生成一个 api service,其 main 函数如下: 解析配置文件 将配置文件传入,初始化...
自动聊天示例 聊天1: 聊天2: 这是基于200万聊天记录训练出来的,你可以用自己和女朋友的记录训练了试试效果 :P 至于微信机器人怎么用,你可以 GitHub 搜搜看哈 项...
延迟队列:一种带有 延迟功能 的消息队列 延时 → 未来一个不确定的时间 mq → 消费行为具有顺序性 这样解释,整个设计就清楚了。你的目的是 延时,承载容器是 mq。 背景...
什么是服务注册发现? 对于搞微服务的同学来说,服务注册、服务发现的概念应该不会太陌生。 简单来说,当服务A需要依赖服务B时,我们就需要告诉服务A,哪里可以调用到服务B,这就是...
一、什么是Http Client Http协议,是全互联网共同的语言,而Http Client,可以说是我们需要从互联网世界获取数据的最基本方法,它本质上是一个URL到一个网...
背景 在选择负载均衡算法时,我们希望满足以下要求: 具备分区和机房调度亲和性每次选择的节点尽量是负载最低的每次尽可能选择响应最快的节点 无需人工干预故障节点当一个节点有故障时...
在 go-zero 的分布式缓存系统分享里,Kevin 重点讲到过一致性hash的原理和分布式缓存中的实践。本文来详细讲讲一致性hash的原理和在 go-zero 中的实现。...
在 Golang 中的 map 结构,在删除键值对的时候,并不会真正的删除,而是标记。那么随着键值对越来越多,会不会造成大量内存浪费? 首先答案是会的,很有可能导致 OOM,...