AWS DynamoDB会话与Elasticache PHP会话
我有一个概念,我想让人们对使用DynamoDB的冗余和Elasticache的速度在AWS中运行会话发表意见AWS DynamoDB会话与Elasticache PHP会话,php,amazon-web-services,memcached,amazon-dynamodb,amazon-elasticache,Php,Amazon Web Services,Memcached,Amazon Dynamodb,Amazon Elasticache,我有一个概念,我想让人们对使用DynamoDB的冗余和Elasticache的速度在AWS中运行会话发表意见 PHP在DynamoDB中存储会话 当会话被写入DynamoDB时,值也被写入Elasticache(可能作为JSON存储在一个密钥对中,以便快速进行整个检索) PHP然后查询Elasticache中的会话 如果PHP在Elasticache中找不到会话,它将检查DynamoDB,从而为节点故障、群集故障和站点故障提供备份。如果找到会话,则将其写回Elasticache(如果可能),如果
你有没有测试过仅仅使用DynamoDB?它是一个SSD支持的键值存储,应该足够快。我说“应该”尽管如此,因为我在尝试对其执行相同操作时遇到了可怕的延迟问题。我们最终完全转向ElasticCache解决方案,并承受着节点故障的可能性。但这是针对一个现有应用程序的,该应用程序匆忙安装在AWS上,并使用了大得离谱的会话对象。我没有这样做有时间重新审视这个想法。为了补充jamieb所说的内容,这里有一些链接: 如果您打算使用ElastiCache,我建议您使用他们的,这样您只需要担心一个memcache端点,而不管实际有多少个缓存节点 如果要使用DynamoDB,应使用提供的。下面是一个简单的代码示例,介绍如何使用会话处理程序:
<?php
// Load SDK via Composer autoloader
require 'vendor/autoload.php';
// Instantiate the SDK with your config
$aws = Aws\Common\Aws::factory('/path/to/config/file');
// Instantiate the DynamoDB client and register the session handler
$db = $aws->get('dynamodb');
$db->registerSessionHandler(array(
'table_name' => 'sessions',
'hash_key' => 'id',
));
// Use PHP sessions like normal
session_start();
$_SESSION['foo'] = 'bar';
session_commit();
Jamieb我们即将把一个既有又旧的应用程序“shoe horn”到AWS中。会话存储的数据量惊人(平均为30K,找到的会话多达100K)。到目前为止,您的解决方案如何工作?ElastiCache的正常运行时间/可靠性是否如此糟糕?