نکاتی درباره Kafka در ارتباط با Heroku که نمی توانید از دستشان دهید

عکس پروفایل نویسنده

@MichaelBمایکل

من Dev Spotlight را اجرا می کنم – ما محتوای فناوری را برای شرکت های فناوری می نویسیم. ایمیل به [email protected]

مقدمه

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

Kafka Connect یک راه حل درجه یک برای ادغام مجموعه ای از برنامه ها است ، از پایگاه های داده سنتی گرفته تا برنامه های تجاری مانند Salesforce و SAP. سناریوهای احتمالی مختلف از جریان مداوم رویدادها و داده ها بین برنامه ها تا کارهای دسته ای در مقیاس بزرگ و قابل تنظیم است که می تواند برای جایگزینی انتقال داده های دستی استفاده شود.

چرا کافکا و هروکو

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

قدرت کافکا بهای تمام شده ای دارد: گرچه استفاده از کافکا از دید مشتری آسان است ، راه اندازی و راه اندازی کافکا کار دشواری است. راه اندازی یک خوشه قابل اعتماد کافکا چالشی است که نیاز به تجربه دارد. اگر شرکت شما این تجربه را ندارد ، تنظیم و تنظیم دقیق یک خوشه آماده تولید ممکن است هفته ها ، حتی ماه ها به طول انجامد. این همان جایی است که Kafka on Heroku می درخشد: راه اندازی یک خوشه خصوصی Kafka به معنای واقعی کلمه چند دقیقه طول می کشد ، این امر باعث می شود که بخشهای IT به جای کار با خوشه Kafka بر روی خدماتی که می خواهند ارائه دهند تمرکز کند.

اضافه کردن Kafka Connect مرحله بعدی منطقی است ، هنگامی که از Kafka استفاده می کنید. اما Kafka Connect در Heroku یک صرفه جویی در وقت بسیار زیاد است ، حتی اگر قصد ندارید از Kafka مستقیماً از برنامه خود استفاده کنید. با سربار عملیاتی کم ، Kafka Connect یک نقطه ادغام را برای هر تعداد برنامه کاربردی فراهم می کند. Kafka Connect به جای اجرای و نگهداری راه حلهای مختلف برای انتقال داده های مکرر ، انتقال داده بر اساس تقاضا و به روزرسانی مداوم بین سیستم ها ، یک راه حل واحد برای این مشکلات ارائه می دهد.

در بخش بعدی با برخی موارد استفاده معمولی آشنا خواهید شد و همچنین خواهید فهمید که Kafka Connect با کدام برنامه ها می تواند ادغام شود.

موارد استفاده معمول از تجارت برای Kafka Connect

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

  • بخش فروش شما به طور منظم نیاز به به روزرسانی یک پایگاه داده داخلی SQL با داده های Salesforce دارد. برای انتقال مداوم تغییرات از Salesforce به پایگاه داده پیش فرض خود ، از Kafka Connect استفاده کنید.
  • بخش انطباق شما برای به روزرسانی برخی از پایگاه های داده یا برنامه های کاربردی ، به یک حسابرسی نیاز دارد. از Kafka Connect برای جریان مستقیم تغییرات مربوط به یک سرور پرونده موجود ، به S3 برای ذخیره سازی خارج از سایت یا حتی به Elasticsearch برای بازیابی سریع استفاده کنید.
  • مشاغل دسته ای غیر قابل اعتماد و کم سرعت ETL خود را با یک راه حل قوی جایگزین کنید. از Kafka Connect to استفاده کنید: داده ها را در چندین برنامه به روز کنید در حالی که آنها را سریع تر و قابل اطمینان تر می کنید. تغییرات مداوم را از پرونده های ساختار یافته (CSV ، JSON ، سیاهههای مربوط و غیره) به پایگاه داده و برنامه ها جریان دهید. به طور قابل اعتماد و به طور مداوم به روز رسانی بین برنامه های ناهمگن و پایگاه داده را جریان می دهد

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

لیست (ناقص) سیستم هایی که Kafka Connect می تواند ادغام شود

Kafka Connect می تواند تعداد روزافزونی از برنامه ها و خدمات از جمله برنامه های سازمانی مانند SAP و Salesforce را بخواند و برای آنها بنویسد:

  • هر پایگاه داده SQL: Oracle ، Microsoft SQL Server ، IBM Db2 ، MySQL ، PostgreSQL ، MariaDB و دیگران
  • پایگاه های داده NoSQL مانند MongoDB ، Redis ، Cassandra ، InfluxDB و دیگران
  • صف های پیام مانند ActiveMQ ، RabbitMQ ، IBM MQ ، Amazon SQS ، Azure Event Hub ، Google Pub / Sub و سایر موارد
  • برنامه های میز خدمات IT مانند Jira ، ServiceNow و Zendesk
  • ورود به سیستم و نظارت بر سرویس ها ، برنامه ها و پروتکل ها مانند SNMP ، Syslog ، Elasticsearch ، Amazon CloudWatch ، Appdynamics ، Metrics ، Splunk و سایر موارد
  • منابع و پروتکل های عمومی “سطح پایین” عمومی ، از جمله HTTP ، SFTP ، MQTT ، JMS ، سیستم فایل و سایر موارد
  • اتصالات سفارشی قوی را می توان با استفاده کامل از چارچوب قابل اعتماد Kafka Connect و زیرساخت های اساسی ، به راحتی با استفاده از جاوا نوشت
  • از آنجا که Kafka Connect از Kafka به عنوان زیرساخت زیربنایی استفاده می کند ، هر برنامه ای که از Kafka به عنوان گذرگاه پیام استفاده کند به طور خودکار برای ادغام در دسترس است

