آشنایی با روند معامله

ساخت وبلاگ

برای جدیدترین ، سیستم های ساختمان را با استفاده از معاملات در Apache Kafka در توسعه دهنده Clobuent بررسی کنید.

در یک پست وبلاگ قبلی ، ما معنایی دقیقاً یکپارچه را برای Apache Kafka ® معرفی کردیم. این پست شامل معانی مختلف تحویل پیام ، تولید کننده Idempotent ، معاملات و معناشناسی پردازش دقیقاً یکپارچه برای جریان های کافکا بود. اکنون از آنجا که کنار گذاشته شده و به معاملات عمیق تر در آپاچی کافکا شیرجه می زنیم ، انتخاب خواهیم کرد. هدف این سند آشنایی با خواننده با مفاهیم اصلی مورد نیاز برای استفاده از API معامله در Apache Kafka به طور مؤثر است.

ما در مورد مورد استفاده اصلی که API معامله برای آن طراحی شده است ، معناشناسی معاملات کافکا ، جزئیات API معامله برای مشتری جاوا ، جنبه های جالب اجرای و در آخر ، ملاحظات مهم برای استفاده از API بحث خواهیم کرد.

این پست وبلاگ در نظر گرفته نشده است که یک آموزش در مورد مشخصات استفاده از معاملات باشد ، و همچنین ما در اعماق طرح های ظریف طراحی نخواهیم شد. درعوض ، ما در صورت لزوم برای خوانندگانی که مایل به عمیق تر شدن هستند ، به Javadocs یا Design Docs پیوند خواهیم داد.

ما انتظار داریم که خواننده با مفاهیم اساسی کافکا مانند موضوعات ، پارتیشن ها ، جبران ورود به سیستم و نقش کارگزاران و مشتریان در یک برنامه مبتنی بر کافکا آشنا باشد. آشنایی با مشتریان کافکا برای جاوا نیز کمک خواهد کرد.

برای خواندن پست های دیگر در این سری ، لطفاً ببینید:

چرا معاملات؟

ما معاملات را در کافکا در درجه اول برای برنامه هایی که یک الگوی "خوانده شده پردازش-نوشتن" را نشان می دهند ، طراحی کردیم که در آن خوانده شده و می نویسد از جریان داده های ناهمزمان مانند موضوعات Kafka است. چنین برنامه هایی از محبوبیت بیشتری به عنوان برنامه های پردازش جریان شناخته می شوند.

نسل اول برنامه های پردازش جریان می تواند پردازش نادرست را تحمل کند. به عنوان مثال ، برنامه هایی که جریان برداشت از صفحه وب را مصرف می کنند و تعداد زیادی از نماها را در هر صفحه وب ایجاد می کنند می توانند برخی از خطاها را در شمارش ها تحمل کنند.

با این حال ، تقاضا برای برنامه های پردازش جریان با معناشناسی قوی تر به همراه محبوبیت این برنامه ها افزایش یافته است. به عنوان مثال ، برخی از موسسات مالی از برنامه های پردازش جریان برای پردازش بدهی ها و اعتبار در حساب های کاربر استفاده می کنند. در این مواقع ، هیچ تحمل برای خطا در پردازش وجود ندارد: ما به هر پیام نیاز داریم که دقیقاً یک بار ، بدون استثنا پردازش شود.

به طور رسمی تر ، اگر یک برنامه پردازش جریان پیام A را مصرف کند و پیام B را به گونه ای تولید کند که B = F (A) ، پس پردازش دقیقاً یکسان بدان معنی است که A در صورت تولید موفقیت آمیز و فقط در صورت تولید موفقیت آمیز ، مصرف می شود و برعکس.

