Apache Nifi ทำงานอย่างไร - ท่องบนกระแสข้อมูลของคุณอย่าจมอยู่ในนั้น

บทนำ

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

ข่าวดีคุณไม่จำเป็นต้องสร้างโซลูชันกระแสข้อมูลตั้งแต่เริ่มต้น - Apache NiFi พร้อมแล้ว!

ในตอนท้ายของบทความนี้คุณจะเป็นผู้เชี่ยวชาญด้าน NiFi พร้อมที่จะสร้างท่อส่งข้อมูลของคุณ

สิ่งที่ฉันจะกล่าวถึงในบทความนี้:

  • Apache NiFi คืออะไรคุณควรใช้มันในสถานการณ์ใดและแนวคิดหลักที่ต้องทำความเข้าใจใน NiFi คืออะไร

สิ่งที่ฉันจะไม่กล่าวถึง:

  • การติดตั้งการใช้งานการตรวจสอบความปลอดภัยและการดูแลคลัสเตอร์ NiFi

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

สารบัญ

  • I - Apache NiFi คืออะไร?

    - การกำหนด NiFi

    - ทำไมต้องใช้ NiFi?

  • II - Apache Nifi ภายใต้กล้องจุลทรรศน์

    - FlowFile

    - โปรเซสเซอร์

    - กลุ่มกระบวนการ

    - การเชื่อมต่อ

    - ตัวควบคุมการไหล

  • ข้อสรุปและคำกระตุ้นการตัดสินใจ

Apache NiFi คืออะไร?

ในเว็บไซต์ของโครงการ Apache Nifi คุณสามารถค้นหาคำจำกัดความต่อไปนี้:

ระบบที่ใช้งานง่ายมีประสิทธิภาพและเชื่อถือได้ในการประมวลผลและแจกจ่ายข้อมูล

ลองวิเคราะห์คำหลักที่นั่น

การกำหนด NiFi

ประมวลผลและแจกจ่ายข้อมูล

นั่นคือส่วนสำคัญของ Nifi จะย้ายข้อมูลไปรอบ ๆ ระบบและให้เครื่องมือในการประมวลผลข้อมูลนี้

Nifi สามารถจัดการกับแหล่งข้อมูลและรูปแบบที่หลากหลาย คุณนำข้อมูลจากแหล่งเดียวแปลงและส่งไปยังซิงก์ข้อมูลอื่น

ง่ายต่อการใช้

โปรเซสเซอร์ - กล่อง -เชื่อมด้วยตัวเชื่อมต่อ - ลูกศรสร้างโฟลว์ N iFi นำเสนอประสบการณ์การเขียนโปรแกรมแบบโฟลว์

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

พิจารณาท่อด้านล่าง:

ในการแปลการไหลของข้อมูลด้านบนใน NiFi คุณไปที่ส่วนต่อประสานผู้ใช้แบบกราฟิกของ NiFi ลากและวางองค์ประกอบสามส่วนลงในผืนผ้าใบและ

แค่นั้นแหละ. ใช้เวลาสร้างสองนาที

ตอนนี้ถ้าคุณเขียนโค้ดเพื่อทำสิ่งเดียวกันก็น่าจะยาวหลายร้อยบรรทัดเพื่อให้ได้ผลลัพธ์ที่คล้ายกัน

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

ทรงพลัง

NiFi มีโปรเซสเซอร์จำนวนมากนอกกรอบ (293 ใน Nifi 1.9.2) คุณอยู่บนไหล่ของยักษ์ โปรเซสเซอร์มาตรฐานเหล่านี้รองรับกรณีการใช้งานส่วนใหญ่ที่คุณอาจพบ

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

Concurrency คือกล่องคอมพิวเตอร์ของ Pandora ที่คุณไม่ต้องการเปิด NiFi ช่วยป้องกันตัวสร้างไปป์ไลน์จากความซับซ้อนของการทำงานพร้อมกัน

เชื่อถือได้