راه اندازی یکپارچه سازی Kafka Connect سریع و آسان است

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

  • هر زمان که جدول STATUS در پایگاه داده تحقق تغییر می کند
  • تغییرات جدول ORDER_STATUS را در پایگاه داده CRM بنویسید

برای سادگی ، فرض خواهیم کرد که هر دو پایگاه داده MySQL هستند. مراحل سایر اتصالات فقط با پیکربندی های متفاوت یکسان است.

برای تنظیم این ادغام دو مرحله طول می کشد ، با این فرض که شما یک خوشه Kafka با Kafka Connect کار می کنید:

  • “منبع اتصال” را برای خواندن داده ها از جدول پایگاه داده تحقق STATUS ایجاد کنید
  • برای نوشتن داده ها در جدول ORDER_STATUS پایگاه داده CRM ، “sink-connection” ایجاد کنید

در اینجا تماس های cURL مربوطه و توضیحی در مورد آنچه هرکدام از آنها انجام می دهند آورده شده است. آنها از Kafka Connect REST API برای ایجاد منبع و غرق شدن استفاده می کنند. توجه داشته باشید که این تماس ها مختص Heroku نیست. آنها با هر نصب Kafka Connect کار خواهند کرد:

1. ایجاد منبع اتصال.

curl -X POST http://localhost:8083/connectors -H "Content-Type: application/json" -d '{          
  
  "name": "jdbc_source_mysql_01",           
  
  "config": {                     
    "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
    "connection.url": "jdbc:mysql://fulfillmentdbhost:3306/fulfillmentdb",                  
    "connection.user": "fullfilment_user",  
    "connection.password": "",                     
    "topic.prefix": "order-status-update-",                     
    "mode":"timestamp",                     
    "table.whitelist" : "fulfullmentdb.status",                     
    "timestamp.column.name": "LAST_UPDATED",                     
    "validate.non.null": false            
  }   
}'

2. ایجاد سینک اتصال.

curl -X POST http://localhost:8083/connectors -H "Content-Type: application/json" -d '{ 
  "name": "jdbc_sink_mysql_01",
  "config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "connection.url": "jdbc:mysql://crmdbhost:3306/crmdb",
    "connection.user": "crm_user",
    "connection.password": "",
    "topics": "order-status-update-status",
    "table.name.format" : "crmdb.order_status"
  }
}'

و کار شما تمام شد! از این مرحله به بعد ، هر ورودی جدید در جدول STATUS پایگاه داده تحقق به طور خودکار در جدول ORDER_STATUS پایگاه داده CRM نوشته می شود. بیایید کمی در آنچه هر تماس انجام می دهد غوطه ور شویم.

تماس با شماره 1: اتصال منبع

اولین دستور cURL به Kafka Connect می گوید که از نوع خاصی از کانکتور منبع ، یعنی JdbcSourceConnector ، برای اتصال به پایگاه داده MySQL در کاملساز dbhost: 3306 / plotmentdb با استفاده از اعتبارنامه ارائه شده ، استفاده کند. همچنین این اتصال برای پیگیری جدول به نام “وضعیت” در آن پایگاه داده برای ورودی های جدید براساس زمان سنجی در ستون “LAST_UPDATED” پیکربندی شده است. در نتیجه ، هر زمان که یک سطر جدید روی جدول نوشته شود ، Kafka Connect به طور خودکار برای هر سطر جدید پیام جدیدی را در موضوع کافکا “سفارش-وضعیت-بروزرسانی-وضعیت” ارسال می کند.

بعد ، ما به یک کانکتور سینک نیاز داریم که این موضوع کافکا را برای تغییرات نظارت کند. این کاری است که تماس cURL دوم انجام می دهد.

تماس با شماره 2: اتصال سینک ظرفشویی

دستور cURL دوم یک کانکتور سینک (JdbcSinkConnector) ایجاد می کند که به پایگاه داده دیگری یعنی crmdbhost: 3306 / crmdb متصل می شود. این اتصال دهنده موضوع “ترتیب-وضعیت-بروزرسانی-وضعیت” را برای پیام های جدید رصد می کند و هر پیام جدیدی را در جدول “order_status” در پایگاه داده crmdb می نویسد.

این مثال از JdbcSourceConnector و JdbcSinkConnector برای اتصال دو پایگاه داده رابطه ای استفاده می کند. انواع دیگر اتصالات را می توان به همین ترتیب نصب و سپس استفاده کرد. هر رابط همراه با مستندات و مجموعه گزینه های خاص خود است. لیست غیررسمی اتصال دهنده های موجود با پیوند به مستندات آنها را می توان در وب سایت Confluent یافت.

بردن به مرحله بعدی

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

اما این همه اش نیست. پس از ایجاد اتصال منبع ، می توانید از همان منبع برای به روزرسانی چندین مقصد استفاده کنید (“غرق”). در مثال ما ، می توانید دستور سوم cURL را اجرا کنید تا تمام به روزرسانی های وضعیت سفارش را در پایگاه داده دیگری نیز بنویسید.

نتیجه

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

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

برچسب ها

با هکر نون همراه باشید

حساب رایگان خود را ایجاد کنید تا قفل تجربه خواندن سفارشی خود را باز کنید.