Apache Storm - แนวคิดหลัก

Apache Storm อ่านกระแสข้อมูลดิบแบบเรียลไทม์จากปลายด้านหนึ่งและส่งผ่านลำดับของหน่วยประมวลผลขนาดเล็กและส่งออกข้อมูลที่ประมวลผล / เป็นประโยชน์ที่ปลายอีกด้านหนึ่ง

แผนภาพต่อไปนี้แสดงถึงแนวคิดหลักของ Apache Storm

ตอนนี้เรามาดูส่วนประกอบของ Apache Storm กันอย่างละเอียดยิ่งขึ้น -

ส่วนประกอบ คำอธิบาย
ทูเพิล Tuple เป็นโครงสร้างข้อมูลหลักใน Storm มันคือรายการขององค์ประกอบที่สั่งซื้อ ตามค่าเริ่มต้น Tuple รองรับข้อมูลทุกประเภท โดยทั่วไปจะสร้างแบบจำลองเป็นชุดของค่าที่คั่นด้วยเครื่องหมายจุลภาคและส่งต่อไปยังคลัสเตอร์ Storm
กระแส สตรีมเป็นลำดับสิ่งที่ไม่เรียงลำดับ
พวย แหล่งที่มาของสตรีม โดยทั่วไป Storm ยอมรับข้อมูลอินพุตจากแหล่งข้อมูลดิบเช่น Twitter Streaming API คิว Apache Kafka คิว Kestrel เป็นต้นมิฉะนั้นคุณสามารถเขียน spouts เพื่ออ่านข้อมูลจากแหล่งข้อมูลได้ “ ISpout” เป็นอินเทอร์เฟซหลักสำหรับการใช้งานพวยกาอินเทอร์เฟซเฉพาะบางอย่าง ได้แก่ IRichSpout, BaseRichSpout, KafkaSpout เป็นต้น
สลักเกลียว สลักเกลียวเป็นหน่วยประมวลผลเชิงตรรกะ Spouts ส่งผ่านข้อมูลไปยังกระบวนการสลักเกลียวและสลักเกลียวและสร้างกระแสข้อมูลเอาต์พุตใหม่ สลักเกลียวสามารถดำเนินการกรองการรวมการเข้าร่วมการโต้ตอบกับแหล่งข้อมูลและฐานข้อมูล Bolt รับข้อมูลและส่งไปยังสลักเกลียวหนึ่งตัวหรือมากกว่า “ IBolt” เป็นอินเทอร์เฟซหลักสำหรับการติดตั้งสลักเกลียว อินเทอร์เฟซทั่วไปบางส่วน ได้แก่ IRichBolt, IBasicBolt เป็นต้น

มาดูตัวอย่าง“ การวิเคราะห์ Twitter” แบบเรียลไทม์และดูว่าสามารถสร้างแบบจำลองใน Apache Storm ได้อย่างไร แผนภาพต่อไปนี้แสดงถึงโครงสร้าง

ข้อมูลสำหรับ“ การวิเคราะห์ Twitter” มาจาก Twitter Streaming API Spout จะอ่านทวีตของผู้ใช้โดยใช้ Twitter Streaming API และส่งออกเป็นสตรีมของ tuples ทูเพิลตัวเดียวจากพวยกาจะมีชื่อผู้ใช้ทวิตเตอร์และทวีตเดียวเป็นค่าที่คั่นด้วยเครื่องหมายจุลภาค จากนั้นไอน้ำของ tuples นี้จะถูกส่งต่อไปยัง Bolt และ Bolt จะแบ่งทวีตออกเป็นแต่ละคำคำนวณจำนวนคำและคงข้อมูลไปยังแหล่งข้อมูลที่กำหนดค่าไว้ ตอนนี้เราสามารถรับผลลัพธ์ได้อย่างง่ายดายโดยการสอบถามแหล่งข้อมูล

โทโพโลยี

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

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

Storm ทำให้โทโพโลยีทำงานอยู่เสมอจนกว่าคุณจะฆ่าโทโพโลยี งานหลักของ Apache Storm คือการเรียกใช้โทโพโลยีและจะเรียกใช้โทโพโลยีจำนวนเท่าใดก็ได้ในเวลาที่กำหนด

งาน

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

คนงาน

โทโพโลยีทำงานในลักษณะกระจายบนโหนดของผู้ปฏิบัติงานหลายโหนด สตอร์มกระจายงานอย่างเท่าเทียมกันในทุกโหนดของผู้ปฏิบัติงาน บทบาทของโหนดผู้ปฏิบัติงานคือรับฟังงานและเริ่มหรือหยุดกระบวนการเมื่อมีงานใหม่มาถึง

การจัดกลุ่มสตรีม

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

การจัดกลุ่มแบบสุ่ม

ในการจัดกลุ่มแบบสุ่มจำนวนทูเปิลที่เท่ากันจะถูกกระจายแบบสุ่มให้กับคนงานทั้งหมดที่ใช้สลักเกลียว แผนภาพต่อไปนี้แสดงถึงโครงสร้าง

การจัดกลุ่มฟิลด์

ฟิลด์ที่มีค่าเดียวกันในทูเปิลจะถูกจัดกลุ่มเข้าด้วยกันและสิ่งที่เหลือจะถูกเก็บไว้ภายนอก จากนั้นทูเปิลที่มีค่าฟิลด์เดียวกันจะถูกส่งต่อไปยังผู้ปฏิบัติงานคนเดียวกันที่ดำเนินการสลักเกลียว ตัวอย่างเช่นหากสตรีมถูกจัดกลุ่มตามช่อง "word" สิ่งที่มีสตริงเดียวกัน "สวัสดี" จะย้ายไปยังผู้ปฏิบัติงานคนเดียวกัน แผนภาพต่อไปนี้แสดงวิธีการทำงานของ Field Grouping

การจัดกลุ่มทั่วโลก

สตรีมทั้งหมดสามารถจัดกลุ่มและส่งต่อไปยังสายฟ้าเดียว การจัดกลุ่มนี้จะส่งสิ่งที่สร้างขึ้นโดยอินสแตนซ์ทั้งหมดของแหล่งที่มาไปยังอินสแตนซ์เป้าหมายเดียว (โดยเฉพาะให้เลือกผู้ปฏิบัติงานที่มี ID ต่ำสุด)

การจัดกลุ่มทั้งหมด

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