แนะนำ Message Queue ที่น่าสนใจ Apache Pulsar!!

แนะนำ Message Queue ที่น่าสนใจ Apache Pulsar!!

สวัสดีครับเพื่อนๆ วันนี้ทางแอดมิน มี platform ของ message queue ดีๆที่น่าสนใจมานำเสนอเพื่อน ๆ ครับ หลายๆคนถ้าอยู่ในวงการ software มาซักพักก็น่าจะคุ้นเคยกับ apache kafka , mqtt , rabbitMQ ที่เป็น message queue ที่นิยมใช้งานใช่มั้ยครับ ทั้งนี้แอดมินขอเสนอ อีก 1 platform ที่น่าสนใจ เผื่อให้เพื่อนสามารถนำไปเป็นอีกตัวเลือกนึงในการนำไปใช้งานได้ครับ ซึ่งนั่นก็คือ Apache pulsar ครับ อนึ่งแอดมินไปเจอบทความที่น่าสนใจเกี่ยวกับเจ้า Apache pulsar ซึ่งมีความน่าสนใจยังไง ไปดูกันเลยครับ 

Apache Pulsar คืออะไร?

Apache Pulsar หรือเรียกกัน Pulsar เป็นแพลตฟอร์ม cloud-native ,การส่งข้อความและสตรีมมิ่งแบบ open source แต่เดิมพัฒนาโดย Yahoo! และส่งต่อให้กับทาง Apache Software Foundation (ASF) มีข้อดีคือ Scalable และ จัดการกับระบบที่มีความต้องการเคลื่อนย้ายข้อมูลที่มีความต้องการมากๆ 

Pulsar รวมคุณสมบัติที่ดีที่สุดของระบบการส่งข้อความแบบดั้งเดิมลักษณะคล้าย RabbitMQ เข้ากับระบบ Pub-sub ที่คล้ายกับ Kafka เพราะฉะนั้นเราจะได้รับข้อดีในแต่ละส่วนของในแต่ละ platform ทั้งสองที่มีประสิทธิภาพสูง เป็นอีกหนึ่ง platform ที่เริ่มได้รับความนิยมตั้งแต่กลายเป็นรูปแบบ open source และด้วยข้อดีของ Apacheเอง คอมมูนิตี้ที่ใช้งานจึงมีแนวโน้มที่จะเติบโตและขยายขึ้นไปได้ครับ

Open-source pub-sub messaging system

Pub-sub ย่อมาจาก platform การรับส่งข้อความแบบ publish-subscribe เมื่อใช้ pub-sub ผู้ส่งข้อความหรือผู้เผยแพร่จะไม่ส่งข้อความที่ระบุเฉพาะไปยังปลายทางผู้รับ ทุกครั้งที่มีการเผยแพร่ข้อความที่เกี่ยวข้องกับหัวข้อนั้น สมาชิกทุกคนจะได้รับข้อความนั้นทันทีแต่หากเป็นข้อความที่ผู้รับไม่ได้สนใจก็จะผ่านไป การทำแบบนี้ข้อดีไม่จำเป็นต้องเข้าคิวต่อแถวรับข้อความแต่อย่างใด

ผู้เผยแพร่นั้นจะไม่รู้ว่าใครคือผู้รับหรือTopicใดที่เหล่าผู้รับข้อมูลต้องการ ซึ่งลักษณะแบบ Asynchronous ของ Pub-Sub นั้นช่วยให้สามารถเชื่อมต่อและขยายขนาดได้ (Scalability) ทำให้เหมาะอย่างยิ่งสำหรับ แอปพลิเคชันแบบกระจาย รวมถึงโครงสร้างแบบ serverless และ microservices

เปรียบเทียบคร่าวๆ Pulsar กับ platform อื่นเป็นยังไง?

Apache Pulsar นั้นเป็นแบบ cloud-native ปรับขนาด(Scalability)ได้ง่ายกว่ามาก และสามารถมี data center ได้หลายแห่งและรองรับการกำหนดค่าแบบ active/active แต่หากจะเปรียบเทียบกับ Apache Kafka ซึ่งเป็นตัวเลือกระบบการส่งข้อความแบบ Pub-Sub ชั้นนำและเป็นที่นิยมนั้น ก็ต้องบอกว่า Kafka นั้นก็สามารถที่จะทำได้คล้ายกับ Pulsar แต่ Pulsar เองก็มีข้อดีบางส่วนที่เหนือกว่า Kafka ในระดับนึงเช่นกัน ยกตัวอย่างเช่น

ค่าใช้จ่ายที่ถูกกว่า

  • ประสิทธิภาพ
  • ความสะดวกในการปรับใช้งาน
  • การขยายขนาดเพื่อรองรับกับระบบที่มีขนาดใหญ่ขึ้น
  • การจัดลำดับคิว

จากที่กล่าวมาเป็นส่วนหนึ่งของข้อดีของ Pulsar นั่นเองครับ

Producer / Consumer

Producer คือผู้ส่งข้อความและ Consumer คือผู้รับข้อความ ในการส่งข้อความแบบ Pub-Sub หรือ รูปแบบอื่นก็ตาม อาจเรียกสิ่งเหล่านี้ว่า Publisher/Subscriber ตามลำดับ ใน Pulsar นั้นสามารถใช้คำเหล่านี้ทดแทนกันได้ไม่ผิดอะไร ซึ่งยังคง concept ที่ว่า ระบบการส่งข้อความได้รับข้อความจาก Produce/Publish และส่งไปยัง Consume/Subscribe 

Tenant / Namespace / Topic / Subscription

Topic เป็นปลายทางสำหรับการ Produce/Consume ข้อความที่ต้องการ Namespace นั้นเป็นพื้นที่ที่รวม Topic ต่าง ๆ เอาไว้ โดยใน Namespace นี้ Topic สามารถจัดการหรือจัดระเบียบได้ง่ายเช่น กำหนดสิทธิ์และข้อจำกัด เป็นต้น Tenant เป็นพื้นที่ที่รวม Namespace ไว้

นอกจากนี้ Pulsar ยังให้สามารถให้ระบุหัวข้อซึ่งเป็นปลายทางสำหรับการส่งและรับข้อความในรูปแบบต่อไปนี้ได้

persistent://${tenant}/${namespace}/${topic}

Subscription นั้นจะระบุที่ Consumer เมื่อ Consumer ต้องการ consume ตัว Topic ที่ต้องการ

นี่ก็เป็นข้อมูลที่แอดมินได้สรุปหรือ นำบทความของ Apache Pulsar มาแปลให้เพื่อนๆได้อ่านกันครับ Pulsar ในปัจจุบัน เริ่มค่อย ๆ มีการนพมาใช้งานมากขึ้น แต่ทั้งนี้ก็ขึ้นอยู่กับความเหมาะสมของระบบที่เพื่อน ๆ ใช้งานอยู่ด้วย หวังว่าจะเป็นประโยชน์กับเพื่อน ๆ ที่เข้ามาอ่านนะครับ

หากเพื่อนๆต้องการ รายละเอียดมากกว่า ข้อมูลที่มากกว่านี้เกี่ยวกับ Apache Pulsar เพื่อน ๆ สามารถเข้าไปอ่านได้ที่ https://pulsar.apache.org ได้เลยครับ ในส่วนของ open source นั้นสามารถเข้าไปดูได้ที่ https://github.com/apache/pulsar นะครับ

ส่วนบทความที่เขียนไปเป็นเพียงส่วนหนึ่งของบทความที่สรุปมา หาก อยากอ่านเพิ่มเติม แอดมินได้แปะลิ้งค์ไว้ด้านล่างแล้วครับ