ทฤษฎีที่สนับสนุน NiFi ไม่ใช่เรื่องใหม่ มันมีจุดยึดทางทฤษฎีที่มั่นคง คล้ายกับโมเดลเช่น SEDA

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

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

NiFi ติดตามประวัติของข้อมูลแต่ละชิ้นด้วยคุณสมบัติที่สืบเชื้อสายและที่มา ทำให้สามารถทราบได้ว่าข้อมูลแต่ละชิ้นเกิดการเปลี่ยนแปลงอย่างไร

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

ทำไมต้องใช้ Nifi

ก่อนอื่นฉันอยากจะบอกให้ชัดเจนว่าฉันไม่ได้มาที่นี่เพื่อเผยแพร่ศาสนา NiFi เป้าหมายของฉันคือการให้องค์ประกอบที่เพียงพอเพื่อให้คุณสามารถตัดสินใจได้อย่างชาญฉลาดเกี่ยวกับวิธีที่ดีที่สุดในการสร้างท่อส่งข้อมูลของคุณ

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

  • ปริมาณ - คุณทำงานในระดับใด ตามลำดับความสำคัญคุณเข้าใกล้ GigaBytes สองสามตัวหรือ PetaBytes หลายร้อยตัวหรือไม่?
  • ความหลากหลาย - คุณมีแหล่งข้อมูลกี่แหล่ง? ข้อมูลของคุณมีโครงสร้างหรือไม่ ถ้าใช่สคีมามักจะแตกต่างกันไปหรือไม่
  • Velocity - ความถี่ของเหตุการณ์ที่คุณดำเนินการคืออะไร? เป็นการชำระเงินด้วยบัตรเครดิตหรือไม่? เป็นรายงานประสิทธิภาพประจำวันที่ส่งโดยอุปกรณ์ IoT หรือไม่
  • ความจริง - คุณเชื่อถือข้อมูลได้ไหม หรือคุณต้องใช้การทำความสะอาดหลาย ๆ ครั้งก่อนที่จะจัดการหรือไม่?

NiFi นำเข้าข้อมูลจากแหล่งข้อมูลหลายแหล่งและมีกลไกในการจัดการสคีมาที่แตกต่างกันในข้อมูล ดังนั้นจึงส่องเมื่อมีสูงหลากหลายในข้อมูล

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

ด้วยตัวเลือกการกำหนดค่า Nifi สามารถจัดการสถานการณ์ปริมาณ / ความเร็วได้หลากหลาย

รายการแอปพลิเคชันที่เพิ่มขึ้นสำหรับโซลูชันการกำหนดเส้นทางข้อมูล

กฎระเบียบใหม่การเพิ่มขึ้นของ Internet of Things และการไหลเวียนของข้อมูลที่สร้างขึ้นเน้นความเกี่ยวข้องของเครื่องมือเช่น Apache NiFi

  • Microservices เป็นที่นิยม ในบริการที่ทำร่วมกันอย่างหลวม ๆ ข้อมูลคือสัญญาระหว่างบริการ Nifi เป็นวิธีที่มีประสิทธิภาพในการกำหนดเส้นทางข้อมูลระหว่างบริการเหล่านั้น
  • อินเทอร์เน็ตของสิ่งต่างๆนำข้อมูลจำนวนมากไปยังระบบคลาวด์ การนำเข้าและตรวจสอบข้อมูลจากขอบไปยังระบบคลาวด์ก่อให้เกิดความท้าทายใหม่ ๆ มากมายที่ NiFi สามารถจัดการได้อย่างมีประสิทธิภาพ (โดยหลักแล้วผ่าน MiniFi, โครงการ NiFi สำหรับอุปกรณ์ขอบ)
  • มีการกำหนดแนวทางและข้อบังคับใหม่เพื่อปรับเศรษฐกิจ Big Data ในบริบทของการตรวจสอบที่เพิ่มขึ้นนี้จำเป็นอย่างยิ่งที่ธุรกิจจะต้องมีภาพรวมที่ชัดเจนของท่อส่งข้อมูล ตัวอย่างเช่นสายข้อมูล NiFi สามารถเป็นประโยชน์ในเส้นทางสู่การปฏิบัติตามกฎระเบียบ

