2017-10-25 27 views
8

Tôi có ứng dụng Azure Logic được kích hoạt khi tệp mới được thêm hoặc sửa đổi trong máy chủ SFTP. Khi điều đó xảy ra, tệp được sao chép vào Bộ nhớ Azure Blob và sau đó bị xóa khỏi máy chủ SFTP. Thao tác này mất khoảng 2 giây cho mỗi tệp.Thực thi song song Azure Logic App khi sao chép tệp từ SFTP sang Blob Storage

Vấn đề duy nhất tôi có là các tệp này (trung bình 500kb) được xử lý từng cái một. Cho rằng tôi đang tìm cách chuyển khoảng 30.000 tập tin hàng ngày, cách tiếp cận này trở nên rất chậm (khoảng 18 giờ).

Có cách nào để mở rộng quy mô/song song các thực thi này không?

+0

Bạn đã đề cập: "Vấn đề duy nhất tôi có là các tệp này (trung bình 500kb) được xử lý từng cái một". Theo mặc định, chia tách được đặt trên trình kích hoạt SFTP, do đó, mỗi tệp (nếu nhiều tệp được phát hiện) sẽ kích hoạt chạy thay vì một lần chạy cho tất cả các tệp. Bạn không thấy điều này? –

+0

@Derek Có, mỗi tập tin kích hoạt một thực thi riêng biệt nhưng thực thi là tuần tự –

+0

Điều đó không có vẻ đúng. Trình kích hoạt chia nhỏ nên thực thi song song - bạn có thể kiểm tra tab "Chẩn đoán" và xem liệu bạn có đang nhận được bất kỳ "Sự kiện chạy Throttled" nào không? Có thể là họ đang chạy song song, nhưng bởi vì các hành động đang được điều chỉnh, có vẻ như họ đang chạy theo trình tự. –

Trả lời

0

Tôi không chắc chắn rằng có một quy mô thực hiện/thực hiện song song trên Azure Logic App. Nhưng dựa trên kinh nghiệm của tôi, nếu các yêu cầu kịp thời không phải là rất cao, chúng tôi có thể sử dụng Foreach để làm điều đó, ForEach song song giới hạn là 50 và mặc định là 20.

Trong trường hợp của bạn, đề nghị của tôi là chúng ta có thể làm vòng lặp để kích hoạt khi một tệp mới được thêm hoặc sửa đổi trong SFTP sau đó chúng tôi có thể chèn thông điệp hàng đợi có đường dẫn tệp là nội dung vào hàng đợi lưu trữ azure, sau đó theo thời gian hoặc hàng đợi để kết thúc vòng lặp. Chúng tôi có thể nhận được bộ sưu tập tin nhắn xếp hàng. Cuối cùng, lấy thông báo hàng đợi và tìm nạp các tệp từ SFTP để tạo blob trong hành động foreach.

0

Nếu bạn đang sử dụng C# Parallel.ForEach như Tom Sun nói. Nếu bạn sử dụng cái này tôi cũng khuyên bạn nên sử dụng mẫu async/await cho hoạt động IO (lưu vào blob). Nó sẽ giải phóng chuỗi thực thi khi tệp đang được lưu để phục vụ một số yêu cầu khác.

Các vấn đề liên quan