自安装内存缓存 - 它存在吗?
我读过各种跨机器缓存机制(Redis、Velocity、nMemCached 等)。它们似乎都需要一个中央机器来管理缓存。
是否存在自动安装的缓存引擎之类的东西 - 例如,如果当前子网上不存在缓存,则会创建一个节点。如果确实存在,是否会将机器加入到缓存池?
上下文:我有一个应用程序,通过 ClickOnce 部署到同一子网内的大约 100 个用户。这些用户中的每一个都通过 WAN(跨越国家/地区,在某些情况下跨越海洋)访问资源,这些资源执行 CPU 密集型计算并需要大量时间才能完成。
结果,该应用程序感觉很迟缓。我已尽我所能通过将长期查询放入单独的线程来缓解这种情况。但这只能带你到目前为止。我添加了本地缓存(通过 SQL Compact DB),效果非常好,但大多数用户访问类似的信息,并且它们一起对计算服务器施加了一些压力。我认为,如果我能够在我的应用程序中提供内存缓存,并且能够与其他计算机无缝协作以创建网络范围的缓存机制,我认为我可以将其提升到一个新的水平。
I've read about various cross-machine caching mechanisms (Redis, Velocity, nMemCached, etc...). They all seem to require a central machine to manage the cache.
Is there such a thing as a cache engine that self installs - e.g. if caching does not exist on the current subnet, it creates a node. If it does exist, it joins the machine to the caching pool?
Context: I have an app that deploys to around 100 users within the same subnet via ClickOnce. Each of these users access a resource via the WAN (across country and in some cases across the ocean) that performs very CPU-intensive computations and takes significant time to complete.
As a result, the app feels sluggish. I've done what I could to alleviate that by throwing long-lived queries onto separate threads. But that only takes you so far. I've added local caching (via a SQL Compact DB) which works pretty good, but most users access the similar information and together they exert a bit of pressure on the computation server. I think I can take it to the next level if I am able to ship an in-memory cache with my app that is able to seemlessly work with other machines to create a network wide caching mechanism.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是知道什么是最好的人,但是拥有一个可以协调整个过程的“服务器应用程序”可能是一件好事:
您还可以将某些类型的数据设置为“不可缓存”,因为它们具有易失性,或者避免堵塞用户之一的连接。当然,服务器会收到很多请求,但如果您必须将其与跨网络解决方案的广播进行比较。如果我没有正确理解您的问题,只需写一条评论,忽略这一点,我将删除答案,以免误导用户。
You're the one who knows what will be the best, but having a "server app" that would coordinate the whole lot might be a good thing :
You could also make some type of data "uncacheable" due to their volatile nature, or to avoid clogging one of the users' connection. Sure the server will get a lot of requests, but if you'd have to compare this with a broadcast across the network solution. If I didn't understand your problematic correctly, just write a comment, disregard this, and I'll remove the answer not to mislead SO Users.
如果您不需要主机,或者不想依赖特定的网络布局/安装,您可以考虑点对点作为一个选项。 WCF 具有本机对等支持。这是一个看起来与您的需求有些相关的链接:如何在 A 中设计状态共享对等网络
If you don't want a master machine, or you don't want to rely on a specific network layout/installation, you could consider Peer to Peer as an option. WCF has native peer to peer support. Here is a link that looks somewhat relevant to your need: How To Design State Sharing In A Peer Network