เชื่อมช่องว่างระหว่างผู้เชี่ยวชาญด้านข้อมูลขนาดใหญ่กับคนอื่น ๆ

ดังที่คุณเห็นในอินเทอร์เฟซผู้ใช้กระแสข้อมูลที่แสดงใน NiFi นั้นยอดเยี่ยมในการสื่อสารเกี่ยวกับท่อส่งข้อมูลของคุณ สามารถช่วยให้สมาชิกในองค์กรของคุณมีความรู้มากขึ้นเกี่ยวกับสิ่งที่เกิดขึ้นในท่อส่งข้อมูล

  • นักวิเคราะห์กำลังขอข้อมูลเชิงลึกว่าเหตุใดข้อมูลนี้จึงมาถึงที่นี่ด้วยวิธีนั้น? นั่งด้วยกันและเดินผ่านไหล ในห้านาทีคุณจะให้ใครบางคนเข้าใจอย่างถ่องแท้เกี่ยวกับ Extract Transform และ Load -ETL-ไปป์ไลน์
  • คุณต้องการความคิดเห็นจากเพื่อนของคุณเกี่ยวกับขั้นตอนการจัดการข้อผิดพลาดใหม่ที่คุณสร้างขึ้นหรือไม่? NiFi เป็นการตัดสินใจในการออกแบบเพื่อพิจารณาเส้นทางข้อผิดพลาดที่น่าจะเป็นผลลัพธ์ที่ถูกต้อง คาดว่าการตรวจสอบขั้นตอนจะสั้นกว่าการตรวจสอบโค้ดแบบเดิม

คุณควรใช้หรือไม่? ใช่ไม่อาจจะ?

แบรนด์ NiFi นั้นใช้งานง่าย ยังคงเป็นแพลตฟอร์มกระแสข้อมูลระดับองค์กร มีชุดคุณสมบัติที่สมบูรณ์ซึ่งคุณอาจต้องการเพียงชุดย่อยที่ลดลง การเพิ่มเครื่องมือใหม่ลงในสแต็กนั้นไม่เป็นพิษเป็นภัย

หากคุณเริ่มต้นตั้งแต่ต้นและจัดการข้อมูลบางส่วนจากแหล่งข้อมูลที่เชื่อถือได้คุณอาจจะดีกว่าในการตั้งค่าไปป์ไลน์Extract Transform and Load - ETL บางทีการจับข้อมูลการเปลี่ยนแปลงจากฐานข้อมูลและสคริปต์การเตรียมข้อมูลบางอย่างเป็นสิ่งที่คุณต้องการ

ในทางกลับกันหากคุณทำงานในสภาพแวดล้อมที่มีโซลูชันข้อมูลขนาดใหญ่ที่ใช้งานอยู่ (ไม่ว่าจะเป็นการจัดเก็บการประมวลผลหรือการส่งข้อความ) NiFi จะทำงานร่วมกับอุปกรณ์เหล่านี้ได้ดีและมีแนวโน้มที่จะชนะอย่างรวดเร็ว คุณสามารถใช้ประโยชน์จากตัวเชื่อมต่อแบบสำเร็จรูปกับโซลูชัน Big Data อื่น ๆ เหล่านั้นได้

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

ตอนนี้เราได้เห็นภาพที่สูงมากของ Apache NiFi แล้วเรามาดูแนวคิดหลักของมันและแยกส่วนภายในออก

Apache Nifi ภายใต้กล้องจุลทรรศน์

“ NiFi คือกล่องและการเขียนโปรแกรมลูกศร” อาจเป็นประโยชน์ในการสื่อสารในภาพรวม อย่างไรก็ตามหากคุณต้องใช้งานกับ NiFi คุณอาจต้องการทำความเข้าใจเพิ่มเติมเกี่ยวกับวิธีการทำงาน

