المقدمة

هنتكلم في الورقة دي عن الـ Internet Download Manager وهنشوف ازاي ممكن نبنيه بشكل بسيط وهنشوف ايه الأجزاء الرئيسية اللي ممكن يتكون منها.

Internet Download Manager Use-case
Internet Download Manager Use-case

Message Queues

بيتم استعمال ال Messaging Queues عشان ال Executer services تقدر انها ت submit tasks بعدد محدد مسبقا من ال threads او ال workers اللي حيعملوا processing لل task ديه.


Task Schema (Data Model)

كل تاسك عبارة عن url بنقرأ منه عن طريق protocol مناسب زي ال http والـ ftp وهنا بيجي دور ال factory pattern

فاحنا ممكن نعمل factory ي generate download task حسب كل url مثﻼ واحد للـ httpDownloadTask وواحد للـ ftp.


Separate Tasks

بعد كده كل تاسك بيتم تقسيمها ﻻجزاء متساوية حسب ال task size يعني لو بعتنا initial request ب http ممكن نعرف ال file size وساعتها ممكن نقسمه علي العدد الي احنا عايزينه من ال workers الي بيقوموا بعمل download لكل part.


Example & Code Repository

فبطريقة بسيطة لو عندي two workers وحجم ال file مثلا 100 يبقي الworker اﻻول حيبدأ

انه يعمل download من 0 —> 50 والتاني من 50 —> 100

وال protocols زي الHTTP بتوفر range download يعني احنا ممكن نضيف في الـ headers بتاعة الـ http request الـ range اللي عاوزينه.

فمثلا ممكن للـ worker الاول : 50=range:start=0,end

واخيرًا بنعمل Create للـ File في الـ Path اللي كان في الـ task اللي عملنا منها parts وقسمناها لاجزاء ، وبنكتب الـ byte stream من جزء ال start لحد ال end.

Internet Download Manager
Run Java code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.