Орчин үед системүүд улам нарийн төвөгтэй, хурдан өөрчлөгддөг, өргөтгөх шаардлагатай болж байна. Ийм үед уламжлалт хүсэлт-хариулт (REST) загвар заримдаа хангалтгүй болдог.

Үзэгдлээр хөтлүүлсэн архитектур буюу Event-Driven Architecture (EDA) нь системийн бүрэлдэхүүн хэсгүүдийг шууд хүсэлт-хариултын аргаар бус, харин үзэгдэл үүсгэх, түгээх, хүлээн авах, боловсруулах зарчмаар холбодог архитектурын хэв маяг юм. EDA нь жижиг, сул хамааралтай үйлчилгээүүдээс бүрдэж, эдгээр нь үзэгдлийг нийтлэх, дамжуулах, эсвэл хэрэглэж боловсруулах байдлаар харилцдаг. Ийм хандлага нь продюсер ба консюмерыг хооронд нь шууд хамааралгүй болгож, системийг бие даан өргөтгөх, шинэчлэх, байрлуулах боломжийг нэмэгдүүлдэг.

Үзэгдэл гэж юу вэ?

EDA-ийн хамгийн суурь ойлголт бол үзэгдэл буюу үзэгдэл юм. Үзэгдэл гэдэг нь систем дотор эсвэл бизнесийн орчинд ямар нэгэн төлөв өөрчлөгдсөн, эсвэл онцгой үзэгдэл болсон тухай баримтжуулсан мэдээлэл юм. Үзэгдлийг “change in state, or an update” болон “something happened” гэсэн бөгөөд юу болсон, хэзээ болсон, хэнд хамаатай байсан зэрэг мэдээллийг агуулж болно. Өөрөөр хэлбэл, үзэгдэл нь зөвхөн өгөгдөл биш, харин системд утга бүхий өөрчлөлтийн нэгж юм.

Үзэгдлээр хөтлүүлсэн архитектурын гол зарчмууд

  • Idempotency — нэг үзэгдлийг олон удаа боловсруулсан ч үр дүн ижил байх ёстой
  • Decoupling — producer ба consumer хоорондоо мэдэхгүй, зөвхөн үзэгдлийн төрөл, форматыг л мэднэ
  • Asynchronous communication
  • Eventual consistency — ACID биш, BASE.
  • Single source of truth-ийн оронд үзэгдлийн логийг source of truth болгох боломжтой.

Реактив программчлал + EDA хослолын давуу тал

1. Loose Coupling (Сул хамаарал)

EDA-д компонентууд үзэгдлээр холбогддог бөгөөд producer нь consumer-ийг мэдэх шаардлагагүй. Энэ нь системийг маш сул хамааралтай болгодог .

2. Scalability (Өргөтгөх чадвар)

Event-driven системүүд нь их хэмжээний event-ийг параллель байдлаар боловсруулах чадвартай. Энэ нь өндөр ачаалалтай системд тохиромжтой .

3. Real-time Processing (Бодит цагийн боловсруулалт)

EDA нь event үүсэх үед шууд боловсруулдаг тул polling хийх шаардлагагүй .

Reactive Programming нь өгөгдлийн урсгалыг real-time байдлаар дамжуулж, шууд реакц хийдэг.

4. Resilience ба Fault tolerance

Event-driven системүүдэд нэг сервис унасан ч бусад нь ажиллаж чаддаг.

Уламжлалт REST болон Event-driven харьцуулах нь

Шинж чанарRESTEvent-Driven
ХарилцааSynchronous Asynchronous
ХолбооTight couplingLoose coupling
ХүлээлтBlockingNon-blocking
Data flowPullPush
ScalabilityХязгаарлагдмалМаш өндөр
Use caseCRUD, APIReal-time system

Leave a Reply