ในส่วนที่สองนี้ฉันจะอธิบายแนวคิดที่สำคัญของ Apache NiFi ด้วยสกีมา โมเดลกล่องดำนี้จะไม่เป็นกล่องดำสำหรับคุณในภายหลัง

Unboxing Apache NiFi

เมื่อคุณเริ่ม NiFi คุณจะเข้าสู่เว็บอินเตอร์เฟส UI ของเว็บคือพิมพ์เขียวที่คุณออกแบบและควบคุมไปป์ไลน์ข้อมูลของคุณ

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

อินเทอร์เฟซผู้ใช้ผ้าใบ NiFi เป็นเฟรมเวิร์กที่ตัวสร้างไปป์ไลน์มีวิวัฒนาการ

ทำความเข้าใจกับคำศัพท์ Nifi

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

กล่องดำจะเรียกว่าการประมวลผลและพวกเขาแลกเปลี่ยนชิ้นข้อมูลชื่อFlowFilesผ่านคิวที่มีชื่อการเชื่อมต่อ สุดท้ายFlowFile Controllerมีหน้าที่จัดการทรัพยากรระหว่างส่วนประกอบเหล่านั้น

ลองมาดูวิธีการทำงานภายใต้ประทุน

FlowFile

ใน NiFi FlowFileคือแพ็กเก็ตข้อมูลที่เคลื่อนที่ผ่านโปรเซสเซอร์ของไปป์ไลน์

FlowFile แบ่งออกเป็นสองส่วน:

  • แอตทริบิวต์ซึ่งเป็นคู่คีย์ / ค่า ตัวอย่างเช่นชื่อไฟล์เส้นทางไฟล์และตัวระบุเฉพาะเป็นแอตทริบิวต์มาตรฐาน
  • เนื้อหาการอ้างอิงไปยังสตรีมของไบต์เขียนเนื้อหา FlowFile

FlowFile ไม่มีข้อมูลเอง นั่นจะเป็นการ จำกัด ทรูพุตของไปป์ไลน์อย่างรุนแรง

FlowFile จะถือตัวชี้ที่อ้างอิงข้อมูลที่จัดเก็บไว้ในที่เก็บข้อมูลในเครื่องแทน สถานที่แห่งนี้จะเรียกว่า Content Repository

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

โปรเซสเซอร์บางตัวไม่จำเป็นต้องเข้าถึงเนื้อหาของ FlowFileเพื่อดำเนินการ - ตัวอย่างเช่นการรวมเนื้อหาของ FlowFiles สองไฟล์ไม่จำเป็นต้องโหลดเนื้อหาในหน่วยความจำ

เมื่อโปรเซสเซอร์แก้ไขเนื้อหาของ FlowFile ข้อมูลก่อนหน้านี้จะถูกเก็บไว้ NiFi copy-on-write จะแก้ไขเนื้อหาในขณะที่คัดลอกไปยังตำแหน่งใหม่ ข้อมูลดั้งเดิมยังคงอยู่ในที่เก็บเนื้อหา

ตัวอย่าง

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

ในที่สุด Content Repository จะส่งคืนการอ้างอิงไปยังเนื้อหาที่บีบอัด FlowFile ได้รับการอัพเดตให้ชี้ไปที่ข้อมูลที่บีบอัด

ภาพวาดด้านล่างสรุปตัวอย่างด้วยโปรเซสเซอร์ที่บีบอัดเนื้อหาของ FlowFiles

ความน่าเชื่อถือ

NiFi อ้างว่าเชื่อถือได้ในทางปฏิบัติเป็นอย่างไร?แอ็ตทริบิวต์ของ FlowFiles ทั้งหมดที่ใช้อยู่ในปัจจุบันตลอดจนการอ้างอิงถึงเนื้อหาจะถูกเก็บไว้ใน FlowFile Repository