با استفاده از تولید کنندگان و وانیل کافکا و مصرف کنندگان پیکربندی شده برای معناشناسی تحویل AT-ANCE ، یک برنامه پردازش جریان می تواند معانی پردازش دقیقاً یکپارچه را به روش های زیر از دست بدهد:

  1. تولید کننده. send () می تواند منجر به نوشتن تکراری از پیام B به دلیل ترمیم های داخلی شود. این توسط تولید کننده idempotent پرداخته شده است و کانون بقیه این پست نیست.
  2. ما ممکن است پیام ورودی A را مجدداً پردازش کنیم ، در نتیجه پیام های تکراری B به خروجی نوشته می شود و معناشناسی پردازش دقیقاً یکپارچه را نقض می کند. اگر برنامه پردازش جریان پس از نوشتن B خراب شود ، اما قبل از علامت گذاری به عنوان مصرف ، ممکن است پردازش مجدد اتفاق بیفتد. بنابراین هنگامی که از سر گرفته می شود ، دوباره مصرف می کند و دوباره B را می نویسد و باعث تکراری می شود.
  3. سرانجام ، در محیط های توزیع شده ، برنامه ها خراب می شوند یا Worse! - به طور معمول اتصال به بقیه سیستم را از دست می دهند. به طور معمول ، نمونه های جدید به طور خودکار جایگزین مواردی می شوند که گم شده اند. از طریق این فرآیند ، ما ممکن است چندین نمونه را در حال پردازش موضوعات ورودی و نوشتن به همان موضوعات خروجی باشیم که باعث خروجی های تکراری و نقض معناشناسی پردازش دقیقاً یکپارچه می شود. ما این مسئله را "نمونه های زامبی" می نامیم.

ما API های معامله را در کافکا برای حل مشکلات دوم و سوم طراحی کردیم. معاملات با ساخت این چرخه ها به صورت اتمی و با تسهیل شمشیربازی زامبی ، پردازش دقیقاً یکپارچه را در چرخه های Write Write خوانده شده امکان پذیر می کنند.

معناشناسی معاملات

چند قطعه اتمی می نویسد

معاملات نوشتن اتمی را به چندین موضوع و پارتیشن های کافکا امکان پذیر می کند. تمام پیام های موجود در معامله با موفقیت نوشته می شوند یا هیچ یک از آنها نخواهد بود. به عنوان مثال ، خطایی در حین پردازش می تواند باعث قطع معامله شود ، در این صورت هیچ یک از پیام های حاصل از معامله توسط مصرف کنندگان قابل خواندن نخواهد بود. اکنون ما خواهیم دید که چگونه این امکان را برای چرخه های پردازش خواندن اتمی فراهم می کند.

اول ، بیایید در نظر بگیریم که یک چرخه فرآیند خواندن اتمی به چه معناست. به طور خلاصه ، این بدان معنی است که اگر یک برنامه از پیام A در افست X از برخی از موضوعات-بخش TP0 استفاده کند ، و پیام B را به عنوان-بخش TP1 می نویسد پس از انجام برخی از پردازش ها در پیام A به گونه ای که b = f (a) ، سپسچرخه خواندن نوشتن نوشتن فقط در صورتی است که پیام های A و B با موفقیت در نظر گرفته می شوند و با هم منتشر می شوند ، یا اصلاً.

اکنون ، پیام A فقط در صورت مشخص شدن Offset X به عنوان مصرف ، از TP0 موضوع در نظر گرفته می شود. علامت گذاری جبران به عنوان مصرف شده ، تعهد جبران نامیده می شود. در کافکا ، ما تعهدات افست را با نوشتن به یک موضوع داخلی کافکا به نام موضوع جبران کننده ضبط می کنیم. پیام فقط در صورتی که جبران آن به موضوع جبران خسارت باشد ، مصرف می شود.

بنابراین از آنجا که یک تعهد جبران فقط نوشتن دیگری برای یک موضوع کافکا است ، و از آنجا که یک پیام فقط در صورت انجام جبران آن در نظر گرفته می شود ، اتمی در چندین مباحث می نویسد و پارتیشن ها همچنین چرخه های فرآیند خواندن اتمی را قادر می سازد: تعهد جبرانX به موضوع جبران خسارت و نوشتن پیام B به TP1 بخشی از یک معامله واحد و از این رو اتمی خواهد بود.

