【发布时间】:2015-06-27 13:24:54
【问题描述】:
我今天有一个场景,大约 50,000 个 Windows 客户端(用户)全天定期轮询独立服务器。出于安全原因,我没有提及服务器在做什么,但它是内部安装的第三方供应商产品。因此,作为一名程序员,我对它如何管理不同的请求没有太多控制权,但我们知道在使用它提供的 API 时几乎没有性能问题。此外,由于各种原因,该产品是必不可少的,而且它的功能非常广泛,我们不能转移到不同的产品,即使我们转移了我要提到的主要问题也没有得到解决。
我们已经构建了一个供我们组织内的用户使用的客户端应用程序,这个应用程序除了需要对我上面提到的服务进行 API 调用之外,还需要进行其他操作。现在我们发现这个调用对于某些繁重的用例来说是昂贵的。我确信服务器已经实现了某种内置缓存逻辑,但考虑到对该 API 的输入查询的不同保真度,它并没有多大用处。
同样,此 API 的主要功能是查询全局数据库并返回唯一项。例如:=>
//Return all names in database that begin with the user entered text.
NameCollection GetNamesBeginningWith(string inputText);
现在这是一个示例,而不是原始 API。
现在我正在考虑在所有客户端和这个主服务器之间引入另一个缓存服务器。我最近了解了“redis”,并计划用它来缓存所有记录,比如说最多 200,000 条记录。因此,最初从我的 redis 实例中,我将读取该特定表的所有记录并将这些记录保存在缓存中,然后我的所有客户端现在都将与我的 redis 实例通信,而不是直接与此用例的主服务器通信。
我主要是一名客户端开发人员,只了解服务器端的细微差别。我走在正确的道路上吗?
'redis' 是推荐的解决方案吗?
此外,我正在获取的数据是不稳定的,因为它可能每月更改一次,或者某些数据可能在很长一段时间内都不会更改,因此为了安全起见,我计划安排一个每天早上刷新缓存的作业。我以前从来没有做过这样的事情。所以我问社区这是否是推荐的方法?
在这种情况下,我如何在最终用户没有注意到的情况下刷新缓存?
【问题讨论】:
标签: architecture redis client-server memcached soa