سیستم پیام رسان جاوا (JMS) چیست؟

سیستم پیام رسان جاوا (JMS) : روال اصلی در یک کارگزار پیام مثل JMS  و همانند محصول ActiveMQ فراهم نمودن زیر ساخت لازم برای ارتباط با نرم افزار ایستگاه کاری می باشد. برای مثال connectors ، یک مکانیزم ارتباطی هستند که به وسیله آن  فراهم کننده ارتباط  ایستگاه کاری –به واسط  و  واسط – به واسط ارتباط برقرار می نمایند . ActiveMQ به نرم افزارهای ایستگاه کاری اجازه ارتباط بوسیله پروتکل های مختلف را می دهد. همچنین کانال ارتباطی واسط – به واسط یک شبکه ارتباطی را برای واسط ها فراهم می آورد. JMS یک واسط برنامه کاربردی پیام می باشد. در ادامه بخش های اصلی JMS شرح داده شده است.

JMS سیستم پیام رسان جاوا
سیستم پیام رسان جاوا (JMS)

JMS Domain :

  • Point to Point Messaging: در این حالت یک صف برای انتقال پیام وجود دارد و هر پیام به یک مشتری داده می شود. پیام ها می توانند به صورت همگام و یا غیرهمگام ارسال شوند.
  • Publish/Subscribe Messaging: در این حالت مقصد پیام ها topic نامیده می شود و هر پیام به تمام subscriberها فرستاده می شود. یک topic پیام ها را نگه نمی دارد مگر اینکه durable subscription باشد که در این حالت اگر یک subscriber متصل نباشد پیام برای آن نگهداری می شود. Subscribeها می توانند به صورت همگام و یا غیرهمگام پیام ها را دریافت کنند.
Topic JMS
Topic در سیستم پیام رسان جاوا (JMS)

JMS Administered Objects:

  • Connection Factory: برای ایجاد ارتباط با JMS Provider می باشد. ارتباطات نشاندهنده یک TCP Socket باز بین مشتری ها و فراهم کننده هستند. از یک connection برای ایجاد Session که نشان دهنده تعامل بین فراهم کننده JMS و مشتری است استفاده می شود.
  • Destination: مقصد توسط session ایجاد می شود و مشخص کننده آدرس فراهم کننده JMS برای ارسال و دریافت پیام می باشد.

بخش هایی که همروندی را پشتیبانی می کند: ConnectionFactory, Connection, Destination

بخش هایی که همروندی را پشتیبانی نمی کند:  Message Producer and Concumer, Session

Connector: مکانیسم اتصال برای ارتباط کارگزار- مشتری و همچنین کارگزار-کارگزار

Connector Uri: به صورت  tcp://ip:port?options

Transport Connectors: به منظور ایجاد ارتباط می باشد و شامل یک نام و ConnectorUri می باشد. پروتکلهای مورد استفاده برای برقرای ارتباط :

  • TCP: بسیار کارا می باشد زیرا از پروتکل OpenWire Marshaling برای تبدیل پیام ها به جریانی از بایت ها و بالعکس استفاده می کند.
  • NIO: تعداد ریسمان های آن به ازای هر مشتری کمتر از TCP بوده و هنگامی که تعداد مشتری ها و ترافیک شبکه زیاد باشد مناسب است.
  • UDP: دارای قابلیت اطمینان کمتر ولی سرعت بالاتر می باشد.
  • SSL: برای ارسال داده های رمزگذاری شده بر روی TCP استفاده می شود.
  • HTTP/S: جایی که firewall وجود دارد می توان از این پروتکل استفاده کرد.
  • VM: هنگامی که مشتری و کارگزار بر روی یک JVM اجرا می شوند.

 

سیستم پیام رسان جاوا (JMS)
سیستم پیام رسان جاوا (JMS)

Network Connectors: برای ایجاد شبکه ای از کارگزارها.

Discovery Agent: یک عامل هوشمند برای شناسایی کارگزارها در یک شبکه می باشد.

تعدادی از پروتکل های اتصال:

  • Static protocol: به وسیله این پروتکل چندین کارگزار به صورت استاتیک مشخص می شوند در این حالت پیام ها به کارگزارهای مختلف فرستاده می شود. (static:(uri1,uri2,…)?options)
  • Failover protocol: در صورتی که کارگزار در دسترس نباشد و یا نتواند متصل شود مجددا تلاش می کند تا به آن کارگزار و یا کارگزار دیگری در صورت وجود متصل شود. دارای یک منطق اتصال مجدد می باشد که از یک مقدار اولیه به عنوان زمان انتظار برای برقراری اتصال مجدد شروع شده و زمان آن به صورت نمایی افزایش می یابد.
  • Multicast protocol: به صورت پویا و بر اساس بازه IP کارگزارها را پیدا کرده و شبکه ای از آنها ایجاد می کند.
  • Discovery protocol: شبیه Failover است ولی از Multicast برای یافتن کارگزارها استفاده می کند.
  • Peer Protocol: روش ساده ای برای ایجاد شبکه ای از کارگزارهای تعبیه شده است.

ماندگاری پیام ها(JMS messages)

 پیام ها در یک سیستم jms می توانند ماندگار، غیرماندگار و یا کش شده در حافظه باشند. در ادامه پیام های ماندگار مورد بررسی قرار گرفته است.

