Examples and Use Cases (ตัวอย่างและกรณีการใช้งาน)

เพื่อแสดงให้เห็นว่า pipeline architecture ถูกนำไปใช้อย่างไร ลองพิจารณาตัวอย่างต่อไปนี้ ซึ่งข้อมูล telemetry ของ service ถูกส่งจาก service ต่าง ๆ ผ่าน streaming ไปยัง Apache Kafka ( Figure 12-4 )

Pipeline Example

Figure 12-4. ตัวอย่าง pipeline architecture

ระบบที่แสดงใน Figure 12-4 ใช้ pipeline architecture style ในการประมวลผลข้อมูลหลายชนิดที่ streaming เข้ามายัง Kafka Service Info Capture filter (producer filter) subscribe topic ของ Kafka และรับข้อมูล service จากนั้นส่งข้อมูลที่จับได้นี้ไปยัง tester filter ที่ชื่อ Duration filter เพื่อตัดสินว่าข้อมูลนั้นเกี่ยวข้องกับ duration (หน่วยมิลลิวินาที) ของ service request หรือไม่

สังเกตการแยก concern ระหว่าง filter: Service Info Capture filter สนใจแค่วิธีเชื่อมต่อกับ Kafka topic และรับข้อมูล streaming ในขณะที่ Duration filter สนใจแค่การตรวจสอบคุณสมบัติของข้อมูลและตัดสินใจว่าจะส่งต่อไปยัง pipe ถัดไปหรือไม่ ถ้าข้อมูลเกี่ยวข้องกับ duration ของ service request มันจะถูกส่งไปยัง Duration Calculator transformer filter มิฉะนั้นข้อมูลจะถูกส่งไปยัง Uptime tester filter เพื่อตรวจสอบว่าเกี่ยวข้องกับ uptime metric หรือไม่ ถ้าไม่ pipeline ก็จะจบลง—ข้อมูลนั้นไม่เกี่ยวข้องกับ processing flow นี้ ถ้าเกี่ยวข้องกับ uptime metric Uptime tester filter จะส่งต่อไปยัง Uptime Calculator ซึ่งใช้ข้อมูลนั้นคำนวณ uptime metric Uptime Calculator จากนั้นจะส่งข้อมูลที่ถูกแก้ไขแล้วไปยัง Database Output consumer ซึ่ง persist ข้อมูลนั้นลงฐานข้อมูล MongoDB

ตัวอย่างนี้แสดงให้เห็นว่า pipeline architecture นั้น extensible เพียงใด ตัวอย่างเช่น ใน Figure 12-4 เราสามารถเพิ่ม tester filter ใหม่หลัง Uptime filter ได้อย่างง่ายดายเพื่อส่งข้อมูลไปใช้ใน metric ใหม่ เช่น database connection wait time

pipeline architectural style แม้จะเป็น monolithic architecture โดยทั่วไป แต่ก็ยังแสดงระดับ modularity ที่ดีเนื่องจากการใช้ filter แบบ technically partitioned มันเหมาะสำหรับสถานการณ์ที่ต้องใช้แนวทางแบบ workflow ทีละขั้นตอนในการประมวลผลข้อมูลภายในระบบ .

ก่อนที่เราจะไปยัง distributed architecture ที่ซับซ้อนมากขึ้น เรายังมี monolithic architecture อีกแบบหนึ่งที่จะอธิบายในบทถัดไป ซึ่งก็รองรับ modularity ในระดับที่ดีผ่านการใช้ plug-in component เช่นกัน นั่นคือ microkernel architecture .