ในทุกขั้นตอนของไปป์ไลน์การแก้ไข Flowfile จะถูกบันทึกไว้ใน FlowFile Repository ก่อนในบันทึกการเขียนล่วงหน้าก่อนที่จะดำเนินการ

สำหรับแต่ละ FlowFile ที่มีอยู่ในระบบที่เก็บ FlowFile จะเก็บ:

  • แอตทริบิวต์ FlowFile
  • ตัวชี้ไปยังเนื้อหาของ FlowFile ที่อยู่ในที่เก็บ FlowFile
  • สถานะของ FlowFile ตัวอย่างเช่น: Flowfile อยู่ในคิวใดในทันที

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

NiFi มีเครื่องมืออื่นในการติดตามประวัติที่สมบูรณ์ของ FlowFiles ทั้งหมดในโฟลว์: Provenance Repository

ที่เก็บ Provenance

ทุกครั้งที่มีการแก้ไข FlowFile NiFi จะถ่ายภาพรวมของ FlowFile และบริบท ณ จุดนี้ ชื่อสำหรับภาพรวมใน NiFi เป็นเหตุการณ์ Provenance Provenance Repository บันทึกเหตุการณ์ Provenance

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

นอกเหนือจากการนำเสนอสายเลือดที่สมบูรณ์ของข้อมูลแล้ว Provenance Repository ยังเสนอให้เล่นซ้ำข้อมูลได้ทุกเมื่อ

เดี๋ยวก่อนความแตกต่างระหว่าง FlowFile Repository และ Provenance Repository คืออะไร?

แนวคิดเบื้องหลัง FlowFile Repository และ Provenance Repository นั้นค่อนข้างคล้ายกัน แต่ก็ไม่ได้แก้ปัญหาเดียวกัน

  • ที่เก็บ FlowFile คือบันทึกที่มีเฉพาะสถานะล่าสุดของ FlowFiles ที่ใช้งานอยู่ในระบบ เป็นภาพล่าสุดของการไหลและทำให้สามารถฟื้นตัวจากไฟดับได้อย่างรวดเร็ว
  • ในทางกลับกัน Provenance Repository มีความละเอียดถี่ถ้วนมากขึ้นเนื่องจากติดตามวงจรชีวิตที่สมบูรณ์ของ FlowFile ทั้งหมดที่อยู่ในโฟลว์

หากคุณมีเพียงภาพล่าสุดของระบบที่มีพื้นที่เก็บข้อมูล FlowFile ที่ Provenance Repository ช่วยให้คุณมีคอลเลกชันของภาพ - วิดีโอ คุณสามารถย้อนกลับไปยังช่วงเวลาใดก็ได้ในอดีตตรวจสอบข้อมูลเล่นซ้ำการดำเนินการจากช่วงเวลาที่กำหนด มันให้เชื้อสายของข้อมูลที่สมบูรณ์

โปรเซสเซอร์ FlowFile

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

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

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

โปรเซสเซอร์เปิดเผยอินเทอร์เฟซที่มีการตั้งค่าคอนฟิกูเรชันหลายแบบเพื่อปรับแต่งพฤติกรรม

คุณสมบัติของโปรเซสเซอร์เหล่านั้นคือการเชื่อมโยงสุดท้ายระหว่าง NiFi และความเป็นจริงทางธุรกิจของข้อกำหนดการใช้งานของคุณ

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

การปรับขนาด

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

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

กลุ่มกระบวนการ

อันนี้ตรงไปตรงมาตอนนี้เราได้เห็นว่าโปรเซสเซอร์คืออะไร

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

กลุ่มโปรเซสเซอร์เป็นวิธีง่ายๆในการสร้างโปรเซสเซอร์ใหม่โดยอิงจากกลุ่มโปรเซสเซอร์ที่มีอยู่

การเชื่อมต่อ

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

เนื่องจากโปรเซสเซอร์ใช้และสร้างข้อมูลในอัตราที่แตกต่างกันขึ้นอยู่กับการดำเนินการที่ดำเนินการการเชื่อมต่อจึงทำหน้าที่เป็นบัฟเฟอร์ของ FlowFiles

