你好,我是四火。
在本专栏中,我们已经接触到了全栈开发中的一些算法了。在这一讲和下一讲中,我又精心挑选了几个比较重要的。和单纯地从数学角度去介绍算法不同,我想结合几个全栈开发中实际、典型的问题场景,向你介绍这几个相关的重要算法。毕竟,我们关心的算法,其实就是可以解决实际问题的方法的一种数学抽象。
希望通过这两讲的学习,你能理解这些算法。除了理解算法原理本身,我们更要抓住它们的用途和算法自身的巧妙之处。今天我们来讲其中的第一个典型的问题场景——流量控制。
流量控制系统中的算法
对于全栈工程师来说,无论是网站,还是其它 Web 应用,一旦对外商用,就要考虑流量控制的问题。因此我们往往需要设计使用单独的流量控制模块,我们来看下面这样的一个问题。
假如说,我们现在需要给一组 Web API 设计一个流量控制系统,以避免请求对系统的过度冲击,对于任意一个用户账户 ID,每一个 API 都要满足下面所有的要求:
每分钟调用不能超过一万次;
每小时调用不能超过十万次;
每天调用不能超过一百万次;
每周调用不能超过一千万次;
……
在继续往下阅读之前,请你先从算法和数据结构的角度思考,你觉得该怎么设计这个流量控制系统呢?
简化问题
在解决实际问题的时候,我们面临的问题往往是复杂的、多样的,因此,我们可以考虑能不能先简化问题,再来尝试映射到某一个数学模型上。那些先不考虑的复杂条件,有的可能就是可以忽略掉的,而有的则是为了思路的清晰。一开始我们可以先忽略,有了解题的方法原型以后,再逐步加回来考虑。