ذخیره سازی شیء: MinIO، S3
خلاصه ای کوتاه
ذخیره سازی شی یک فضای کلیدی مسطح (سطل/جسم) است که از طریق API S3 قابل دسترسی است، با دوام بالا و مقیاس افقی. MinIO فراهم می کند S3-compatibility در prem/در Kubernetes ؛ آمازون S3 یک معیار ابر با یک اکوسیستم غنی است. راه حل های کلیدی: طرح تحمل خطا (replica/EC)، سیاست امنیتی، کلاس های ذخیره سازی و چرخه های عمر، و همچنین SLO ها در مورد تاخیر/پهنای باند و هزینه هر 1 TB/month.
معماری و اصول
واحدها: سطل → شی (کلید)، ابرداده (ETag، نسخه ها، برچسب ها)، ACL/سیاست ها.
API: PUT/GET/DELETE، آپلود چندگانه، URL ارائه شده، کپی، ListV2، انتخاب (انتخاب سرور)، اطلاعیه ها.
سازگاری - S3/MinIO امروز سازگاری قوی برای عملیات خواندن پس از نوشتن است.
طول عمر در مقابل در دسترس بودن: به دست آمده توسط تکرار/پاک کردن برنامه نویسی، توزیع شده در سراسر گره/مناطق/مناطق.
موارد استفاده از محصول
رسانه/محتوا (هنر، پیش نمایش، کاتالوگ ارائه دهنده): ذخیره سازی ارزان + CDN.
سیاهههای مربوط/رویدادهای خام/fichesters: مصرف ارزان، فرمت پارکت/JSON.
پشتیبان گیری/عکس های فوری از پایگاه داده ها و مصنوعات: نسخه + Object Lock (WORM).
ML/تجزیه و تحلیل: مجموعه داده ها، مدل ها، نقاط بازرسی ؛ URL رزرو شده برای صدور امن.
گزارش/انطباق: تغییر ناپذیری و حفظ سیاست.
انتخاب: S3 (ابر) در مقابل MinIO (on-prem/K8s)
S3 (ابر):- مزایا: عملیات، کلاس های ذخیره سازی (استاندارد/IA/یخچال)، ساخته شده در چند منطقه، اکوسیستم.
- معایب: هزینه ترافیک خروجی، الزامات محلی سازی داده ها.
- مزایا: کنترل داده ها/جغرافیا/شبکه ها/هزینه، عملکرد بالا در NVMe، چند اجاره.
- معایب: بهره برداری از طرف شما (ارتقاء، قابلیت مشاهده، درایو/شبکه).
تحمل خطا و طرح های برنامه نویسی
تکثیر (N نسخه): ساده اما ناکارآمد در ظرفیت.
رمزگذاری پاک کردن (EC k + m): شیء را به k داده + m بلوک کد تقسیم می کند. زنده ماندن m شکست و صرفه جویی در فضا در مقایسه با یک ماکت N-fold.
توپولوژی MinIO: پاک کردن مجموعه، گره ها در استخر ؛ ≥ 4 گره، دیسک ها در سرور ها/قفسه های مختلف مطلوب هستند.
چند منطقه/چند سایت: ماکت توسط منطقه/منطقه، سطل فعال فعال با حل تعارض توسط نسخه.
امنیت و دسترسی
احراز هویت و حقوق
کاربران ریشه/خدمات، سیاست IAM (JSON)، STS برای کلید های موقت (نقش های امضا شده).
سیاست های سطل: 's3: GetObject'، 's3: PutObject'، 's3: DeleteObject'، شرایط توسط پیشوندها/برچسب ها/منبع IP/ارجاع.
json
{
"Version":"2012-10-17",
"Statement":[{
"Effect":"Allow",
"Action":["s3:GetObject","s3:ListBucket"],
"Resource":[
"arn:aws:s3:::media-bucket",
"arn:aws:s3:::media-bucket/public/"
],
"Condition":{"StringLike":{"s3:prefix":["public/"]}}
}]
}
رمزگذاری
SSE-S3: کلیدهای سرور vault.
SSE-KMS: کلید در KMS خارجی/جاسازی شده (خرک، ابر KMS)، کنترل چرخش و حسابرسی.
SSE-C: کلید توسط مشتری (در مسیرهای بحرانی) ارائه می شود.
رمزگذاری در پرواز: TLS، mTLS بین سرویس ها/دروازه ها.
غیر قابل تغییر
نسخهبندی سطلی) محافظت حذف/جاینوشت (.
قفل شی (WORM): حکومت режим/انطباق، поля 'RetentionTillDate' и نگه داشتن قانونی.
چرخه زندگی: انتقال به کلاس «گرم/سرد»، حذف نسخه های قدیمی، دوره نگهداری برای پیش نمایش/فایل های موقت.
پاره شدن MinIO: در prem → سطل S3-class/external ابر ؛ انتخاب توسط پیشوندها/برچسب ها.
xml
<LifecycleConfiguration>
<Rule>
<ID>archive-90</ID><Status>Enabled</Status>
<Filter><Prefix>logs/</Prefix></Filter>
<NoncurrentVersionExpiration><NoncurrentDays>30</NoncurrentVersionExpiration>
<Expiration><Days>365</Days></Expiration>
</Rule>
</LifecycleConfiguration>
تکثیر و چند سایت
CRR/SRR: Cross/Same-Region، پیشوندها/برچسب های انتخابی.
فعال فعال: کپی دو طرفه با نسخه بندی ؛ مهم است که اولویت/درگیری را مشخص کنید.
اعتبار سنجی و تاخیر: معیارهای تاخیر، هشدار برای اشیاء تحویل داده نشده.
اطلاعیه ها و ادغام (رویداد محور)
اطلاعیه های سطل MinIO: کافکا، NATS، Webhook، AMQP، MQTT، Elasticsearch.
Триггеры: 's3: ObjectCreated:', 's3: ObjectRemoved:', 's3: Replication:'.
الگوها: پیش نمایش خودکار نسل، ETL در DWH، به روز رسانی fichester، سیگنال در ضد تقلب.
bash mc event add my/minio/media arn:minio:sqs::WEBHOOK:thumbs \
--event put --prefix uploads/
پروفایل های عملکرد
تاخیر: p95/p99 GET/PUT ؛ هدف برای مسیرهای API داغ p95 GET ≤ 30-50ms در مرکز داده محلی است.
توان عملیاتی: Multipart-PUT (قطعات 8-64 مگابایت)، بارگیری موازی، لوله کشی.
شبکه: 25-100 گیگابایت، MTU جامبو در داخل کارخانه، RSS/RPS در NIC، وابستگی NUMA.
دیسک: NVMe برای کار گرم، HDD برای آرشیو ؛ MinIO دارای تقارن دیسک در پاک کردن مجموعه است.
تنظیم مشتری: افزایش SDK max _ concurrency، استفاده مجدد از TCP، وقفه های صحیح و عقب نشینی.
قابلیت مشاهده و هشدار
معیارهای MinIO/S3: عملیات (PUT/GET/DELETE/List)، بایت ها، خطاها، تأخیر، تأخیر ماکت، بهبودی.
میزبان/درایو: SMART/درجه حرارت، صف I/O، قطره/ارسال مجدد.
- در دسترس بودن سطل ≥ 99. 95 درصد/30 روز
- p95 GET ≤ 50ms (محلی)، p95 PUT ≤ 150ms (چند بخش).
- موفقیت ≥ 99 9٪، تاخیر ≤ 60 ثانیه p95.
- زمان بهبودی دیسک معیوب 24 ساعت ≤ (بهبودی غذا را «نمی کشد»).
FinOps و اقتصاد
هزینه 1 TB/month: دیسک + استهلاک + انرژی + شبکه + عملیات (برای پیش نمایش).
هزینه خروج: برنامه کش/CDN، پیش نمایش آنلاین در ابر.
پاره شدن/چرخه عمر: حرکت تهاجمی داده های سرد، فشرده سازی/پارتیشن بندی (پارکت).
سهمیه ها و بودجه ها: محدودیت های هر مستاجر از سطل/بایت/RPS، گزارش «درخواست $/1 M».
محاسبات نقطه ای/پیشگیرانه برای ETL: اگر پردازش را در کنار MinIO بکشید.
استقرار MinIO
Bare-metal (خوشه ساده شده EC)
bash minio server http://node{1...4}/export{1...8} \
--console-address ":9001" --address ":9000"
توصیه ها:
- ≥ 4 گره، 8-12 دیسک در هر گره ؛ همان اندازه دیسک/سرعت.
- ارسال گره ها توسط قفسه/قدرت/سوئیچ.
- معکوس پروکسی/ورود (TLS 1. 2+/1. 3، HSTS)، mTLS برای مشتریان داخلی.
کوبرنتیز (مستاجران)
اپراتور NVIDIA/MinIO (CRD 'Tenant')، StatefulSet с дисками، PV/PVC، ضد وابستگی، گسترش توپولوژی.
منابع: استخرهای CPU برای جریان شبکه، ulimit بالا (FD)، کلاس های ذخیره سازی فردی (NVMe/HDD).
به روز رسانی: به طور متناوب، با شفا/تکرار و کنترل SLO.
ابزار 'mc' (مشتری MinIO)
bash alias mc alias set my https://minio. example KEY SECRET
create bucket, enable versioning and WORM mc mb my/media mc version enable my/media mc retention set --default COMPLIANCE 365d my/media
read-only policy for public/
mc policy set json./policy. json my/media
replication to cloud bucket mc replicate add my/media --remote s3/backup --replicate "delete, metadata, delete-marker"
Kafka mc event add my/media arn: minio: sqs:: kafka: k1 --event put, delete
الگوهای ادغام محصول
URL رزرو شده برای دانلود/دانلود بدون صدور مستقیم کلید.
اعتبار سنجی محتوا: محدودیت اندازه/نوع، اسکنر آنتی ویروس در اطلاعیه ها.
ابرداده/برچسب ها: برای چرخه زندگی/آرشیو/اعتدال.
CDN قبل از شی: کاهش خروج و تاخیر به کاربران نهایی.
RAG/ML: ذخیره سازی تعبیه ها/قطعات، مانیفست های مجموعه داده، نسخه های مدل (رجیستری مدل بیش از S3).
ایمنی و انطباق
سیاهههای مربوط به حسابرسی: چه کسی/چه چیزی/چه زمانی (PUT/GET/DELETE)، سیاهههای مربوط غیر قابل تغییر در یک سطل WORM جداگانه.
کنترل های شبکه: VLAN/VRF اختصاصی، گروه های امنیتی/ACL، نقاط انتهایی خصوصی.
KMS و چرخش کلید: سیاست چرخش سالانه، کنترل دوگانه در unseal.
PII/PCI: تقسیم بندی سطل، سیاست دسترسی دقیق (ABAC توسط برچسب های داده)، قفل شی برای گزارش.
چک لیست راه اندازی
- کلاس های داده انتخاب شده: گرم/گرم/سرد ؛ اهداف RPO/RTO/SLO
- پاک کردن مجموعه ها و تعداد گره های طراحی شده ؛ تست شکست
- TLS/mTLS، KMS، IAM/STS، سیاست های سطل و نسخه بندی.
- چرخه عمر/پاره شدن و تکرار ؛ قفل شی برای سطل های بحرانی.
- اطلاعیه ها در کافکا/Webhook ؛ آنتی ویروس/ETL/پیش نمایش.
- نظارت (عملیات، ورود به سیستم تکرار، دیسک، شبکه)، هشدارها و داشبورد.
- طرح به روز رسانی/پسوند (نورد)، درمان runbook/تعادل.
- سهمیه/صورتحساب/گزارش هر مستاجر.
خطاهای رایج
مخلوط کردن NVMe و HDD در یک پاک کردن مجموعه → تاخیر غیر قابل پیش بینی.
بدون نسخه/نگهداری → خطر از دست دادن/ransomware.
چند بخش خاموش/قطعات بیش از حد کوچک → پهنای باند کم.
سطل داده های بحرانی غیر قابل تکرار.
فقدان تست DR/بازیابی و کنترل هزینه خروج.
iGaming/fintech خاص
سیاهههای مربوط/رویدادهای خام: پارکت + چرخه عمر (7-30 روز گرم، سپس آرشیو/پاره شدن).
محتوا و ارائه دهندگان رسانه: GET، CDN، کنترل کش تهاجمی ارائه شده است.
پشتیبان گیری کیف پول/پایگاه داده: نسخه + WORM، تمرینات منظم DR، حساب جداگانه/خوشه برای کپی.
Antifraud/fichestors: تاخیر خواندن کم (MinIO محلی)، حوادث در کافکا برای محاسبات.
گزارش دهی و تنظیم کننده ها: Object Lock (Compliance)، گزارش های حسابرسی غیر قابل تغییر، سیاست های نگهداری روشن.
مجموع
ذخیره سازی شیء S3-compatible پایه «آجر» یک پلت فرم مدرن است. طرح صحیح اتحادیه اروپا/تکرار، IAM سخت/رمزگذاری/نگهداری، چرخه زندگی متفکر/پاره شدن و اطلاعیه ها آن را به یک «دیسک منفعل» قابل اعتماد برای رسانه ها، سیاهههای مربوط، پشتیبان گیری و داده های ML تبدیل می کند. در MinIO، شما کنترل و سرعت on-prem/K8s را دریافت می کنید ؛ در S3 - مقیاس و اکوسیستم ابر. همه چیز را در IaC ضبط کنید، SLO و هزینه را اندازه گیری کنید - و این تسهیلات یک پشتیبانی قابل پیش بینی، ایمن و اقتصادی برای محصولات خواهد بود.