نرده زامبی

ما با نیاز به اینکه به هر تولید کننده معامله ای یک شناسه منحصر به فرد به نام Transaction. id اختصاص داده شود ، مشکل نمونه های زامبی را حل می کنیم. این برای شناسایی همان نمونه تولید کننده در سراسر راه اندازی مجدد فرآیند استفاده می شود.

API مستلزم آن است که اولین بهره برداری از یک تولید کننده تراکنش باید صریحاً ثبت نام خود را با خوشه کافکا ثبت کند. هنگامی که این کار را انجام داد ، کارگزار Kafka معاملات باز را با Transactional. id داده شده بررسی می کند و آنها را تکمیل می کند. همچنین یک دوره مرتبط با معامله را افزایش می دهد. این دوره یک قطعه داخلی از ابرداده است که برای هر معامله ای ذخیره می شود.

هنگامی که دوره به دست آمد ، هر تولید کننده با همان معامله. ID و یک دوره قدیمی تر زامبی در نظر گرفته می شوند و حصار می شوند ، یعنی. معاملات معاملاتی آینده از این تولید کنندگان رد می شود.

خواندن پیام های معامله ای

حال ، بیایید توجه خود را به ضمانت های ارائه شده هنگام خواندن پیام های نوشته شده به عنوان بخشی از معامله ، تغییر دهیم.

مصرف کننده Kafka فقط در صورت انجام معامله ، پیام های معامله ای را به برنامه ارائه می دهد. به عبارت دیگر ، مصرف کننده پیام های معامله ای را که بخشی از یک معامله باز هستند ، ارائه نمی دهد و همچنین پیام هایی را که بخشی از یک معامله سقط جنین است ، ارائه نمی دهد.

شایان ذکر است که ضمانت های فوق از خواندن اتمی کم می شود. به طور خاص ، هنگام استفاده از یک مصرف کننده کافکا برای مصرف پیام از یک موضوع ، یک برنامه نمی داند که آیا این پیام ها به عنوان بخشی از معامله نوشته شده است ، و بنابراین آنها نمی دانند از چه زمانی معاملات شروع یا پایان می یابد. علاوه بر این ، یک مصرف کننده خاص تضمین نمی شود که در تمام پارتیشن هایی که بخشی از یک معامله هستند مشترک شوند ، و هیچ راهی برای کشف این موضوع ندارد و تضمین می کند که تمام پیام هایی که بخشی از یک معامله واحد بوده اند ، در نهایت مصرف می شودتوسط یک مصرف کننده واحد.

به طور خلاصه: کافکا تضمین می کند که یک مصرف کننده در نهایت فقط پیام های غیر متعادل یا پیام های معامله ای متعهد را ارائه می دهد. این پیام ها را از معاملات باز خودداری می کند و پیام های مربوط به معاملات سقط شده را فیلتر می کند.

API معامله در جاوا

ویژگی معامله در درجه اول یک ویژگی سطح سرور و پروتکل است که برای استفاده توسط هر کتابخانه مشتری که از آن پشتیبانی می کند در دسترس است. یک برنامه "خواندن-پردازش-نوشتن" که در جاوا نوشته شده است که از API معامله Kafka استفاده می کند ، چیزی شبیه به این است:

خطوط 1-5 با مشخص کردن پیکربندی Tractional. id و ثبت نام آن در API inittransactions ، تولید کننده را تنظیم کنید. پس از بازگرداندن تولید کننده. inittransactions () ، هرگونه معامله ای که توسط نمونه دیگری از یک تولید کننده با همان معامله انجام شده است. ID بسته و حصار می گرفت.

خط 7-10 مشخص می کند که Kafkaconsumer فقط باید پیام های غیر تراریخته را بخواند ، یا پیام های معامله ای را از مباحث ورودی خود متعهد کند. برنامه های پردازش جریان به طور معمول داده های خود را در مراحل مختلف فرآیند خوانده شده پردازش می کنند و هر مرحله از خروجی های مرحله قبلی به عنوان ورودی آن استفاده می کند. با مشخص کردن حالت Read_Committed ، می توانیم پردازش دقیقا در تمام مراحل را انجام دهیم.

