مأموریت تخصیص
تخصیص هوشمند انبار
تخصیص هوشمند انبار، سرویس تصمیمگیری بدون وضعیت است که انبارهای واجد شرایط را بر پایهٔ موجودی، هزینه، ETA، ترافیک، ناوگان و SLA رتبهبندی و سپس همهٔ SKUها را در Redis بهصورت اتمیک رزرو میکند.
- Atomicرزرو چند SKUتراکنش Lua یا کل سفارش را در یک انبار رزرو میکند یا هیچ چیزی را تغییر نمیدهد.
- O(W×S)مسیر تصمیمهزینهٔ رتبهبندی با تعداد انبارهای نامزد و SKUهای درخواستی رشد میکند.
- 500.7RPS مرجعبنچمارک محلی تکفرایندی با دادهٔ حافظه، ۳۳ انبار و همزمانی ۲۵.
- 124.6msp95 مرجعنتیجهٔ بنچمارک محلی وابسته به سختافزار؛ نه SLA تولید.
شرح مأموریت
انتخاب انبار فقط پیدا کردن موجودی نیست. تصمیم باید تکرارپذیر، توضیحپذیر و هنگام رقابت سفارشهای همزمان برای یک موجودی ایمن باشد.
سرویس رتبهبندی را از رزرو جدا، ورودی مبهم را رد و عمداً از تقسیم سفارش جلوگیری میکند تا اجرای پاییندست یک نتیجهٔ روشن بگیرد.
نقشهٔ سیستم
معماری
قرارداد FastAPI
مدلهای ورودی سختگیر، سلامت، تخصیص، متریک Prometheus و مستندات OpenAPI را ارائه میدهند.
موتور رتبهبندی
امتیازدهی قطعی نامزدها را با توجه به موجودی، هزینه، ETA، ترافیک، ناوگان و SLA فیلتر و مرتب میکند.
نمای Redis
خواندن pipelineشده، نمای داغ موجودی و وضعیت عملیات را برای تصمیم کمتأخیر فراهم میکند.
رزرو Lua
بهترین نامزد اتمیک رزرو میشود و اگر همزمانی انتخاب را باطل کند fallback مرتب اعمال میشود.
زمان اجرای Kubernetes
probe، متریک، پیکربندی مقیاس افقی و گردشکار blue-green از استقرار پشتیبانی میکنند.
مسیر راهبردی
نقشهٔ نبرد
مسیر پیادهسازی، ایستگاهبهایستگاه.
- ایستگاه 01
رتبهبندی خالص و قطعی را از side effect جدا کن تا تصمیم آزمونپذیر و توضیحپذیر باشد.
- ایستگاه 02
خواندنهای Redis را pipeline کن و بررسی موجودی و کاهش همهٔ SKUها را در یک عملیات Lua انجام بده.
- ایستگاه 03
وقتی درخواست دیگری بین خواندن و رزرو موجودی را برد، نامزدها را به ترتیب رتبه دوباره امتحان کن.
- ایستگاه 04
مسیریابی و هماهنگی کسبوکار را بیرون سرویس نگه دار و outbox، CDC و saga را بهعنوان راهنمای اتصال مستند کن.
- ایستگاه 05
متریک Prometheus، health probe، قرارداد OpenAPI و نمونهٔ استقرار را کنار الگوریتم ارائه کن.
رویارویی حساس
نبرد با غول مرحله
رقابت میان خواندن و رزرو موجودی، خطای حیاتی است. رتبهبندی درست بیارزش است اگر سفارشهای همزمان SKU را بیشفروش کنند یا نیمی از سفارش رزرو بماند.
دستاوردهای آزادشده
پاداشهای مأموریت
خروجیهایی که این مأموریت به همراه داشت.
- پاداش 01 آزاد شد
تخصیص قطعی و مستقل آزمونپذیر میماند و تغییر نهایی موجودی اتمیک است.
- پاداش 02 آزاد شد
fallback رتبهبندیشده، اولویت کسبوکار را وقتی نامزد اول رقابت را میبازد حفظ میکند.
- پاداش 03 آزاد شد
پیادهسازی مرجع قراردادهای عملیاتی لازم برای مشاهده و استقرار سرویس را دارد.
آیتمهای ویژه
تجهیزات فنی
- Python
- FastAPI
- Pydantic
- Redis
- Lua
- Prometheus
- OpenAPI
- Docker
- Kubernetes
شواهد کار
کاوش مأموریت
اعداد 500.7 RPS و 124.6 ms p95 مربوط به اجرای مرجع محلی مستندشده در مخزن هستند، نه SLA تولید؛ نتیجه به سختافزار و بار بستگی دارد.