معماری kafka
در مقاله قبلی ، در مورد چیستی کافکا، مزایا، معایب و زمینه های استفاده آن صحبت کردیم. اکنون در مورد معماری و اجزای اساسی کافکا صحبت خواهیم کرد. در زیر یک نقشه کلی از معماری آورده شده است.
Broker
این اساسی ترین جزء سیستم های کافکا است. هر سرور/سرویسی که در کلاستر کافکا اجرا می شود، کارگزار–broker نامیده می شود. هر کارگزار-broker با یک شناسه متشکل از یک شماره شناسایی می شود. آنها به طور فیزیکی به سروری که روی آن نصب شده اند متصل هستند، اما یک کارگزار از تمام موضوعات و پارتیشن های کلاستر آگاه است، حتی اگر روی آن نباشد. کارگزاران brokers به عنوان نقاط اتصال هم برای تولیدکنندگان producers و هم برای مصرف کنندگان consumers عمل می کنند.
Zookeper
این یک سرویس منبع باز با قابلیت ذخیره سازی داده های توزیع شده با ارزش کلیدی است که در بسیاری از پروژه های منبع باز، به ویژه پروژه های کلان داده استفاده می شود. Zookeper برای کافکا;
افزودن و حذف کارگزاران به کلاستر، تعیین کارگزار رهبر/کنترل کننده، حفظ تنظیمات موضوع و غیره. مسئول مسائل مدیریت خوشه.
امروزه کافکا به استفاده از zookeeper در نسخه های جدید خود پایان داده است. اما در سیستم هایی که در حال حاضر از آن استفاده می کنند نیز موجود است.
Topic
این ساختاری شبیه به صفهای موجود در پایگاههای اطلاعاتی کافکا یا صفهای پیام است که به محض نوشتن دادهها برای همه کارگزاران brokers قابل دسترسی است. آنها توسط کاربر نامگذاری می شوند. ممکن است هزاران topic در یک کلاستر کافکا وجود داشته باشد.
Partition
موضوعات topics به پارتیشن تقسیم می شوند. پارتیشن ها از 0 شروع می شوند و به تعداد فزاینده ادامه می یابند. در تاپیک می توان یک پارتیشن ایجاد کرد یا بسته به سناریو هزار پارتیشن ایجاد کرد. هنگامی که داده در یک پارتیشن نوشته می شود، نمی توان آن را دوباره تغییر داد.
پارتیشن ها در درون خود متوالی هستند. با این حال، هیچ ترتیبی بین پارتیشن ها وجود ندارد. به عنوان مثال، 2 پارتیشن وجود دارد:
partition0 و partition1. ابتدا message0 در partition0 نوشته شد، سپس message1 در partition1 و سپس message2 در partition0 نوشته شد. در این سناریو، message0 همیشه قبل از message2 خوانده می شود. با این حال، کافکا تضمین نمی کند که message1 قبل یا بعد از message0 خوانده شود. اگر برایتان مهم نیست که پیام هایی که تولید می کنید به کدام ترتیب خوانده می شوند، می توانید پیام ها را با کلیدهای مختلف تولید کنید. با این حال، اگر برای شما مهم است که 2 یا چند پیام به ترتیب خاص خود داشته باشید، باید این پیام ها را با همان کلید تولید کنید. زیرا کافکا پیام های تولید شده را با همان کلید روی همان پارتیشن می نویسد تا ترتیب رعایت شود. با این حال، اگر سفارش برای شما مهم نیست، ارسال همه پیام ها با یک کلید یک نقطه ضعف خواهد داشت. زیرا کافکا همه اینها را در یک پارتیشن می نویسد و بار توزیع نمی شود.
Replication
یکی از مزایای سیستم های توزیع شده این است که سیستم را می توان حتی در صورت آفلاین بودن یکی از سرورها حفظ کرد. به لطف کپی های موجود در کافکا، سیستم ادامه می یابد و از دست دادن داده ها جلوگیری می شود. با تکرار، هر پارتیشن از موضوعات در بیش از یک سرور ذخیره می شود. یکی از این سرورها لیدر است، بقیه کپی هایی به نام ISR (در همگام سازی replica) هستند. ISR ها سرورهای غیرفعالی هستند که داده ها را همگام می کنند و کپی آن را نگه می دارند. تبادل اطلاعات از طریق لیدر انجام می شود. لیدر و ISR توسط zookeeper تعیین می شود. هنگام ایجاد topic، تکرارها با پارامتر replication-factor مشخص می شوند. اگر سروری که رهبر در آن قرار دارد خراب شود،zookeeper یکی از ISR ها را به عنوان رهبر تعیین می کند و سیستم بدون هیچ وقفه ای ادامه می دهد.
Offset
آفست ها مختص پارتیشن هستند و زمانی که داده ها روی هر پارتیشن نوشته می شود یک شماره هویت اختصاص می یابد. به این ترتیب داده ها به ترتیبی که در پارتیشن نوشته می شوند خوانده می شوند و مصرف کنندگان می توانند هنگام خواندن در یک پارتیشن به یاد بیاورند که در کدام پیام قرار دارند. عدد افست از 0 شروع می شود و می تواند برای همیشه ادامه یابد، هر بار که یک پیام نوشته می شود، عدد بعدی به پیام جدید اختصاص می یابد. پیام های کافکا پس از خواندن ناپدید نمی شوند. در طول زمان نگهداری داده شده همچنان حفظ می شود. پس از خواندن یک پیام توسط مصرف کننده، افست با یک پیشرفت می کند و از پیام بعدی ادامه می یابد. از آنجایی که برای مدت زمان معینی نگه داشته می شود، اگر می خواهید پیام خوانده شده قبلی را دوباره بخوانید، فرآیند خواندن را می توان با تنظیم مجدد افست تکرار کرد.
منبع : https://medium.com/@cobch7/what-is-kafka-9cc8591d2063
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.