Amazon DynamoDB 是一种 NoSQL 数据库,旨在应对关系数据库的扩展和操作挑战。DynamoDB 旨在为全球应用程序提供高可用性和弹性。DynamoDB 具有自动扩展功能,无需维护,可确保任何规模的应用程序都能获得一致的性能。
为 OpenSIPS 添加 DynamoDB 支持,可让 OpenSIPS 与 AWS 环境和服务的集成将更加顺畅。它通过 AWS 库提供了对强大数据库的直接访问,从而加快部署和服务创建速度。
新模块名为 cachedb_dynamodb。它实现了 cachedb 接口,可直接在 DynamoDB 中进行设置、获取和删除缓存项等操作。该模块利用 AWS SDK for C++ 连接到 DynamoDB 实例,并支持键值存储操作,使其易于在 OpenSIPS 中集成和使用。
依赖项
cachedb_dynamodb模块依赖于AWS SDK for C++。确保您已在 Linux 系统上安装并配置了 AWS SDK for C++。
使用情况
您既可以在本地使用 Amazon DynamoDB 进行测试和开发,也可以将其作为 AWS 中的完全托管服务用于生产。
在本地使用 DynamoDB:
- 下载 DynamoDB Local:访问DynamoDB Local 下载页面并下载 DynamoDBLocal.jar 文件。
- 运行 DynamoDB Local:“ java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb”
此命令启动本地 DynamoDB 实例,您可以使用它进行测试和开发,而无需任何费用或互联网连接。
在 AWS 中使用 DynamoDB 进行生产:
- 创建 DynamoDB 表:使用AWS 管理控制台、CLI 或 SDK 在您首选的区域中创建 DynamoDB 表。
- 配置安全性:设置IAM 角色和策略来管理对 DynamoDB 表的访问。
- 自动扩展:DynamoDB 自动处理扩展,确保其满足您的应用程序需求,无需人工干预。更多详细信息请参阅DynamoDB Auto Scaling 文档。
- 与其他 AWS 服务集成:DynamoDB 与其他 AWS 服务(如Lambda、S3和Kinesis )无缝集成,为构建可扩展应用程序提供了全面的解决方案。
通过在本地使用 DynamoDB,您可以经济高效地开发和测试应用程序。对于生产,AWS 管理的 DynamoDB 提供无与伦比的可扩展性、可靠性以及与其他 AWS 服务的集成。
前提条件
在使用“cachedb_dynamodb”模块运行 OpenSIPS 之前,请确保您已完成以下步骤:
- 安装适用于 C++ 的 AWS 开发工具包
- 创建 DynamoDB 表
- 使用适当的 DynamoDB 表详细信息配置cachedb_url参数。
从 CLI 创建表的示例:
aws dynamodb create-table --table-name TableName \
--attribute-definitions \
AttributeName=KeyName,AttributeType=S \
--key-schema \
AttributeName=KeyName,KeyType=HASH \
--provisioned-throughput \
ReadCapacityUnits=5,WriteCapacityUnits=5 \
--table-class STANDARD
如果您使用上述命令创建表,那么必须在 cachedb_url 中指定键:modparam(“cachedb_dynamodb”,“cachedb_url”,“dynamodb://localhost:8000/TableName?key=KeyName;val=ValName”)”
URL
OpenSIPS 将连接到的服务器组的 URL,以便从脚本中使用 cache_store()、cache_fetch() 等操作。它可能被设置多次。URL 的前缀部分将是脚本中使用的标识符。
有一些默认参数可以出现在 URL 中:
- 区域– 指定 DynamoDB 表所在的 AWS 区域
- key – 指定表的 Key 列;默认值为“opensipskey”
- val – 指定将执行缓存操作(例如 cache_store、cache_fetch 等)的表的 Value 列;默认值为“opensipsval”
cachedb_url的示例:
- 单实例 URL:
modparam(“cachedb_dynamodb”, “cachedb_url”, “dynamodb://localhost:8000/table1”);
modparam(“cachedb_dynamodb”, “cachedb_url”, “dynamodb:///table2?region=central-1”); - 多实例 URL:
modparam(“cachedb_dynamodb”, “cachedb_url”, “dynamodb://localhost:8000/table1?key=Key;val=Val”);
modparam(“cachedb_dynamodb”, “cachedb_url”, “dynamodb:///table2?region=central-1;key=Key;val=Val”);
脚本
cache_store("dynamodb", "call1", "10");
// ttl = 150s ->optional
cache_store("dynamodb", "call2", "25", 150);
cache_fetch("dynamodb", "call1", $var(total));
cache_remove("dynamodb", "call1");
cache_store("dynamodb", "counter1", "200");
// ttl = 1000s ->mandatory parameter
cache_sub("dynamodb", "counter1", 4, 1000);
// -this update will not expire -mandatory parameter
cache_add("dynamodb", "call2", 5, 0);
cache_remove("dynamodb", "counter1");
要为表启用 TTL(生存时间),可以使用 TTL 选项更新表:
aws dynamodb update-time-to-live \
--table-name TableName \
--time-to-live-specification "Enabled=true, \ AttributeName=ttl"
结论
总之,Amazon DynamoDB 与 OpenSIPS 的集成为管理实时通信数据提供了一个强大且可扩展的解决方案。cachedb_dynamodb 模块可利用 DynamoDB 的高可用性、耐用性和低延迟性,实现与 DynamoDB 的无缝交互。通过遵循所提供的指南、依赖关系和示例,您可以在 OpenSIPS 部署中高效地设置和使用该集成,以提高性能和可靠性。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/51438.html