Communication

services แต่ละอัน คุยกันยังไง?

ต่างกับ Monilith ยังไง?

ปกติ Monolith จะเป็น Process หรือ Application เดียวกันอยู่เเล้ว การ Communication ของมันเลยอาจจะเป็นแค่การ Call method เรียกหากันปกติ แต่พอเป็น microservices จะต้องมีการสื่อสารกันผ่าน Network level เลย เนื่องจากเป็นคนละ Process หรือ Application กัน

การสื่อสารของ Microservices จะเป็นสองแบบ คือ

Synchronous Communication

ก็คือการสื่อสารที่ blocked หรือจำเป็นต้องรอให้อีกฝ่ายตอบกลับมาก่อน ถึงจะทำงานต่อไปได้ ซึ่งข้อเสียคือมันต้องพึ่งพากับ Services อื่นๆ (ซึ่งอาจจะจำเป็น) ด้วย HTTP หรือ gRPC

ตัวอย่าง Synchronous Communication

Asynchronous Communication

ก็คือการสื่อสารที่ไม่จำเป็นต้องรอให้อีกฝ่ายตอบกลับก่อนก็ได้

AMQP (Advanced Message Queuing Protocol)

คือส่งเป็น Message ไปหาระบบอื่นผ่าน Message Broker ต่างๆเป็นตัวกลาง อาจจะใช้ตัวดังๆอย่าง Kafka หรือ RabbitMQ ก็ได้ ซึ่งส่งข้อความลงไปบน Queue แล้วจะมีระบบปลายทางที่มา Subscribe หรือ Consume ของออกไปทำงาน อาจจะแบ่งได้เป็น 2 แบบ คือ One-to-one (queue) หรือ One-to-many (topic)

ตัวอย่าง Asynchronous Communication

Last updated