خطوط 14-21 هسته اصلی حلقه خواندن-پردازش-نوشتن را نشان می دهد: ما برخی از سوابق را مصرف می کنیم ، یک معامله را شروع می کنیم ، سوابق مصرفی را پردازش می کنیم ، سوابق پردازش شده را برای موضوع خروجی می نویسیم ، جبران های مصرفی را به موضوع جبران ارسال می کنیم و سرانجامانجام معاملهبا ضمانت های ذکر شده در بالا ، می دانیم که جبران و سوابق خروجی به عنوان یک واحد اتمی انجام می شود.

چگونه معاملات کار می کنند

در این بخش ، ما مختصراً از مؤلفه های جدید و جریان داده های جدید معرفی شده توسط API های معامله معرفی شده در بالا ارائه می دهیم. برای یک درمان جامع تر از این موضوع ، ممکن است سند طراحی اصلی را بخوانید ، یا صحبت های اجلاس Kafka را که در آن معاملات معرفی شده است ، تماشا کنید.

هدف از مطالب زیر این است که هنگام اشکال زدایی برنامه هایی که از معاملات استفاده می کنند ، یا هنگام تلاش برای تنظیم معاملات برای عملکرد بهتر ، یک مدل ذهنی ارائه شود.

هماهنگ کننده معامله و گزارش معامله

مؤلفه های معرفی شده با API معاملات در Kafka 0. 11. 0 هماهنگ کننده معامله و ورود به معامله در سمت راست نمودار فوق هستند.

هماهنگ کننده معامله ماژولی است که در داخل هر کارگزار کافکا اجرا می شود. گزارش معامله یک موضوع داخلی کافکا است. هر هماهنگ کننده صاحب برخی از زیر مجموعه های پارتیشن ها در گزارش معامله است ، یعنی. پارتیشن هایی که کارگزار آن رهبر است.

هر Transaction. id از طریق یک تابع ساده هشویی به یک بخش خاص از ورود به معامله نقشه برداری می شود. این بدان معنی است که دقیقاً یک هماهنگ کننده صاحب یک معامله خاص است.

به این ترتیب ، ما از پروتکل تکثیر سنگ جامد کافکا و فرآیندهای انتخابات رهبر استفاده می کنیم تا اطمینان حاصل کنیم که هماهنگ کننده معامله همیشه در دسترس است و تمام وضعیت معامله به طور قابل توجهی ذخیره می شود.

شایان ذکر است که ورود به معامله فقط آخرین وضعیت معامله را ذخیره می کند و نه پیام های واقعی در معامله. پیام ها فقط در بخش های موضوع واقعی ذخیره می شوند. این معامله می تواند در ایالت های مختلفی مانند "در حال انجام" ، "آماده سازی تعهد" و "تکمیل" باشد. این حالت و ابرداده مرتبط است که در گزارش معامله ذخیره می شود.

گردش داده ها

در سطح بالایی ، جریان داده ها را می توان به چهار نوع مجزا تقسیم کرد.

پاسخ: تعامل تولید کننده و هماهنگ کننده معامله

هنگام اجرای معاملات ، تولید کننده در نقاط زیر درخواست هایی را به هماهنگ کننده معامله می دهد:

  1. API inittransactions با هماهنگ کننده یک معامله را ثبت می کند. در این مرحله ، هماهنگ کننده هرگونه معاملات در انتظار را با آن معامله می کند. ID و دوره را به حصار زامبی ها می اندازد. این فقط یک بار در هر جلسه تولید کننده اتفاق می افتد.
  2. هنگامی که تولید کننده قصد دارد برای اولین بار در یک معامله داده ها را به یک پارتیشن ارسال کند ، اولین بار با هماهنگ کننده ثبت می شود.
  3. هنگامی که برنامه CommitTransaction یا سقط جنین را فراخوانی می کند ، درخواست برای شروع پروتکل تعهد دو مرحله به هماهنگ کننده ارسال می شود.

