bjmayor 发布于 2021-08-30

go-zero 限流下

go-zero 如何扛住流量冲击(二)

[TOC]

上一篇介绍的是 go-zero 中滑动窗口限流,本篇介绍另外一个 tokenlimit ,令牌桶限流。

阅读全文 »

bjmayor 发布于 2021-08-30

go-zero 限流上

go-zero 如何扛住流量冲击(一)

[TOC]

不管是在单体服务中还是在微服务中,开发者为前端提供的API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性。即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪。

go-zero 集成了开箱即用的 限流器 。其中内置了两种限流器,也对应两类使用场景:

种类 原理 场景
periodlimit 单位时间限制访问次数 需要强行限制数据的传输速率
tokenlimit 令牌桶限流 限制数据的平均传输速率,同时允许某种程度的突发传输

本文就来介绍一下 periodlimit

阅读全文 »

bjmayor 发布于 2021-08-30

雪花算法

雪花算法

[TOC]

唯一ID生成器snowflake

很多场景需要使用全局唯一ID,用来标识唯一一条消息,唯一一笔交易,唯一一个用户,唯一一张图片等等。
传统数据库表的自增主键是很简单的一种实现方式,前提是你没有分库,也没有分表,如果你分表了,id就会重复,失去唯一性:
imagepng

阅读全文 »

bjmayor 发布于 2021-08-30

哈夫曼编码

[TOC]

哈夫曼编码,为压缩而生。另有翻译为赫夫曼。

概念

哈夫曼树

哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为WPL=(W1L1+W2L2+W3L3+…+WnLn),N个权值Wi(i=1,2,…n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,…n)。可以证明哈夫曼树的WPL是最小的。

阅读全文 »

bjmayor 发布于 2021-08-29

区块链技术细节:哈希算法

区块链技术细节:哈希算法

本文来自《极客时间》,左耳听风 付费专栏。只有部分内容,我个人感觉讲的通俗易懂,摘抄下来慢慢品,更有意思的其实是评论内容,想看完整内容的请自行前往购买。

对于计算机来说,区块链就像一个单向链表,一个数据块中保存着三个信息。

  • 真正的数据。
  • 自己的地址(或是 ID)。
  • 前一个数据块的地址。

这样,通过追溯前一个块的地址,把所有的数据块存成了一条链。所以,我们叫其 BlockChain。如下图所示。

阅读全文 »

bjmayor 发布于 2021-08-29

区块链技术的本质

区块链技术的本质

本文来自《极客时间》,左耳听风 付费专栏。只有部分内容,我个人感觉讲的通俗易懂,摘抄下来慢慢品,更有意思的其实是评论内容,想看完整内容的请自行前往购买。

区块链技术的革命性

你一定看过太多的文章用各式各样的比喻来讲区块链技术是什么,以及为什么它是未来。在这里,我尝试用我的话来说明一下区块链技术的革命性。

说区块链必然要谈比特币,比特币是一种数字货币。但最令人叫绝的是,比特币号称有下面几个特性。

  • 去中心化。这意味着没有中心的服务器,不受某个人的控制,整个系统直接由用户端的电脑构成。这样的技术难度是非常大的,并不像手机 App 或是小网站一样,你想发布就发布,这需要有人来跟你一起玩。

  • 数据防篡改。所有交易记录全量保存,并公开给所有的人,而且还被加密和校验。并不是数据不能被篡改,而是数据被篡改的成本非常大。(有人借此说区块链的不可篡改可以解决人类的信任问题,这个并不一定。)

  • 固定的发行量。不会像国家中央银行那样乱印钞票,造成通货膨胀。

阅读全文 »