6

मेरे पास एक अवधारणा है कि मैं एडब्ल्यूएस में चलने वाले सत्रों के लिए लोगों को राय लेना चाहता हूं जिसमें डायनेमो डीबी की रिडंडेंसी और लोचदार दर्द की गति है।एडब्लूएस डायनेमो डीबी सत्र एलियास्टैच PHP सत्र

  1. डायनेमो डीबी में PHP स्टोर सत्र।
  2. जब सत्र DynamoDB को मान भी Elasticache (संभवतः तेजी से पूरे पुनः प्राप्ति के लिए एक कुंजी युग्म में JSON के रूप में जमा हो जाती।
  3. पीएचपी तो सत्र के लिए Elasticache प्रश्नों।
  4. पीएचपी नहीं मिल रही है के लिए लिखा जाता लिखा जाता है एक Elasticache में सत्र यह डायनेमो डीबी की जांच करता है - इसलिए नोड विफलता, क्लस्टर विफलता और साइट विफलता के लिए बैकअप प्रदान करना। यदि सत्र को एलियास्टैच (यदि संभव हो) पर लिखा गया है और यदि डायनेमोडीबी में कोई नया सत्र नहीं बनाया गया है।

अच्छा, बुरा, गन्दा, जटिल ??

उत्तर

5

नहीं, यह बुरा/जटिल नहीं है - यह एक सतत डेटा स्टोर के लेखन-माध्यम कैश के रूप में memcache का एक सुंदर मानक उपयोग है। हालांकि, यह मासिक एडब्लूएस बिलिंग परिप्रेक्ष्य से वास्तव में महंगा समाधान है।

क्या आपने बस डायनामो डीबी का उपयोग करके बेंचमार्क किया है? यह एक एसएसडी-समर्थित कुंजी-मूल्य स्टोर है जो पर्याप्त तेज़ होना चाहिए। मैं कहता हूं, "चाहिए" हालांकि, क्योंकि मुझे उस पर एक ही काम करने का प्रयास करने पर भयानक विलंबता के साथ समस्याएं थीं। हम पूरी तरह से एक लोचदार कैश समाधान में आगे बढ़े और नोड विफलता की संभावना के साथ रहते हैं। लेकिन यह एक मौजूदा अनुप्रयोग के लिए था जो जल्दबाजी में एडब्ल्यूएस पर जूता-सींग था और हास्यास्पद रूप से बड़ी सत्र वस्तुओं का उपयोग कर रहा था। मेरे पास इस विचार पर फिर से विचार करने का समय नहीं है।

+0

Jamieb हम "जूता सींग" एडब्ल्यूएस में एक मौजूदा और पुराने आवेदन वाले हैं: यहाँ कैसे सत्र हैंडलर का उपयोग करने के लिए एक सरल कोड नमूना है। सत्र की दुकान हास्यास्पद डेटा (30K का औसत और 100K के रूप में बड़े सत्र पाए गए) आपका समाधान अब तक कैसे काम कर रहा है? ElastiCache पर खराब है कि अपटाइम/विश्वसनीयता? – kali

4

को जोड़ने के लिए करने के लिए क्या jamieb कहा, यहाँ कुछ लिंक कर रहे हैं:

आप ElastiCache का उपयोग करने जा रहे हैं, तो मैं उपयोग करने का सुझाव उनके auto-discovery feature तो आप केवल एक मेम्कैश endpoint कितने कैश नोड्स की परवाह किए बिना वहाँ चिंता करने की ज़रूरत वास्तव में हैं।

यदि आप डायनेमोडीबी का उपयोग करने जा रहे हैं, तो आपको AWS SDK for PHP द्वारा प्रदत्त DynamoDB Session Handler का उपयोग करना चाहिए।

<?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();