ب: تعامل هماهنگ کننده و معامله معامله

با پیشرفت معامله ، تولید کننده درخواست های فوق را برای به روزرسانی وضعیت معامله در هماهنگ کننده ارسال می کند. هماهنگ کننده معامله وضعیت هر معامله ای را که در حافظه دارد ، نگه می دارد ، و همچنین می نویسد که دولت به گزارش معامله (که سه روش تکرار می شود و از این رو دوام است).

هماهنگ کننده معامله تنها مؤلفه ای است که از گزارش معامله خوانده و می نویسد. در صورت عدم موفقیت یک کارگزار داده شده ، یک هماهنگ کننده جدید به عنوان رهبر برای پارتیشن های مربوط به معامله که کارگزار مرده متعلق به آن است ، انتخاب می شود و پیام های مربوط به پارتیشن های ورودی را برای بازسازی حالت حافظه خود برای معاملات در آن پارتیشن ها می خواند.

ج: تولیدکننده داده ها را برای هدف قرار دادن بخش های موضوع می نویسد

پس از ثبت پارتیشن های جدید در معامله با هماهنگ کننده ، تولید کننده داده ها را به صورت عادی به پارتیشن های واقعی ارسال می کند. این دقیقاً همان تولید کننده است. جریان ، اما با اعتبار سنجی اضافی برای اطمینان از تولید کننده حصارکشی.

د: هماهنگ کننده تعامل موضوع-بخش

پس از تولید کننده یک تعهد (یا یک سقط جنین) را آغاز می کند ، هماهنگ کننده پروتکل تعهد دو فاز را آغاز می کند.

در مرحله اول ، هماهنگ کننده وضعیت داخلی خود را به "آماده سازی_ commit" به روز می کند و این حالت را در گزارش معامله به روز می کند. پس از اتمام این کار ، معامله تضمین می شود که بدون توجه به چه چیزی انجام شود.

سپس هماهنگ کننده فاز 2 را آغاز می کند ، جایی که می نویسد نشانگرهای تعهد معامله را به بخش های موضوعی که بخشی از معامله هستند ، می نویسد.

این نشانگرهای معامله در معرض برنامه های کاربردی قرار نمی گیرند ، اما توسط مصرف کنندگان در حالت read_commed برای فیلتر کردن پیام های مربوط به معاملات سقط شده و بازگشت پیام هایی که بخشی از معاملات باز نیستند استفاده نمی شود (یعنی مواردی که در ورود به سیستم هستند اما A ندارندنشانگر معامله مرتبط با آنها).

پس از نگارش نشانگرها ، هماهنگ کننده معامله معامله را "کامل" نشان می دهد و تولید کننده می تواند معامله بعدی را آغاز کند.

معاملات در عمل

اکنون که معنایی معاملات و نحوه کار آنها را درک کرده ایم ، توجه خود را به جنبه های عملی برنامه های نوشتن که از معاملات استفاده می کنند ، توجه می کنیم.

نحوه انتخاب یک معامله.

Tractional. id نقش مهمی در شمشیربازی زامبی ها دارد. اما حفظ شناسه ای که در جلسات تولید کننده سازگار باشد و همچنین از زامبی ها به درستی نرده ها را نرده است ، کمی مشکل است.

نکته اصلی شمشیربازی زامبی ها به درستی اطمینان از این است که مباحث ورودی و پارتیشن های موجود در چرخه خوانده شده و نوشتن همیشه برای یک معامله خاص یکسان است. اگر این درست نیست ، ممکن است برخی از پیام ها از طریق شمشیربازی ارائه شده توسط معاملات نشت کنند.

