dtm-labs/dtm
چه کاری انجام میده؟
این یک چارچوب معاملات توزیعشده (distributed transaction) هست که به توسعهدهندگان کمک میکنه تا در سیستمهای میکروسرویسی، عملیاتهای چند مرحلهای رو به صورت اتمیک و قابل اعتماد مدیریت کنند. از الگوهای مختلفی مثل Saga, TCC, Xa, 2-phase message و Outbox پشتیبانی میکنه و همچنین قابلیت Workflow رو هم داره.
کاربرد:
وقتی تو یک سیستم میکروسرویسی داری چند سرویس که باید همزمان تغییراتی رو اعمال کنند (مثلاً کاهش موجودی و ثبت سفارش)، dtm کمک میکنه این عملیاتها یا همه موفق بشن یا همه لغو بشن — بدون اینکه دادهها ناسازگار بشن.
در چه شرایطی بهتره استفاده شود؟
وقتی نیاز داری که چند سرویس مستقل در یک تراکنش واحد شرکت کنند، بهویژه در سیستمهای بزرگ با قابلیت مقیاسپذیری بالا. همچنین وقتی میخوای از eventual consistency استفاده کنی ولی بدون از دست دادن قابلیت اطمینان.
چند مثال از موارد استفاده:
ثبت سفارش در فروشگاه آنلاین: کاهش موجودی + کسر هزینه + ارسال نوتیفیکیشن
انتقال پول بین حسابهای بانکی در سرویسهای مختلف
رزرو بلیط هواپیما همراه با پرداخت و رزرو صندلی
- ##distributed
- ##microservices
- ##saga
- ##tcc
- ##outbox
- ##event
- ##workflow
- ##dtm
- ##cloud
- ##2pc
