الحلولواجهات خلفية لكل مستخدم
مثيل لكل مستخدم
مفتاح في الطلب يوجّه كل مستخدم أو مستأجر أو وكيل إلى مثيل خاص به، يحفظ ذاكرته وقرصه وينام بين الطلبات.
from glac import Glac
glac = Glac()
app = glac.cube.deploy(
"ghcr.io/acme/notes:2", name="notes", port=8080,
keys={"from": {"header": "X-User"}, # the key
"delete_after_idle_ms": 30 * 86_400_000},
scale={"suspend_after_ms": 1000}) # sparse traffic: asleep a second after
# a request with X-User: ada reaches ada's own instance
ada = app.instance("ada") # or make or wake it from codeحالة لكل مستخدم، تُدفع ساعةً بساعة
عملية لكل مستخدم هي أبسط تصميم، لكنها إن بقيت تعمل تُدفع تكلفتها حتى في غياب المستخدم. أما هنا فينام مثيل كل مفتاح بين الطلبات، ولا يُدفع إلا مقابل ما يحفظه.
كيف يوجّه المفتاح
اضبط keys.from على ترويسة أو مقطع من المسار. أول طلب لمفتاح جديد يُنشئ مثيله؛ وكل طلب لاحق يصل إلى المثيل نفسه، بذاكرته وقرصه. أما الطلبات التي بلا مفتاح فتتشارك مثيلات التطبيق.
ما يحصل عليه مثيل كل مستخدم
اختر الشكل: مثيلات مشتركة، أو مثيل لكل مفتاح مستخدم.
مفتاح من الطلب، في ترويسة أو في المسار؛ وأول طلب يُنشئ مثيله.
حالة لكل مستخدم: ذاكرة تبقى عبر النوم، وقرص خاص، ووحدة تخزين.
ما يكلّفه: لا شيء مقابل CPU وهو نائم، بل ما يحفظه فقط.
عمر تختاره: يُحذف بعد نومه تلك المدة، ويُنشأ من جديد بمفتاحه.
الاستخدام لكل مفتاح، من المفتاح الذي يحمله كل مثيل كتسمية.
معاينات توضيحية
قياسات، لا وعود
قيم وسيطة على خادم فعلي دون أي شيء آخر قيد التشغيل: أفضل الحالات، ونقول ذلك صراحة. ومثيل المفتاح من النوع نفسه الذي تنتمي إليه البيئة المعزولة، حيث قيست هذه الأرقام. كيف نقيس
- لإيقاظ مثيل نائم2
- 3.5 مللي ثانية
- للاستدعاء الموقِظ، من الإرسال حتى الإجابة2
- 6.7 مللي ثانية
- للتنويم، مع الذاكرة والعمليات2
- 2.3 مللي ثانية
يمكنك رؤية ذلك لمفاتيحك بعد إطلاق الخدمة: سطر السجل لطلب أيقظ مثيلًا يذكر المدة التي استغرقها الاستيقاظ.
glac cube logs notes -f
# one line a request; one that woke an instance says how long it tookالمنتجات المستخدمة
شهر محسوب بالتفصيل
عشرة آلاف مستخدم، لكلٍّ منهم مثيل خاص به، بأسعار القائمة. قدّر تكلفتك
الاستخدام
- 10,000 مستخدم، لكلٍّ منهم مثيل خاص به، و256 MiB قيد الاستخدام.
- يرسل كل مستخدم 300 طلب يوميًا لمدة 30 يومًا، لكلٍّ منها 20 مللي ثانية من وقت CPU وإجابة بحجم 5 KB، في أوقات عشوائية.
- التطبيق مضبوط لينام فعليًا بعد ثانية من توقف المثيل (scale.suspend_after_ms 1000)، وهو الإعداد المناسب لحركة مرور متفرقة إلى هذا الحد: فطلبات المستخدم الواحد تفصل بينها دقائق، والمثيل الذي يبقى متوقفًا مؤقتًا في الذاكرة بينها تُحتسب له تلك الذاكرة طوال الوقت. لذا يبقى كل مثيل مستيقظًا ما دام يجيب ولمدة 1 ثانية بعد ذلك، ثم متوقفًا مؤقتًا 1 ثانية أخرى، ثم ينام وقد حُفظت ذاكرته، محتفظًا بنحو 100 MB.
- وكلفة ذلك: الطلب الذي يجد مثيله نائمًا يتلقى الرد خلال 6.7 مللي ثانية، بينما يتلقاه خلال 0.43 إلى 1.72 مللي ثانية إن وجده متوقفًا مؤقتًا؛ ويستهلك كل نوم واستيقاظ 25.6 مللي ثانية من وقت CPU، تُحسب ضمن وقت CPU للشهر.
شهر بأسعار القائمة
- CPU4.3 مليار مللي ثانية من وقت CPU × $0.01 / مليون$42.95
- الذاكرة12,581 GiB-ساعة × $0.008$100.65
- الطلبات90 مليون × $0.30 / مليون$27.00
- حركة المرور الصادرة450 GB × $0.004$1.80
- المحفوظ أثناء النوم1,000 GB-شهر × $0.02$20.00
تبلغ تكلفة هذا الشهر في الخطة المدفوعة $189.60: رسوم قدرها $5، و$184.60 لما يتجاوز الكميات المشمولة، تُخصم من رصيدك بالأسعار نفسها.
امنح كل مستخدم مثيله الخاص
مفتاح، ثم تطبيق يستخدم keys.from، يُنشر باستدعاء واحد.