به عنوان مثال ، در یک برنامه پردازش جریان توزیع شده ، فرض کنید TP0 موضوع-بخشی در ابتدا توسط Transactional. id T0 پردازش شده است. اگر در بعضی مواقع بعد ، می توان آن را به تولید کننده دیگری با Transactional. id T1 نقشه برداری کرد ، بین T0 و T1 شمشیربازی وجود نخواهد داشت. بنابراین ممکن است پیام های TP0 دوباره پردازش شود و ضمانت پردازش دقیقاً یکپارچه را نقض می کند.

به طور عملی ، باید نقشه برداری را بین پارتیشن های ورودی و معاملاتی در یک فروشگاه خارجی ذخیره کرد ، یا رمزگذاری استاتیک از آن داشته باشد. کافکا برای حل این مشکل رویکرد دوم را انتخاب می کند.

چگونه معاملات انجام می شود و چگونه می توان آنها را تنظیم کرد

عملکرد تولید کننده تراکنش

بیایید توجه خود را به نحوه انجام معاملات تغییر دهیم.

اول ، معاملات فقط باعث تقویت نوشتن متوسط می شوند. نوشته های اضافی به این دلیل است:

  1. برای هر معامله ، RPC های اضافی برای ثبت پارتیشن ها با هماهنگ کننده داشتیم. اینها جمع شده اند ، بنابراین ما RPC های کمتری نسبت به پارتیشن هایی در معامله داریم.
  2. هنگام انجام معامله ، یک نشانگر معامله باید برای هر پارتیشن شرکت در معامله نوشته شود. باز هم ، هماهنگ کننده معامله تمام نشانگرهایی را که برای همان کارگزار در یک RPC واحد محدود شده اند ، دسته بندی می کند ، بنابراین ما RPC را در آنجا ذخیره می کنیم. اما ما نمی توانیم از یک نوشتن اضافی برای هر پارتیشن در معامله جلوگیری کنیم.
  3. سرانجام ، ما تغییرات حالت را در گزارش معامله می نویسیم. این شامل نوشتن برای هر دسته از پارتیشن های اضافه شده به معامله ، حالت "آماده_ commit" و حالت "کامل_ commit" است.

همانطور که می بینیم سربار مستقل از تعداد پیام های نوشته شده به عنوان بخشی از معامله است. بنابراین کلید داشتن توان بالاتر شامل تعداد بیشتری از پیام ها در هر معامله است.

در عمل ، برای یک تولید کننده که سوابق 1KB را در حداکثر توان تولید می کند ، هر 100ms تعهد پیام ها فقط منجر به تخریب 3 ٪ در توان می شود. پیام های کوچکتر یا فواصل ارتکاب معامله کوتاه تر منجر به تخریب شدیدتر می شوند.

تجارت اصلی هنگام افزایش مدت زمان معامله این است که تأخیر پایان به پایان را افزایش می دهد. به یاد بیاورید که پیام های معاملاتی در حال خواندن مصرف کننده پیام هایی را که بخشی از معاملات باز هستند ، ارائه نمی دهد. بنابراین هرچه فاصله بین تعهدات طولانی تر باشد ، برنامه های مصرف کننده طولانی تر باید منتظر بمانند و تأخیر پایان به پایان را افزایش دهند.

عملکرد مصرف کننده معامله ای

مصرف کننده معامله بسیار ساده تر از تولید کننده است ، زیرا تمام کاری که باید انجام دهد این است:

  1. پیام های متعلق به معاملات سقط جنین را فیلتر کنید.
  2. پیام های معامله ای را که بخشی از معاملات باز هستند ، باز نمی گردانند.

به این ترتیب ، مصرف کننده تراکنش هنگام خواندن پیام های معامله ای در حالت read_commisted هیچ تخریب در توان نشان نمی دهد. دلیل اصلی این امر این است که ما هنگام خواندن پیام های معامله ای ، خواندن کپی صفر را حفظ می کنیم.

علاوه بر این ، مصرف کننده برای انتظار برای انجام معاملات نیازی به بافر ندارد. در عوض ، کارگزار اجازه نمی دهد تا به جبران هایی که شامل معاملات باز است ، پیش برود.

