全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

36 | 全栈开发中的算法(上)

实现令牌桶算法
实现漏桶算法
使用队列解决滑动窗口问题
引入滑动时间窗口
使用简单计数法
考虑简化问题
扩展阅读
质数和模幂运算
密钥计算过程
多线程并发访问的修改
漏桶算法和令牌桶算法的代码
令牌桶算法
漏桶算法
时间队列
从固定窗口到滑动窗口
简单计数
简化问题
选修课堂:Diffie–Hellman 密钥交换
总结思考
流量控制系统中的算法
全栈开发中的算法

该思维导图由 AI 生成,仅供参考

你好,我是四火。
在本专栏中,我们已经接触到了全栈开发中的一些算法了。在这一讲和下一讲中,我又精心挑选了几个比较重要的。和单纯地从数学角度去介绍算法不同,我想结合几个全栈开发中实际、典型的问题场景,向你介绍这几个相关的重要算法。毕竟,我们关心的算法,其实就是可以解决实际问题的方法的一种数学抽象。
希望通过这两讲的学习,你能理解这些算法。除了理解算法原理本身,我们更要抓住它们的用途和算法自身的巧妙之处。今天我们来讲其中的第一个典型的问题场景——流量控制。

流量控制系统中的算法

对于全栈工程师来说,无论是网站,还是其它 Web 应用,一旦对外商用,就要考虑流量控制的问题。因此我们往往需要设计使用单独的流量控制模块,我们来看下面这样的一个问题。
假如说,我们现在需要给一组 Web API 设计一个流量控制系统,以避免请求对系统的过度冲击,对于任意一个用户账户 ID,每一个 API 都要满足下面所有的要求:
每分钟调用不能超过一万次;
每小时调用不能超过十万次;
每天调用不能超过一百万次;
每周调用不能超过一千万次;
……
在继续往下阅读之前,请你先从算法和数据结构的角度思考,你觉得该怎么设计这个流量控制系统呢?

简化问题

在解决实际问题的时候,我们面临的问题往往是复杂的、多样的,因此,我们可以考虑能不能先简化问题,再来尝试映射到某一个数学模型上。那些先不考虑的复杂条件,有的可能就是可以忽略掉的,而有的则是为了思路的清晰。一开始我们可以先忽略,有了解题的方法原型以后,再逐步加回来考虑。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了全栈开发中的算法设计,重点讨论了流量控制系统中的漏桶算法和令牌桶算法。漏桶算法通过桶的容量和流速来控制请求的处理,而令牌桶算法则是在桶内定期放入令牌,请求需要取得令牌才能继续访问系统。此外,文章还详细介绍了Diffie–Hellman密钥交换算法,通过角色扮演游戏的方式解释了密钥计算过程和质数模幂运算的原理。这些算法设计和加密方法在实际应用中具有重要意义,能够帮助读者了解算法设计的思路和方法,以及在实际应用中的注意事项。文章内容深入浅出,适合读者快速了解全栈开发中的算法设计和加密方法。同时,文章还提到了算法的时间复杂度和空间复杂度,以及RSA加密技术的原理,为读者提供了更多深入学习的方向。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • leslie
    其实算法贯穿了整个计算机系统-不出不在:算法的好坏直接决定了某件事情的效率,除非单纯的去堆硬件。即使单纯的堆硬件你都得要算法,否则就是纯粹的人多力量大了。

    作者回复: 很多时候,能单纯堆硬件解决的问题往往都不是什么问题。成为问题的,是堆硬件也没法解决的。

    2019-12-02
    2
  • 許敲敲
    现在知道面试题滑动窗口的意义了 还有密匙交换算法

    作者回复: 👍🏻

    2019-12-02
    1
  • swordman
    漏桶算法代码中,brust的值应该是10000吧?如果是0,就永远返回不了true了。不知道理解是否正确。

    作者回复: 正确。burst其实就是桶的大小,也是前面提到的队列的长度

    2020-06-24
  • Teresa
    既然秒杀都是耍猴,请问淘宝代拍这类是怎么实现高成功率的?这里边是否涉及到不合规的操作呢?

    作者回复: 我不太懂“代拍”的机制,如果有谁知道,可以分享一下。 不过关于秒杀的一些简单机制,我在另一个留言下面回复了。

    2019-12-02
  • 靠人品去赢
    这篇文章,让我联想到秒杀活动的设计,反正就是不让你大流量直接进入到服务器就是了,想了一下所谓的秒杀,真的就是耍猴。

    作者回复: 秒杀的话,不能光靠服务端这一个节点的流控。因为流量太大,即便有流控,中心节点的网络压力也很大,而且流控的判断逻辑也是有消耗的——虽然因为流控,请求没有处理,可是连接依然是建立的,这依然是显著的开销。 比如说,秒杀需要 CDN 等本地节点,按比例“放行”少量的请求到中心节点的服务端,而大部分请求,直接拒绝掉。用这种方法尽可能地保护中心服务节点。

    2019-12-02
  • 许童童
    老师的文章写得真好,读起来意犹未尽

    作者回复: 😎

    2019-12-02
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部