มีการ จำกัด จำนวนข้อมูลในการเชื่อมต่อ ในทำนองเดียวกันเมื่อท่อน้ำของคุณเต็มคุณจะไม่สามารถเติมน้ำได้อีกต่อไปหรือน้ำล้น

ใน NiFi คุณสามารถกำหนดขีด จำกัด เกี่ยวกับจำนวน FlowFiles และขนาดของเนื้อหาที่รวมผ่านการเชื่อมต่อได้

จะเกิดอะไรขึ้นเมื่อคุณส่งข้อมูลมากเกินกว่าที่การเชื่อมต่อจะรองรับได้

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

สมมติว่าคุณมี FlowFiles จำกัด 10,000 FlowFiles ระหว่างโปรเซสเซอร์สองตัว ในบางจุดการเชื่อมต่อมีองค์ประกอบมากกว่า 7,000 รายการ ไม่เป็นไรเนื่องจากขีด จำกัด คือ 10,000 P1ยังคงสามารถส่งข้อมูลผ่านการเชื่อมต่อไปยังP2ได้

สมมติว่าโปรเซสเซอร์หนึ่งส่ง FlowFiles ใหม่ 4,000 รายการไปยังการเชื่อมต่อ

7 0000 + 4000 = 11000 →เราอยู่เหนือเกณฑ์การเชื่อมต่อ 10,000 FlowFiles

ขีด จำกัด คือขีด จำกัดอ่อนซึ่งหมายความว่าสามารถเกินได้ อย่างไรก็ตามเมื่อเป็นเช่นนั้นโปรเซสเซอร์ก่อนหน้านี้จะไม่มีการกำหนดเวลาP1จนกว่าตัวเชื่อมต่อจะกลับมาต่ำกว่าค่าเกณฑ์ - 10,000 FlowFiles

ตัวอย่างที่เรียบง่ายนี้ให้ภาพรวมของการทำงานของแรงดันย้อนกลับ

คุณต้องการตั้งค่าเกณฑ์การเชื่อมต่อที่เหมาะสมกับปริมาณและความเร็วของข้อมูลที่จะจัดการ เก็บไว้ในใจสี่ Vs

ความคิดที่เกินขีด จำกัด อาจฟังดูแปลก เมื่อจำนวน FlowFiles หรือข้อมูลที่เกี่ยวข้องเกินขีด จำกัด กลไกการแลกเปลี่ยนจะถูกทริกเกอร์

สำหรับตัวอย่างอื่นในการกดทับชุดข้อความนี้สามารถช่วยได้

การจัดลำดับความสำคัญของ FlowFiles

ตัวเชื่อมต่อใน NiFi สามารถกำหนดค่าได้สูง คุณสามารถเลือกวิธีจัดลำดับความสำคัญของ FlowFiles ในคิวเพื่อตัดสินใจว่าจะดำเนินการใดต่อไป

ในบรรดาความเป็นไปได้ที่มีอยู่มีตัวอย่างเช่น First In First Out order - FIFO อย่างไรก็ตามคุณยังสามารถใช้แอตทริบิวต์ที่คุณเลือกจาก FlowFile เพื่อจัดลำดับความสำคัญของแพ็กเก็ตขาเข้า

ตัวควบคุมการไหล

Flow Controller เป็นกาวที่รวบรวมทุกอย่างเข้าด้วยกัน จัดสรรและจัดการเธรดสำหรับโปรเซสเซอร์ มันคือสิ่งที่ดำเนินการกระแสข้อมูล

นอกจากนี้ Flow Controller ยังช่วยให้สามารถเพิ่ม Controller Services ได้

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

ตัวอย่างเช่นคุณอาจใช้บริการผู้ให้บริการข้อมูลรับรอง AWS เพื่อให้บริการของคุณโต้ตอบกับบัคเก็ต S3 ได้โดยไม่ต้องกังวลกับข้อมูลรับรองในระดับโปรเซสเซอร์

