უკან დაბრუნება
Cloudflare-მა Logpush-ის ექსპორტის პაიპლაინს SQL Transformers დაამატა
SiTech AI Team2 წთ. საკითხავი

Cloudflare-მა Logpush-ის ექსპორტის პაიპლაინს SQL Transformers დაამატა

Cloudflare-ის Logpush ექსპორტამდე ლოგებს SQL Transformers-ით ფილტრავს, მალავს სენსიტიურ მონაცემებს და ცვლის ველებს. გუნდები მონაცემთა ნაკრებისთვის მოთხოვნებს წერენ და შენახულ ვერსიას შესაბამის NDJSON Logpush-ის დავალებას ურთავენ.

რას აკეთებს Transformers

Cloudflare-მა Logpush-ი ყველა თვითმომსახურების პლანზე ხელმისაწვდომი გახადა და იმავე ექსპორტის სამუშაო პროცესისთვის Transformers-ები ზოგადად გამოუშვა. ობსერვაბილობის გუნდებს ახლა შეუძლიათ ჩანაწერების გაფილტვრა, სენსიტიური მნიშვნელობების დაფარვა და ველების გადაკეთება მანამ, სანამ ლოგები Logpush-ს დატოვებს SIEM-ებისთვის, ანალიტიკური პლატფორმებისთვის ან ობიექტური საცავისთვის. მიწოდებამდე გაფილტვრამ შეიძლება შეამციროს შემდგომი მონაცემების მოცულობა და ხარჯები, რადგან გუნდებს აღარ უწევთ იმ ჩანაწერების ექსპორტი, მიღება და შენახვა, რომლებიც ჩამოსვლის შემდეგ იშლება.

Transformer-ი არის SQL მოთხოვნა, რომელიც ერთი Logpush-ის მონაცემთა ნაკრებისთვის იწერება. Logpush-ი ექსპორტამდე ამ მოთხოვნას ყოველ პარტიაზე უშვებს, შლის ჩანაწერებს, რომლებიც WHERE პირობას არ აკმაყოფილებს, და SELECT-ის შედეგს ექსპორტირებულ NDJSON ჩანაწერად იყენებს. გუნდებს შეუძლიათ ველების დამატება, გადარქმევა, წაშლა ან ჩადგმა, მათ შორის სტატიკური provider ველის დამატება, რომ მრავალი CDN-იდან მოსული ჩანაწერები ნორმალიზდეს.

როგორ მუშაობს შესრულება

მომხმარებლები Transformers-ებს ქმნიან, წინასწარ ათვალიერებენ და მართავენ Transformer Studio-ში ან API-ის მეშვეობით, შემდეგ კი შენახულ ვერსიას ურთავენ თავსებად NDJSON Logpush-ის დავალებას, რომელიც იმავე მონაცემთა ნაკრებს იყენებს. ყოველი განახლება ახალ ვერსიას ქმნის. Cloudflare-ი SQL მოთხოვნას R2-ში ინახავს, Bufstream-ი კი მას მრავალშრიანი ქეშის მეშვეობით იღებს, დავალების დროითი მონაკვეთისთვის ერთხელ ამზადებს ხელახლა გამოსაყენებელ DataFusion-ის ლოგიკურ გეგმას და იმავე მონაკვეთის ყოველ Arrow პარტიაზე ხელახლა იყენებს.

Bufstream-ი Buftee-სგან შეკუმშულ Cap'n Proto პარტიებს იღებს, მათ შეკუმშვას ხსნის, შესაფერის ლოგებს პარსავს და შესრულებამდე ტიპიზებულ Apache Arrow RecordBatch-ს აგებს. Apache DataFusion-ი და Arrow-ი შეირჩა იმიტომ, რომ DataFusion-ი უკვე ამუშავებს Cloudflare Basin-ს. Go-ს სერვისი Arrow IPC ბუფერებს Rust-ის ძრავთან FFI საზღვრის გავლით ცვლის, რომელიც C ABI-ის მეშვეობითაა გამოვლენილი და cgo-ით გამოიძახება. Go შეყვანის ბუფერის მაჩვენებელს მხოლოდ cgo გამოძახებისთვის გადასცემს, გამოსვლის ბუფერი Rust-ს ეკუთვნის, Go კი ამ შედეგს Go-ს მართულ მეხსიერებაში აკოპირებს, სანამ Rust-ის ალოკაციას გაათავისუფლებს.

მიწოდება, ჯანმრთელობა და გამართვა

Transformers-ები ისეა შექმნილი, რომ fail closed პრინციპით მუშაობდეს. თუ ტრანსფორმაცია ვერ შესრულდება, Bufstream-ი არც დავალების მიწოდების ოფსეტს წევს წინ და არც უტრანსფორმებელ პარტიას აგზავნის, სამაგიეროდ ხელახლა ცდილობს წარუმატებელ ტრანსფორმაციებს. ის თანდათანობით აჭიანურებს ხელახლა ცდებს, შეცდომებს დავალებაზე აფიქსირებს და თიშავს დავალებებს, რომლებიც ხანგრძლივად წარუმატებელ მდგომარეობაში რჩება. Transformer Health-ის ხედი აჩვენებს წარმატებულ და წარუმატებელ ტრანსფორმაციებს, მონაცემების მოცულობას ტრანსფორმაციამდე და შემდეგ, ასევე ტრანსფორმაციის ხანგრძლივობას.

შესრულების შემდეგ Bufstream-ი Arrow-ის შედეგს NDJSON-ად გარდაქმნის, ლოგებს პარტიებად აჯგუფებს და gzip-ით შეკუმშავს, შემდეგ კი კონფიგურირებულ დანიშნულების ადგილზე ატვირთავს და ატვირთვის goroutine-ებს დანიშნულების ადგილის კონკურენტულობის ლიმიტების ფარგლებში არეგულირებს. კომპანიამ თქვა, რომ უფრო ფართო მონაცემთა პაიპლაინი წამში ერთ მილიარდზე მეტ მოვლენას იღებს, Bufstream-ი კი წამში 110 მილიონზე მეტ Logpush ჩანაწერს აწვდის. Transformers-ები ხელმისაწვდომია Free, Pro, Business და Enterprise პლანებზე.

წყაროები: The Cloudflare Blog

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.