我有一个概念,我希望通过DynamoDB的冗余和Elasticache的速度让人们了解在AWS中运行会话。
好,坏,凌乱,复杂?
答案 0 :(得分:5)
不,它不坏/复杂 - 这是一个非常标准的memcache用法,作为持久数据存储的直写缓存。但是,从每月AWS结算角度来看,这是一个非常昂贵的解决方案。
您是否只使用过DynamoDB进行基准测试?这是一个SSD支持的键值存储,应该足够快。我说“应该”,因为当我尝试对它做同样的事情时,我遇到了可怕的延迟问题。我们最终纯粹转向ElasticCache解决方案,并且很容易遇到节点故障的可能性。但这是针对现有的应用程序,该应用程序匆忙在AWS上使用,并使用了大量的会话对象。我没有时间重温这个想法。
答案 1 :(得分:4)
要添加到jamieb所说的内容,这里有一些链接:
如果您打算使用ElastiCache,我建议使用他们的auto-discovery feature,这样您只需担心一个memcache端点,无论实际有多少缓存节点。
如果您要使用DynamoDB,则应使用DynamoDB Session Handler提供的AWS SDK for PHP。以下是有关如何使用会话处理程序的简单代码示例:
<?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();