فراتر از Kafka: معماری و مقیاسپذیری واقعی با Pulsar
سالهاست در حوزه زیرساخت و مهندسی داده با سامانههای پیامرسانی مختلف مثل Kafka, NATS و RabbitMQ کار کردهام. بارها نام Apache Pulsar را شنیده بودم، حتی از حدود ده سال پیش، اما چون ابزارهای فعلی نیازهای ما را پوشش میدادند، سمتش نرفتم.
برای دوره Kafka در مدرسه مهندسی داده سپهرام فرصتی شد تا مستندات Pulsar را دقیق مطالعه و محیط آن را عملی بالا بیاورم و چندین مثال واقعی اجرا کنم. واقعاً باید به دوراندیشی و معماری فوقالعاده تیم یاهو برای رفع ضعفهای Kafka تحسین گفت: پایداری، چابکی، مقیاسپذیری، چنداجارهای واقعی و مدیریت عملیاتی سادهتر.
اگر شما هم در سازمان متوسط یا بزرگی Kafka استفاده میکنید، پیشنهاد میکنم Pulsar را جدی بررسی کنید؛ پروژهای قدیمی، battle-tested و محبوب در شرکتهای بزرگ دنیا.
چند قابلیت کلیدی Pulsar:
✔️ مدل پردازش جریان و پیامرسانی: هم Streaming مشابه Kafka و هم Messaging شبیه RabbitMQ، برای مدیریت دادههای جریان بالا و پردازش رویداد محور.
✔️ جداسازی Compute از Storage (Apache BookKeeper): پولسار معماری خود را به گونهای طراحی کرده که بخش پردازش پیامها (Brokers) و ذخیرهسازی دادهها (Bookies) کاملاً جدا هستند. این جداسازی باعث میشود مقیاسپذیری بسیار سادهتر باشد، میتوان به راحتی بروکرها یا بوکیها را بدون تأثیر روی هم افزایش یا کاهش داد، و کنترل کلاستر و مدیریت منابع در بارهای سنگین بسیار مؤثرتر شود. این معماری همچنین به پایداری و تحمل خطای بالاتر در سازمانهای بزرگ کمک میکند.
✔️ چنداجارهای و تعریف Workspace: ایجاد tenant و namespace برای تیمها، با میلیونها topic و مدیریت ساده سرویسهای اشتراکی
✔️ مقیاسپذیری و Elasticity دینامیک: مصرف منابع متناسب با بار، افزودن consumer و افزایش throughput بدون توقف سیستم.
✔️ مدلهای متنوع مصرف پیام: Shared، Key_Shared، Exclusive و Failover برای سناریوهای پیچیده در مقابل مدل ساده Consumer Group کافکا.
✔️ تکرار جغرافیایی (Geo-Replication): همگامسازی پیامها بین چند کلاستر بدون پیچیدگی بدون نیاز به Mirror-Maker یا ابزارهای دیگر .
✔️ مدیریت اسکیما و پردازش سبک: Schema Registry داخلی و Pulsar Functions برای پردازشهای سبک روی پیامها
✔️ هماهنگی با پروتکلها و سیستمهای موجود: KoP برای کافکا یعنی میتوانید همان تجربه کافکا را برای سرویسهای فعلی با پولسار هم فراهم کنید، Starlight برای RabbitMQ و پشتیبانی از MQTT و AMQP.
✔️ امکان Offloading به Cloud Storage: انتقال Ledgerها به S3 یا سایر سرویسهای ابری، کاهش هزینه و نگهداری آسان.
✔️ تحلیل داده: Pulsar SQL و Trino Integration برای اجرای کوئری و تحلیل بدون استخراج داده.
✔️ ابزارهای مدیریت و پایش: Pulsar Manager، مانیتورینگ، delayed messages و dead-letter queues.
و نکتهٔ تکمیلی: Pulsar توسط شرکتهای بزرگی مثل Tencent, Verizon Media, Splunk, Comcast, Yahoo/Japan, Overstock, Nutanix و بسیاری دیگر استفاده میشود. پروژه کاملاً فعال است، با صدها مشارکتکننده، هزاران ستاره در GitHub و اکوسیستمی بالغ و قابل اتکا برای سازمانهای بزرگ.
اگر سازمان شما هم در سطح متوسط یا بزرگ از Kafka استفاده میکند، ارزش دارد Pulsar را بهعنوان گزینهٔ بعدی یا مکمل جدی بررسی کنید.
سالهاست در حوزه زیرساخت و مهندسی داده با سامانههای پیامرسانی مختلف مثل Kafka, NATS و RabbitMQ کار کردهام. بارها نام Apache Pulsar را شنیده بودم، حتی از حدود ده سال پیش، اما چون ابزارهای فعلی نیازهای ما را پوشش میدادند، سمتش نرفتم.
برای دوره Kafka در مدرسه مهندسی داده سپهرام فرصتی شد تا مستندات Pulsar را دقیق مطالعه و محیط آن را عملی بالا بیاورم و چندین مثال واقعی اجرا کنم. واقعاً باید به دوراندیشی و معماری فوقالعاده تیم یاهو برای رفع ضعفهای Kafka تحسین گفت: پایداری، چابکی، مقیاسپذیری، چنداجارهای واقعی و مدیریت عملیاتی سادهتر.
اگر شما هم در سازمان متوسط یا بزرگی Kafka استفاده میکنید، پیشنهاد میکنم Pulsar را جدی بررسی کنید؛ پروژهای قدیمی، battle-tested و محبوب در شرکتهای بزرگ دنیا.
چند قابلیت کلیدی Pulsar:
✔️ مدل پردازش جریان و پیامرسانی: هم Streaming مشابه Kafka و هم Messaging شبیه RabbitMQ، برای مدیریت دادههای جریان بالا و پردازش رویداد محور.
✔️ جداسازی Compute از Storage (Apache BookKeeper): پولسار معماری خود را به گونهای طراحی کرده که بخش پردازش پیامها (Brokers) و ذخیرهسازی دادهها (Bookies) کاملاً جدا هستند. این جداسازی باعث میشود مقیاسپذیری بسیار سادهتر باشد، میتوان به راحتی بروکرها یا بوکیها را بدون تأثیر روی هم افزایش یا کاهش داد، و کنترل کلاستر و مدیریت منابع در بارهای سنگین بسیار مؤثرتر شود. این معماری همچنین به پایداری و تحمل خطای بالاتر در سازمانهای بزرگ کمک میکند.
✔️ چنداجارهای و تعریف Workspace: ایجاد tenant و namespace برای تیمها، با میلیونها topic و مدیریت ساده سرویسهای اشتراکی
✔️ مقیاسپذیری و Elasticity دینامیک: مصرف منابع متناسب با بار، افزودن consumer و افزایش throughput بدون توقف سیستم.
✔️ مدلهای متنوع مصرف پیام: Shared، Key_Shared، Exclusive و Failover برای سناریوهای پیچیده در مقابل مدل ساده Consumer Group کافکا.
✔️ تکرار جغرافیایی (Geo-Replication): همگامسازی پیامها بین چند کلاستر بدون پیچیدگی بدون نیاز به Mirror-Maker یا ابزارهای دیگر .
✔️ مدیریت اسکیما و پردازش سبک: Schema Registry داخلی و Pulsar Functions برای پردازشهای سبک روی پیامها
✔️ هماهنگی با پروتکلها و سیستمهای موجود: KoP برای کافکا یعنی میتوانید همان تجربه کافکا را برای سرویسهای فعلی با پولسار هم فراهم کنید، Starlight برای RabbitMQ و پشتیبانی از MQTT و AMQP.
✔️ امکان Offloading به Cloud Storage: انتقال Ledgerها به S3 یا سایر سرویسهای ابری، کاهش هزینه و نگهداری آسان.
✔️ تحلیل داده: Pulsar SQL و Trino Integration برای اجرای کوئری و تحلیل بدون استخراج داده.
✔️ ابزارهای مدیریت و پایش: Pulsar Manager، مانیتورینگ، delayed messages و dead-letter queues.
و نکتهٔ تکمیلی: Pulsar توسط شرکتهای بزرگی مثل Tencent, Verizon Media, Splunk, Comcast, Yahoo/Japan, Overstock, Nutanix و بسیاری دیگر استفاده میشود. پروژه کاملاً فعال است، با صدها مشارکتکننده، هزاران ستاره در GitHub و اکوسیستمی بالغ و قابل اتکا برای سازمانهای بزرگ.
اگر سازمان شما هم در سطح متوسط یا بزرگ از Kafka استفاده میکند، ارزش دارد Pulsar را بهعنوان گزینهٔ بعدی یا مکمل جدی بررسی کنید.
👍4
Forwarded from مدرسه مهندسی داده سپهرام
معرفی یکی از پروژههای عملی دوره مهندسی داده سپهرام
در مدرسه مهندسی داده سپهرام همیشه تلاشمان این بوده که یادگیری فقط محدود به مفاهیم تئوری نباشد؛ بلکه هر آنچه آموزش داده میشود، در قالب پروژههای واقعی و قابلاجرا به مهارت عملی تبدیل شود.
امروز خوشحالیم یکی از پروژههای ارزشمند خروجی دوره مبانی مهندسی داده را معرفی کنیم؛ پروژهای که توسط محمد ابراهیمی عزیز توسعه داده شده و در ریپوی زیر قابل مشاهده است:
🔗 https://github.com/MohamadDesign/basic_dataengineer
🔍 این پروژه چیست و چه کاری انجام میدهد؟
این ریپو یک نمونهی کاملاً عملی از ساخت یک پایپلاین داده کامل از مبدا دادهها تا بصریسازی و گزارشات (End-to-End Data Pipeline) است که مخاطب دوره را با مفاهیم بنیادین مهندسی داده بهصورت کاربردی آشنا میکند. هنرجو در این پروژه تجربه میکند که داده چگونه تولید، منتقل، پردازش و در نهایت تحلیل میشود؛ فرآیندی که در مهندسی داده واقعی هر روز اتفاق میافتد.
🏗 معماری پروژه و جریان داده
معماری این پروژه به شکلی ساده اما کاملاً کاربردی طراحی شده است و با استفاده از Docker Compose اجرا میشود تا علاقهمندان بتوانند با کمترین پیچیدگی، یک معماری واقعی مهندسی داده را بالا بیاورند.
جریان داده در این پروژه به شکل زیر است:
1) تولید داده کاربران
- دادههای تصادفی شامل نام، کشور و زمان ثبتنام تولید میشوند.
- این دادهها ابتدا در PostgreSQL ذخیره میشوند.
- این مرحله معمولاً از طریق یک DAG در Apache Airflow یا یک اسکریپت پایتون مدیریت میشود.
2) انتقال داده به Kafka
- یک DAG دیگر در Airflow دادهها را از Postgres خوانده و به یک Topic در Apache Kafka ارسال میکند.
- کافکا در این معماری نقش Message Broker را ایفا میکند و امکان انتقال صفی و استریمی دادهها را فراهم میسازد.
3) پردازش و ذخیرهسازی نهایی
- دادهها از Kafka توسط یک ابزار پردازشی مثل Logstash خوانده میشوند.
- پس از اعمال پردازشهای لازم (فیلتر، پاکسازی، تبدیل ساختار)، دادهها به Elasticsearch ارسال میشوند.
4) بصریسازی و تحلیل
- دادههای ذخیرهشده در Elasticsearch در Kibana ویژوالایز میشوند.
- داشبوردهایی مانند توزیع کاربران، روند ثبتنام، و تحلیلهای زمانی در این بخش قابل ساخت هستند.
در یک نگاه کلی، هنرجو با چرخه واقعی یک Data Pipeline شامل Extract → Transform → Load → Analyze آشنا میشود؛ چرخهای که هستهی اصلی مهندسی داده در صنعت است.
✨ سخن پایانی
دیدن چنین پروژههایی از سمت هنرجویان، برای ما در سپهرام بسیار ارزشمند است؛ چون نشان میدهد مسیر آموزش دقیقاً با نیازهای روز صنعت مهندسی داده همسو شده و خروجیها به مهارت واقعی منجر شدهاند.
برای محمد ابراهیمی عزیز آرزوی موفقیت داریم و امیدواریم این پروژهها الهامبخش قدمهای بعدی علاقهمندان به دنیای داده باشد. 🚀
در مدرسه مهندسی داده سپهرام همیشه تلاشمان این بوده که یادگیری فقط محدود به مفاهیم تئوری نباشد؛ بلکه هر آنچه آموزش داده میشود، در قالب پروژههای واقعی و قابلاجرا به مهارت عملی تبدیل شود.
امروز خوشحالیم یکی از پروژههای ارزشمند خروجی دوره مبانی مهندسی داده را معرفی کنیم؛ پروژهای که توسط محمد ابراهیمی عزیز توسعه داده شده و در ریپوی زیر قابل مشاهده است:
🔗 https://github.com/MohamadDesign/basic_dataengineer
🔍 این پروژه چیست و چه کاری انجام میدهد؟
این ریپو یک نمونهی کاملاً عملی از ساخت یک پایپلاین داده کامل از مبدا دادهها تا بصریسازی و گزارشات (End-to-End Data Pipeline) است که مخاطب دوره را با مفاهیم بنیادین مهندسی داده بهصورت کاربردی آشنا میکند. هنرجو در این پروژه تجربه میکند که داده چگونه تولید، منتقل، پردازش و در نهایت تحلیل میشود؛ فرآیندی که در مهندسی داده واقعی هر روز اتفاق میافتد.
🏗 معماری پروژه و جریان داده
معماری این پروژه به شکلی ساده اما کاملاً کاربردی طراحی شده است و با استفاده از Docker Compose اجرا میشود تا علاقهمندان بتوانند با کمترین پیچیدگی، یک معماری واقعی مهندسی داده را بالا بیاورند.
جریان داده در این پروژه به شکل زیر است:
1) تولید داده کاربران
- دادههای تصادفی شامل نام، کشور و زمان ثبتنام تولید میشوند.
- این دادهها ابتدا در PostgreSQL ذخیره میشوند.
- این مرحله معمولاً از طریق یک DAG در Apache Airflow یا یک اسکریپت پایتون مدیریت میشود.
2) انتقال داده به Kafka
- یک DAG دیگر در Airflow دادهها را از Postgres خوانده و به یک Topic در Apache Kafka ارسال میکند.
- کافکا در این معماری نقش Message Broker را ایفا میکند و امکان انتقال صفی و استریمی دادهها را فراهم میسازد.
3) پردازش و ذخیرهسازی نهایی
- دادهها از Kafka توسط یک ابزار پردازشی مثل Logstash خوانده میشوند.
- پس از اعمال پردازشهای لازم (فیلتر، پاکسازی، تبدیل ساختار)، دادهها به Elasticsearch ارسال میشوند.
4) بصریسازی و تحلیل
- دادههای ذخیرهشده در Elasticsearch در Kibana ویژوالایز میشوند.
- داشبوردهایی مانند توزیع کاربران، روند ثبتنام، و تحلیلهای زمانی در این بخش قابل ساخت هستند.
در یک نگاه کلی، هنرجو با چرخه واقعی یک Data Pipeline شامل Extract → Transform → Load → Analyze آشنا میشود؛ چرخهای که هستهی اصلی مهندسی داده در صنعت است.
✨ سخن پایانی
دیدن چنین پروژههایی از سمت هنرجویان، برای ما در سپهرام بسیار ارزشمند است؛ چون نشان میدهد مسیر آموزش دقیقاً با نیازهای روز صنعت مهندسی داده همسو شده و خروجیها به مهارت واقعی منجر شدهاند.
برای محمد ابراهیمی عزیز آرزوی موفقیت داریم و امیدواریم این پروژهها الهامبخش قدمهای بعدی علاقهمندان به دنیای داده باشد. 🚀
GitHub
GitHub - MohamadDesign/basic_dataengineer: this project coded for sepahram data engineer school
this project coded for sepahram data engineer school - MohamadDesign/basic_dataengineer
👍4
Forwarded from مدرسه مهندسی داده سپهرام
Media is too big
VIEW IN TELEGRAM
توضیح پروژه فوق توسط محمد ابراهیمی عزیز .
👍3