เช่นเดียวกับโปรเซสเซอร์มีบริการคอนโทรลเลอร์มากมายให้ใช้งานทันที

คุณสามารถอ่านบทความนี้เพื่อดูเนื้อหาเพิ่มเติมเกี่ยวกับบริการคอนโทรลเลอร์

ข้อสรุปและคำกระตุ้นการตัดสินใจ

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

หากคุณกำลังอ่านข้อความนี้ขอแสดงความยินดี! ตอนนี้คุณรู้จัก NiFi มากขึ้นกว่า 99.99% ของประชากรโลก

ฝึกฝนบ่อยๆทำให้เก่ง. คุณเชี่ยวชาญแนวคิดทั้งหมดที่จำเป็นในการเริ่มสร้างท่อของคุณเอง ทำให้มันง่าย ทำให้ได้ผลก่อน

นี่คือรายการแหล่งข้อมูลที่น่าสนใจที่ฉันรวบรวมจากประสบการณ์การทำงานเพื่อเขียนบทความนี้

ทรัพยากร?

ภาพใหญ่ขึ้น

เนื่องจากการออกแบบท่อส่งข้อมูลในระบบนิเวศที่ซับซ้อนต้องใช้ความเชี่ยวชาญในหลาย ๆ ด้านฉันขอแนะนำหนังสือDesigning Data-Intensive Applicationsจาก Martin Kleppmann ครอบคลุมปัจจัยพื้นฐาน

  • ตารางสรุปข้อมูลอ้างอิงทั้งหมดที่อ้างถึงในหนังสือของ Martin มีอยู่ใน repo Github ของเขา

เอกสารสรุปนี้เป็นจุดเริ่มต้นที่ดีหากคุณรู้แล้วว่าคุณต้องการศึกษาในเชิงลึกเกี่ยวกับหัวข้อประเภทใดและต้องการค้นหาเนื้อหาที่มีคุณภาพ

รายการทางเลือกสำหรับ Apache Nifi

มีโซลูชันกระแสข้อมูลอื่น ๆ

โอเพ่นซอร์ส:

  • Streamsets คล้ายกับ NiFi; มีการเปรียบเทียบที่ดีในบล็อกนี้

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

  • Azure Data Factory โซลูชันของ Microsoft
  • IBM มี InfoSphere DataStage
  • Amazon เสนอเครื่องมือชื่อ Data Pipeline
  • Google นำเสนอ Dataflow
  • Alibaba cloud ขอแนะนำบริการ DataWorks ที่มีคุณสมบัติคล้ายกัน

ทรัพยากรที่เกี่ยวข้องกับ NiFi

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

    - บทความนี้เจาะลึกเกี่ยวกับตัวเชื่อมต่อการใช้งานฮีปและแรงดันย้อนกลับ

    - สิ่งนี้แบ่งปันแนวทางปฏิบัติที่ดีที่สุดในการกำหนดขนาดเมื่อปรับใช้คลัสเตอร์ NiFi

  • บล็อก NiFi กลั่นกรองรูปแบบการใช้งาน NiFi ในเชิงลึกมากมายรวมถึงเคล็ดลับในการสร้างท่อ
  • อธิบายรูปแบบการตรวจสอบการอ้างสิทธิ์
  • ทฤษฎีเบื้องหลัง Apache Nifi ไม่ใช่เรื่องใหม่ Seda ที่อ้างถึงใน Nifi Doc มีความเกี่ยวข้องอย่างยิ่ง

    - แมตต์เวลส์ เบิร์กลีย์. SEDA: สถาปัตยกรรมสำหรับบริการอินเทอร์เน็ตที่มีสภาพดีและปรับขนาดได้ [ออนไลน์] สืบค้นเมื่อ: 21 เม.ย. 2562, จาก //www.mdw.la/papers/seda-sosp01.pdf