پیام های ماندگار سیستم پیام رسان جاوا (JMS)

پیام های ماندگار می توانند به  دو صورت رسیدگی شوند: 1. Queue 2. Topic

  1. Queue: پیام ها به صورت FIFO ذخیره می شوند. یک پیام به یک مشتری از چند مشتری داده می شود و پس از دریافت تاییدیه (Acknowledge) حذف می شود.
JMS سیستم پیام رسان جاوا
queue یا صف در سیستم پیام رسان جاوا (JMS)
  1. Topic: در این حالت هر durable subscriber برای مشتری یک کپی از پیام را می گیرد. هر شی durable subscriber یک اشاره گر به پیام بعدی ذخیره شده دارد و آنرا به مشتری مربوطه می دهد.
JMS سیستم پیام رسان جاوا
topic یا موضوع در سیستم پیام رسان جاوا (JMS)

در سیستم پیام رسان جاوا (JMS) هر پیاده سازی ذخیره سازی پیام از یک شی persistence adaptor برای دسترسی استفاده می کند. Persistence adaptor معمولا از یک Persistence adaptor factory مقداردهی اولیه می شود. ذخیره گاه پیام پیش فرض در ActiveMQ، AMQ message store می باشد که یک ذخیره گاه تراکنشی برمبنای فایل و تعبیه شده است.

نحوه کارکرد AMQ message store: شامل یک ژورنال تراکنشی سریع در کنار اندیس id پیام ها به صورت بهینه شده (که ارجاعی به داده های پیام در ژورنال می باشد.) و همچنین شامل پیام های کش شده در حافظه می باشند.

بخش های اصلی:

  • Journal: شامل یک rolling log از پیام ها و دستورات می باشد که در فایل های داده ای با اندازه ماکزیمم مشخص شده ذخیره شده است. تمام پیام ها در یک فایل داده دارای شمارش ارجاع می باشند تا در صورت عدم نیاز حذف شوند.
  • Cache: پیام ها در ژورنال نوشته می شوند و برای بازیابی سریع در حافظه نگهداری می شوند. کش در دوره های زمانی، ذخیره گاه ارجاعات را با شناسه و محل جاری پیام ها در ژورنال به روز می کند. پس از به روز رسانی ذخیره گاه ارجاعات پیام ها می توانند از کش حذف شوند. بازه زمانی با checkpoint interval قابل پیکربندی است.
  • Reference store: برای نگهداری ارجاعات به پیام ها در ژورنال که براساس شناسه پیام شاخص گذاری شده می باشد. ذخیره گاه ارجاعات ساختار FIFO برای صف ها و اشاره گرهای durable subscribers به پیام های Topic را نگه می دارد.

با شروع به کار کارگزار با AMQ message store ، یک سری پوشه ها برای ذخیره پیام ها در آن ایجاد می شود. این پوشه شامل زیرپوشه هایی برای تمام کارگزارهای در حال اجرا درسیستم است. در ادامه این بخش ها شرح داده  می شود:

  • Lock file: برای اطمینان از اینکه در یک زمان یک کارگزار به داده ها دسترسی داشته باشد استفاده می شود.
  • Temp storage: برای نگهداری پیام های غیرماندگار که دیگر در حافظه کارگزار ذخیره نیستند به کار می رود. در واقع پیام هایی که منتظر دریافت توسط یک مشتری کند می باشند.
  • Kr-store: این پوشه توسط ارجاعات مورد استفاده قرار می گیرد. از KahaDB برای شاخص گذاری و ذخیره ارجاعات به پیام ها در ژورنال استفاده می شود. این پوشه شامل یک پوشه data می باشد که حاوی اندیس ها و مجموعه ها برای ارجاع پیام های نگهداری شده در ژورنال است. برای انجام عمل recovery این پوشه حذف و مجددا ساخته می شود. اگر کارگزار درست shutdown نشود با حذف دستی این پوشه می توان این کار را انجام داد.
  • پوشه ژورنال: شامل فایل های داده برای ژورنال و یک فایل کنترل داده برای ابرداده ها می باشد.
  • پوشه آرشیو: در صورتی که آرشیو فعال باشد فایل های داده به جای حذف شدن از ژورنال به این پوشه منتقل می شوند. با انتقال فایل های آرشیو به محل ژورنال و شروع به کار کارگزار این داده ها می توانند مجددا استفاده شوند.

در این قسمت ، ما این ارتباطات و مفاهیم آنها را توضیح خواهیم داد .

Connector URIs: آدرس ارتباط با واسط می باشد

Transport connectors: این پارامتر تنظیمات   انتشار واسط  برای ایستگاه های کاری را انجام می دهد.

Network connectors: ایجاد شبکه  واسط ها

Discovery Agents: این پارامتر به ما اجازه یافتن واسطه ها  در یک کلاستر را می دهد.

آدرس کانال تلگرام ما:

t.me/bigdata_channel
برای ورود به کانال بر روی اینجا کلیک کنید.

Visits: 3012

یک دیدگاه

  1. سلام
    ببخشید کامل این مقاله رو ازتون بگیرم؟

دیدگاهتان را بنویسید