بنابراین مصرف کننده بسیار سبک و کارآمد است. خواننده علاقه مند ممکن است در مورد جزئیات طراحی مصرف کننده در این سند اطلاعات کسب کند.

بیشتر خواندن

ما به تازگی سطح معاملات را در Apache Kafka خراشیده ایم. خوشبختانه ، تقریباً تمام جزئیات طراحی به صورت آنلاین ثبت شده است. اسناد مربوطه عبارتند از:

  1. : این جزئیات خوب در مورد جریان داده ها و نمای کلی از رابط های عمومی ، به ویژه گزینه های پیکربندی که همراه با معاملات است ، ارائه می دهد.: نه برای ضعف قلب ، این مکان قطعی است - در کنار کد منبع! - برای یادگیری نحوه پردازش هر RPC معامله ای ، نحوه حفظ گزارش معامله ، نحوه پاکسازی داده های معامله ای و غیره: این یک است. مکان عالی برای یادگیری در مورد نحوه استفاده از API های جدید. مثال در ابتدای صفحه و همچنین مستندات روش ارسال نقاط شروع خوبی است.: قسمت 1 این مجموعه وبلاگ.: قسمت 3 از این سریال نهایی وبلاگ.

نتیجه

در این پست ، ما در مورد اهداف اصلی طراحی برای API های معامله در Apache Kafka مطلع شدیم ، معنایی API معامله را درک کردیم و ایده ای سطح بالایی از نحوه عملکرد API ها کسب کردیم.

اگر یک چرخه Write-Write Read را در نظر بگیریم ، این پست عمدتاً مسیرهای خواندن و نوشتن را پوشش می دهد ، که خود پردازش یک جعبه سیاه است. حقیقت این است که کارهای زیادی در مرحله پردازش وجود دارد که پردازش دقیقاً یکپارچه را برای تضمین استفاده از API های معامله غیرممکن می کند. به عنوان مثال ، اگر پردازش عوارض جانبی در سایر سیستم های ذخیره سازی داشته باشد ، API های تحت پوشش در اینجا برای تضمین پردازش دقیق یکپارچه کافی نیستند.

چارچوب Kafka Streams از API های معامله ای که در اینجا شرح داده شده است برای بالا بردن زنجیره ارزش و ارائه پردازش دقیقاً یکپارچه برای طیف گسترده ای از برنامه های پردازش جریان ، حتی مواردی که برخی از فروشگاه های اضافی اضافی را در طول پردازش به روز می کنند ، استفاده می کند. پست وبلاگ را بخوانید که دقیقاً یکپارچه در Kafka Streams ، قسمت سوم این سری ، برای یادگیری چگونگی ارائه جریان های Kafka دقیقاً معانی پردازش یکپارچه را بر اساس معاملات جدید Kafka و همچنین نحوه نوشتن برنامه های کاربردی با جریان های Kafka ارائه دهید ، کهاز آنها استفاده کنید.

اگر می خواهید عملکرد جدید دقیقاً یک بار را برای استفاده عملی قرار دهید ، امروز Clobuent Cloud را بررسی کنید تا برنامه های خود را ایجاد کنید که جریان رویدادها را با مشتریان Kafka به زبان برنامه نویسی مورد علاقه خود ، از جمله جاوا ، GO ، Python ، . NET و پردازش می کند. C/C ++. برای دریافت 60 دلار از استفاده رایگان اضافی از کد تبلیغی CL60Blog استفاده کنید.* با داشتن یک مدل قیمت گذاری مقیاس به صفر ، کم هزینه ، فقط برای هر چیزی که شما به شما وارد می شود ، ابر تلاقی برای شروع کار با کافکا به درستی برای اجرای بزرگترین استقرار خود مناسب است.

فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید

برچسب : نویسنده : احمد قانع پور بازدید : 34 تاريخ : شنبه 31 تير 1402 ساعت: :