新的AWS .NET分布式缓存提供程序(适用于DynamoDB)现已进入预览阶段

AWS 发布 DynamoDB 分布式缓存提供程序预览版

AWS 近日宣布了 AWS .NET Distributed Cache Provider for DynamoDB 的预览版发布。该库允许将 Amazon DynamoDB 用作 ASP.NET Core 分布式缓存框架的存储。

背景与功能

缓存的好处

AWS 软件开发工程师 Alex Shovlin 在 AWS Developer Tools 博客文章 中解释了缓存的好处:

缓存可以提高应用程序性能;外部缓存 允许在应用程序服务器之间共享数据,并避免在应用程序重启或重新部署时出现缓存未命中。

使用方法

开发者可以从 NuGet.org 安装 AWS.AspNetCore.DistributedCacheProvider 包。在构建需要分布式 Web 应用程序中会话的应用程序时,.NET 的会话状态 中间件会寻找 IDistributedCache 的实现来存储会话数据。开发者可以通过 依赖注入 将会话服务指向 DynamoDB 分布式缓存实现。

生产环境配置建议

公司建议为生产环境应用程序配置以下选项:

  • Tablename:存储缓存数据的 DynamoDB 表名。
  • PartitionKeyName:DynamoDB 表的分区键名。
  • TTLAttributeName:使用 DynamoDB 的 Time To Live (TTL) 功能 自动删除缓存项。
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddAWSDynamoDBDistributedCache(options =>
{
    options.TableName = "session_cache_table";
    options.PartitionKeyName = "id";
    options.TTLAttributeName = "cache_ttl";
});

builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromSeconds(90);
    options.Cookie.IsEssential = true;
});

var app = builder.Build();
...

其他注意事项

  • 分区键:必须为字符串类型,且表不需要排序键,以避免缓存操作期间出现异常。
  • 启用 TTL:为表启用 DynamoDB 的 TTL 功能,确保过期的缓存项自动删除。
  • 前缀分区键:为缓存项的分区键添加可配置的前缀(默认为 "dc:"),以避免冲突并启用细粒度访问控制。
  • 开发测试:考虑使用 CreateTableIfNotExists 进行开发或测试,尽管这可能会增加第一次缓存操作的延迟。

其他缓存方案

总结

AWS 提供了多种托管服务,可作为 ASP.NET Core Web 应用程序的托管缓存。Amazon RDS for SQL Server 和 Amazon ElastiCache for Redis 是易于设置和扩展的低操作开销服务。现在,通过 AWS .NET Distributed Cache Provider for DynamoDB 库,Amazon DynamoDB 也成为了一种新的选择。

更多详细信息可参考 Microsoft 文档.NET on AWS 页面

阅读 23
0 条评论