يوفر S3P طريقة أسرع بشكل جذري للنسخ والإدراج والمزامنة والقيام بعمليات مجمعة أخرى عبر مجموعات AWS S3 الكبيرة.
يمكنك استخدامه كأداة سطر أوامر للعمليات المشتركة، أو يمكنك استخدامه كمكتبة لأي شيء يمكنك تخيله تقريبًا.
يتم تنظيم واجهة برمجة تطبيقات S3 حول إدراج العناصر بشكل تسلسلي - اطلب 1000 عنصر، وانتظر، ثم اطلب الـ 1000 عنصر التالية. هذه هي الطريقة التي تعمل بها جميع أدوات S3 تقريبًا. ومع ذلك، يمكن لـ S3P إدراج العناصر بالتوازي. إنه يعزز قدرة S3 على طلب أول 1000 عنصر مساوية لمفتاح معين أو بعده. بعد ذلك، بمساعدة التنصيف الخوارزمي وبعض الاستدلالات الذكية، يمكن لـ S3P مسح محتويات الدلو بدرجة تعسفية من التوازي. ومن الناحية العملية، يمكن لـ S3P سرد الحاويات بشكل أسرع بما يصل إلى 20 مرة من الطرق التقليدية.
S3P هي في الواقع مجرد أداة قائمة S3 رائعة وسريعة حقًا. يتم تعزيز التلخيص والنسخ والمزامنة من خلال قدرة S3P الأساسية على سرد الكائنات بشكل أسرع بشكل جذري.
لقد حافظنا على سرعات نسخ تصل إلى 8 غيغابايت/ثانية بين مجموعتين في نفس المنطقة باستخدام مثيل EC2 واحد لتشغيل S3P.
اقرأ المزيد عن S3P على Medium.
NodeJS
AWS-CLI
مطلوب aws-cli
لنسخ الملفات الكبيرة. افتراضيًا، يتم نسخ الملفات التي يزيد حجمها عن 100 ميغابايت باستخدام aws-cli
. وهذا حل وسط جيد للأداء. ومع ذلك، يمكنك تغيير هذا الحد إلى 5 غيغابايت باستخدام خيار --large-copy-threshold
.
لماذا؟ لا يدعم
aws-sdk
ملفات النسخ التي يزيد حجمها عن 5 غيغابايت دون حل أكثر تعقيدًا.
يجب أن تستخدم أسماء المفاتيح مجموعة أحرف محدودة:
<space>
!"#$%&'()*+,-./
0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
abcdefghijklmnopqrstuvwxyz{|}~
لماذا؟ نظرًا لأن Aws-S3 لا يدعم إدراج المفاتيح بترتيب تنازلي، فإن S3P يستخدم خوارزمية فرق تسد القائمة على نطاق الأحرف.
يستخدم s3p نفس بيانات الاعتماد التي يستخدمها aws-cli، لذا راجع وثائقهم: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
ليست هناك حاجة لتثبيت s3p مباشرة. طالما قمت بتثبيت NodeJS، يمكنك تشغيل s3p مباشرة باستخدام npx
.
تتضمن المساعدة المضمنة تفاصيل جميع الأوامر والخيارات وتوفر العديد من الأمثلة:
# list commands and get overall help
npx s3p help
استخدم خيار --help
للحصول على مساعدة تفصيلية وأمثلة لكل أمر:
# get specific command help and example uses
npx s3p cp --help
يمكنك أيضًا تثبيت s3p محليًا مما سيسمح له بالعمل بشكل أسرع.
# install s3p on your current machine
npm install s3p -g
# now it runs from the local install:
npx s3p help
بالإضافة إلى الأداء، يوفر S3P خيارات مرنة للقائمة المخصصة والنسخ والمقارنة:
والمثير للدهشة أنك لا تحتاج حتى إلى تشغيل S3P في السحابة لرؤية الكثير من فوائده. يمكنك تشغيله على جهازك المحلي، وبما أن النسخ S3 لا يمر مباشرة عبر S3P، فإنه لا يستخدم أي نطاق ترددي لـ AWS.
يمكن أن يصل أداء قائمة دلو S3 تقريبًا 20.000 50000 عنصر في الثانية (اعتبارًا من S3Pv3.5).
يمكن أن يتجاوز أداء نسخ حاوية S3 8 جيجا بايت في الثانية.
نعم، لقد رأيت 9 غيغابايت في الثانية مستدامة! كان هذا في مجموعة يبلغ متوسط حجم ملفها أكبر قليلاً من 100 ميغابايت. كان S3P يعمل على مثيل c5.2xlarge واحد. بالمقارنة، لم أر قط aws-s3-cp يحصل على أكثر من 150 ميجابايت/ثانية. وهذا أسرع بما يزيد عن 53 مرة.
متوسط حجم الملف له تأثير كبير على إجمالي عدد البايتات في الثانية لـ s3p:
موقع | يأمر | aws-cli | s3p | تسريع | متوسط الحجم |
---|---|---|---|---|---|
محلي | ليرة سورية | 2500 قطعة/ثانية | 50000 قطعة/ثانية | 20x | غير متوفر |
محلي | cp | 30 ميجابايت/ثانية | 150 ميجابايت/ثانية | 5x | 512 كيلو بايت |
ec2 | cp | 150 ميجابايت/ثانية | 8 جيجابايت/ثانية | 54x | 100 ميجابايت |
تم تطوير S3P للعمل على مجموعات تحتوي على ملايين العناصر و100 تيرابايت. حاليًا، لا يزال S3P مجرد تطبيق NodeJS أحادي النواة. هناك فرص لعمليات S3 المتوازية على نطاق واسع عن طريق تقسيم العمال أو حتى توزيع العمل عبر المثيلات باستخدام شيء مثل Elastic-Queue. إذا كان شخص ما يحتاج إلى حلول أسرع بمقدار 100-1000 مرة من aws-cli، فأخبرنا بذلك. نحن نحب العمل معك.
- شين@genui.com
تم تضمين جميع الوثائق في صفحات مساعدة CLI. يستخدم:
# get a list of commands
npx s3p help
# get a list of options for a command
# example:
npx s3p cp --help
جميع إمكانيات واجهة سطر الأوامر (CLI) متاحة أيضًا كواجهة برمجة التطبيقات (API). للتعرف على واجهة برمجة التطبيقات (API)، تعرف أولاً على خيارات واجهة سطر الأوامر (CLI)، ثم للتعرف على استدعاء واجهة برمجة التطبيقات (API) لأمر واجهة سطر الأوامر (CLI) محدد، قم بتشغيل هذا الأمر في سطر الأوامر باستخدام خيار --api-example
. سيؤدي هذا إلى إخراج رمز جافا سكريبت كمثال لاستدعاء هذا الأمر برمجيًا.
ملاحظة: عند استخدام
--api-example
في سطر الأوامر، لن يتم تشغيل الأمر فعليًا. لن يقوم S3P إلا بإخراج ما يعادل JavaScript لأمر CLI إلى وحدة التحكم ثم الخروج.
يجري:
> npx s3p ls --bucket foo --quiet --api-example
الإخراج:
require ( "s3p" ) . ls ( {
bucket : "foo" ,
quiet : true ,
} ) ;
// > Promise
التشغيل التجريبي:
> node
لصق:
require ( "s3p" )
. ls ( {
bucket : "foo" ,
quiet : true ,
} )
. then ( out => console . log ( out ) ) ;
الإخراج:
[
'item1' ,
'item2' ,
'item3' ,
... 8463 more items
}
تم تطوير S3P في الأصل بواسطة GenUI.com بالتعاون مع شركةsolution Bioscience, Inc.
GenUI هي شركة استشارية لبرامج تسويق التكنولوجيا ومقرها في سياتل. نحن نعمل على تسريع خرائط الطريق البرمجية. لا تتردد في الاتصال بـ GenUI وإخبارنا عن مشروعك. نحن نحب أن نسمع منك.