亚马逊的 API 要求您拥有一个签名,该签名是许多元素的组合,其中一个元素是 secret 。服务器通过将参数中传递的 API key 与存储在数据库中的 secret 进行匹配来检查此签名。
我的问题是,亚马逊如何匹配API key 和 secret ,不会每次都进行查询使数据库过载。另外,为数百万开发人员缓存 api key 和结果不会导致内存短缺吗?
或者因为它只有 30 个字符,所以 30 个字节?只需要 286 兆内存?
如果我使用 Memcached 来存储这些键和值对又怎么样?假设我分配了 1GB 的 memcached,查找验证键/值的速度有多快
最佳答案
亚马逊几乎肯定有一种非常优化的方法来存储和检索 secret 。他们没有在 MySQL 数据库中查找它。解决这个问题实际上并不是一个巨大的架构挑战。
我猜他们有一个分布式的hastable,其中很大一部分缓存在RAM中。他们有足够的内存。
关于security - 在服务器上存储开发者 API key / secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066782/