Velocity:微软的分布式内存缓存

发布于:2008 年 6 月 11 日 05:08

资深架构师 杨波,正在以案例项目驱动,原理+编程技术+工具结合落地微服务和云原生架构,立即查看 >>

在过去几年里,从主流的 Java 应用到象 Erlang 这样的边缘语言,分布式内存缓存的应用相当流行。为了继续疯狂赶超开源世界中处于支配地位的技术,微软也引入了它的分布式缓存。

Velocity 是专门针对.NET 平台设计的分布式缓存。那些熟悉其他分布式内存缓存的人们会在其中发现许多相似的特性。它目前作为社区技术预览对外提供下载

Velocity 的客户端有两类。简单客户端只知晓一个单缓存服务器。如果在那个服务器上没有找到被请求的对象,那么缓存服务器会从合适的服务器上将它取来。路由客户端(Routing client)则对其了解更深一些。它们总是知道在哪里可以找到哪个特殊的对象,因此它可以直接查询缓存服务器。关于发送所有缓存位置数据给路由客户端(Routing client)对性能造成的影响,尚未有所定论。除了缓存服务器,两类客户端都支持一个本地缓存选项。对于过期数据,该选项仍然要求去检查服务器。但是在处理大量缓存对象时,它应该能减少网络流量。

关于并发性有两个选项。使用乐观并发,只有第一次更新才能成功,任何后续对现有过期对象的更新都将失败。使用悲观锁,一个锁句柄将会被返回。在锁释放或超时之前,任何获得锁的尝试都将失败。获得锁失败操作是一个非阻塞操作。

通过设置过期日期或每当内存压力过大时,对象可以从缓存中显式被移除。后一种方法,被称为驱逐(eviction),使用最近最少使用的算法来处理。

除了一个关键字,对象还可能有一组与之关联的标签。Velocity 提供了检索一个或全部与一个标签列表相匹配的对象的方法。

尽管支持 ASP.NET 的会话模型,但是那只是微软众多设想中的一个。 S Muralidhar 写道:

我们对 ASP.NET 的支持只是整个.NET 平台蓝图中的一部分。剩下的是确保我们不只把焦点单单放在 ASP.NET 应用上。作为例子,我们计划与普通.NET 应用(如 Windows 服务)或那些不涉及 ASP.NET 的 IIS 应用集成。

现在让我们看看即将到来的功能。目前的 CTP 版特性支持向外扩展(scale-out)、本地缓存,以及 ASP.Net SessionState 与许多其他应用的集成。我们有大量的工作项,它们有望在随后的 CTP 和 RTM 版中实现,包括:支持可用性、缓存复制、通知和更好地管理支持等。

我们已经从很多开发者那里听到对于推式通知(Push-based notification)的需求。这当然是我们非常关心的领域。尽管目前的 CTP 版还不支持它,但是这个需求有望在我们即将发布的版本中得到满足。在目前这个过渡时期,如果你使用 Velocity 的本地缓存,我们提供了一些绕过它的 API(如 GetIfVersionMismatch())来处理本地缓存中潜在的陈旧 / 过期对象。(你需要使用 Get() 和 GetIfVersionMismatch() 方法组合来得到正确的行为。)

对更高级技术的支持亦在计划中。 Anil Nori 补充道:

由于应用开始将缓存用于数据访问,我也相信,他们会要求更丰富的数据服务,如查询、事务、分析、同步等。例如,我相信.NET 有可能会要求在分布式缓存上使用 LINQ 查询,就像它们查询后端 SQL Server 数据库一样。我们预计“Velocity”会成为一个全面的分布式缓存平台。

查看英文原文 Velocity: Microsoft’s Distributed In-Memory Cache

阅读数:3390 发布于:2008 年 6 月 11 日 05:08

更多 SOA、.NET、架构 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • JSON.NET 5 中的架构变更

    Newtonsoft对JSON.NET进行了两项架构升级,以使其能够更容易地在涉及第三方库的项目中使用。这两项特性是默认设置和扩展数据。

    2013 年 5 月 20 日

  • 开源 RPC 框架如何选型?

    业界应用比较广泛的开源RPC框架主要分为两类:一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。

    2018 年 9 月 22 日

  • 微软弃用新 Beta 版本中遗留的 Workflow Foundation 库

    微软在最近一篇博文中宣布即将到来的.NET 4.5发布将弃用Windows Workflow Foundation技术中的第一代对象。Windows Workflow Foundation是.NET开发人员以及少数微软服务器产品使用的工作流引擎,它在.NET 4.5中将拥有多项新的功能,同时会对使用旧版.NET 3.0对象的应用程序发出警告。

    2012 年 2 月 21 日

  • 在教育领域 AR 技术如何落地

    2018 年 9 月 12 日

  • 织云 Metis 时间序列异常检测全方位解析

    2018 年 9 月 12 日

  • 使用 WCF 消费 REST 服务

    .NET Framework 3.5引入了REST风格的Windows Communication Foundation(简称WCF)服务。除了开发和托管RESTful服务,还提供了多种选项来消费这些服务。

    2008 年 5 月 4 日

  • 微软发布 gRPC-Web 实现,可直接在浏览器端调用 gRPC 服务

    有了该组件,就可以在浏览器中使用gRPC,Web应用程序可以不通过HTTP代理服务器直接与gRPC服务通信。

    2020 年 7 月 6 日

  • Netty 如何支持三种 Reactor?

    2019 年 10 月 10 日

  • MailKit 正式替换了.NET 的 SmtpClient

    SmtpClient的文档现已改成:“废弃(“SmtpClient及其相关类型设计很差,我们强烈建议使用MailKit和MimeKit替代。”)”。这是Microsoft有史以来第二次将一个.NET类正式标为被开源软件库替代。

    2017 年 4 月 17 日

  • Apache Ignite 初探

    Apache Ignite 内存数组组织框架是一个高性能、集成和分布式的内存计算和事务平台,用于大规模的数据集处理,比传统的基于磁盘或闪存的技术具有更高的性能,同时他还为应用和不同的数据源之间提供高性能、分布式内存中数据组织管理的功能。

    2015 年 11 月 22 日