33
By: Waseem Abo Moch Henry Shehadi Supervisor: Vladimir Zdornov

Reliable Distributed Media Server

  • Upload
    niesha

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

Reliable Distributed Media Server. By: Waseem Abo Moch Henry Shehadi Supervisor: Vladimir Zdornov. תיאור המצגת. 1- מבט כללי. 2- דרישות ומטרות הפרויקט 3- סקירת פרוטוקולים 4- מודלים לשרת מבוזר 5- ארכיטקטורה 6- הסבר על FTP 7- אופן תכנון השרת 8- הסבר על Java Rmi - PowerPoint PPT Presentation

Citation preview

Page 1: Reliable Distributed Media Server

By:Waseem Abo

MochHenry Shehadi

Supervisor:Vladimir

Zdornov

Page 2: Reliable Distributed Media Server

1.מבט כללי -2דרישות ומטרות הפרויקט -3סקירת פרוטוקולים -4מודלים לשרת מבוזר -5ארכיטקטורה -6 הסבר על -FTP7אופן תכנון השרת -8 הסבר על -Java Rmi9 תוכנית -VLC והוספת

Plug-in10סיכום -11 -References

תיאור המצגתתיאור המצגת

Page 3: Reliable Distributed Media Server

אודיו ווידאו מעל רשת האינטרנט הפך שידור המדיה– מהחוויה היום יומית שלנו בלתי נפרד להיות חלק

כגולשים ברשת . כמות המידע המועברת מהשרתים ברחבי העולם אל

הגולשים אדירה ,מה שמעמיס מאוד על שרתים אלו . מה שדרש מ מפתחי האפליקציות והחומרה להתמודד

משאבי של השרתים, יחידות העיבוד על עומס גדולעם התקני האחסון. וגם על הרשת

פתרון : על מספר שרתים המפוזרים בכל רחבי חלוקת העומס

העולם.

מבט כללימבט כללי

Page 4: Reliable Distributed Media Server

מימוש שרת מדיה מבוזר אשר יכול לנצל את כוחהעיבוד של מספר שרתים וגם את משאבי הרשת

שלהם.

השרת אמור להיות אמיןReliable: כלומר - אמור להתגבר על בעיות ברשת .1 - להתגבר על נפילת חלק מהשרתים - במקרה 2

ששרת נופל באמצע שליחת מדיה מועברת האחריות לשרת אחר שיכול להמשיך מאותה נקודה.

הclients מכירים רק כתובת ip אחת ,שמזוהה של השרת .ipככתובת ה

דרישות ומטרות הפרויקטדרישות ומטרות הפרויקט

Page 5: Reliable Distributed Media Server

:streamingקיימים מספר פרוטוקולים ל ◦1 -RTP◦2 -RTSP/RTP .כולל בקרה ◦3 - HTTPs/HTTP. ◦4 -MMS. ◦5 -FTP. ◦6 -RTMP. ועוד...◦

פרוטוקולים להעברת מדיהפרוטוקולים להעברת מדיה

Page 6: Reliable Distributed Media Server

בתכנון הראשוני : החלטנו להשתמש בRTSP/RTP אך אחרי שלמדנו את הפרוטוקולים החלטנו לעבור

והסיבה :FTPלפרוטוקול לא בנוי בצורה כזאת שיאפשר RTSP/RTPפרוטוקול

תמיד clientלנו לתת שירות ממספר שרתים ,כי ה של השרת היא זהה לכתובת IP מוודא שכתובת ה

.השרת שניגש אליו בהתחלה

לפרוטוקולFTP יש את האופציה להעברת מידע דרך .)נפרט בהמשך ... ( צד שלישי

באיזה פרוטוקול העברה באיזה פרוטוקול העברה להשתמש ??להשתמש ??

Page 7: Reliable Distributed Media Server

:Web Pageניתוב לקוחות למקומות שונים דרך ה ◦ מנצלים את העובדה שלקוח ,…YouTube כמו WEBבמערכות

ומקבל דף שמכיל את הלינקים webמתחבר קודם לשרת ה לסרטים ולכן בכל פעם הם מכניסים לינקים לסרטים

המאוחסנים בשרתים אחרים ובכך מחלקים את העומס בין כל השרתים.

ניתוב לקוחות ע"י השרת :◦חלוקה ברמת השרת עצמו ,הוא זה שמפנה את הלקוח לשרת

ירגיש . userאחר מבלי שה

* אנו השתמשנו בגישה השנייה.

מודלים לשרת מבוזרמודלים לשרת מבוזר

Page 8: Reliable Distributed Media Server

מנהל את כל השיחה של העברת המדיה כמו התחלת (client)הלקוח ◦וזהו השרת מול שרת אחד ויחיד (seek)זרימה או עצירה או הזזה

.managerשנקרא לו

של התוכןלשליחת לשרתי המשנה בתורו שולח הוראות managerה ◦המדיה ללקוח .

הנוספים : managerתפקידי ה ◦- אחראי לעקוב אחרי שרתים שנופלים ולהוריד אותם מרשימת שרתי 1

המשנה .- מטפל בלקוחות אשר השרת שלהם נופל . ) ניתוב מחדש לשרת 2

עובד (

Page 9: Reliable Distributed Media Server
Page 10: Reliable Distributed Media Server

יחידה.IP מכיר שרת יחיד בעל כתובת clientה ◦

(manager/PI-server)שרת ראשי. לשרת הזה נקרא ◦.הנחת הפרויקט ששרת זה לא נופל -

ערוץ דרך client עם ה FTPהשרת הראשי מנהל שיחת ◦ השרת מדיה וברגע שמחליטים שצריך להעביר בקרה,

-slave/DTP). לשרת משני clientהראשי מפנה את ה Server)

Page 11: Reliable Distributed Media Server

◦FTP זהו פרוטוקול להעברת קבצים (File Transfer Protocol ) ולכן זהו פרוטוקול כללי ולא מיוחד להעברת מדיה.

אנחנו השתמשנו בפרוטוקול זה כדי להעביר את המדיה ללקוח וזה ◦בגלל :

הפשטות של פרוטוקול התמיכה שלו ב redirection מה שמקל עלינו מימוש מבוזר של השרת

יכול להפנות את הלקוחות לשרתים משניים ברגע manager - כך שה הצורך להעברת המדיה.

היום של clientסיבה חשובה נוספת היא שכמעט כל תוכנית ◦audio/video תומכת בפרוטוקול העברה FTP.

?? ??FTPFTPלמה למה

Page 12: Reliable Distributed Media Server

FTP מפריד בין העברת פקודות לבין העברת data .

פקודות עוברות בחיבורTCP שנקרא PI )protocol interpreter(.

הdata עובר בחיבור TCP שנקרא DTP )Data Transfer Protocol( .

FTP :מגדיר פקודות user, pass, retr, size… ,.

פקודה חשובה שניצלנו לredirection היא pasv: הלקוח שולח pasv

השרת מחזיר את הip והפורט של שרת ה DTP.

ולכן כל הפקודות נעביר על ידי חיבור הPI . לשרת הראשי

PASVברגע השליחה הלקוח שולח ◦

.DTPמקבל את הכתובת של שרת המשנה שממש פרוטוקול ה ◦

מתחילים העברה משרת זה.◦

Page 13: Reliable Distributed Media Server
Page 14: Reliable Distributed Media Server
Page 15: Reliable Distributed Media Server

: השרת שלנו בנוי מ - שרת זה מממש PI Server או Managerשרת ראשי שנקרא לו

.FTP של ה PIאת הפרוטוקול מחזיק רשימה של משתמשים והסיסמאות שלהם ומרשה רק Managerה ◦

למשתמשים מורשים לקבל שירות. ישנם עוד שרתי משנהDTP Servers אשר מממשים את

.FTP של ה DTPהפרוטוקול

אופן הפעולה :* שמטרתן commands הוא מחליף איתו Managerכאשר לקוח מתחבר ל ◦

להזדהות בפני השרת ולקבל אינפורמציה על גדול הקובץ וכו... . pasvלבסוף הלקוח מחליט לקבל את הקובץ ושולח פקודת ◦ מחזיר את כתובתו של שרת המשנה המועדף ) לפי המדיניות Manager ה ◦

שנבחרה( on theובכך הלקוח מתחבר לשרת זה ומתחיל לקבל את הקובץ ולנגן אותו ◦

fly.

Page 16: Reliable Distributed Media Server

:רשימה של שרתי משנה השרת הראשי בונה ◦איך בונים רשימה זו ?

בתחילת ריצת השרתים המשניים ,הם שולחים לשרת הראשי בקשת הרשמה דרך פרוטוקול שהגדרנו -

(Registeration Protocol) .השרת הראשי מחזיק את כתובתם של השרתים המשניים, ◦

בכל אחד DTP factory ל RMIומקבל רפירנס מרוחק של מהשרתים המשניים .

ישרת את הלקוח הבא בתור DTPהשרת הראשי בוחר איזה ◦לפי אחת מהמדיניות הבאות:

FastestLowestLoad Random

Page 17: Reliable Distributed Media Server

בין השרת הראשי לבין שרתי העברת פקודות הניהולהזכרנו קודם כי : )RMI)Remote Method Invocationהמשנה היא דרך

?RMIאז מה זה . Javaזוהי טכנולוגיה מתקדמת ש ◦ לאובייקטים מרוחקים שחיים במכונה מרוחקת דרך reference מטרתה : לקבל ◦

interface . מוגדר מראש בעצם אין לנו ממש שרתים מרוחקים אלא במקום RMI מהשימוש ב תוצאה :

יש לנו אובייקטים מרוחקים אשר מדמים שרתים מרוחקים.

?? איך אנו משתמשים בטכנולוגיה זו RemoteDtpFactoryכל שרת משנה מריץ שרת אשר מבצע רישום של אובייקט שנקרא ◦

.Registration protocolשמבוצע בשרת הראשי דרך הפרוטוקול שהגדרנו DtpFactory הזה ושומר זאת ב DtpFactory השרת הראשי מקבל רפרנס מרוחק ל ◦

לוקלי אצלו . * ובכך הוא יכול להפעיל מתודות על אובייקט זה.

: השרת הראשי קורא למתודה על ה client עם dataבכל בקשת חיבור ◦RemoteDtpFactory אשר מייצרת RemoteDtp ורושמת אותו בשירות ה RMI שמקבל

רפירנס אליו ומתחיל להפעיל עליו את המתודות של שליחת הקובץ שנמצאות בצד ה client.

Page 18: Reliable Distributed Media Server
Page 19: Reliable Distributed Media Server

דרך אחד Data מחליט לבצע שליחת ה Managerה מהשרתים המשניים הזמינים לפי אחת משלושת המדיניות

הבאות :

הוא מבצע קריאת מתודה על השרתים ומודד זמן :(fastest)הכי מהיר ◦תגובה של כל אחד ובוחר את הכי מהיר.

מבצע שאילתה על השרתים לגבי מספר (lowest load :)הפחות עמוס ◦ הקיימים בשרת ובוחר את זה בעל המספר הכי נמוך.DTPsה

בוחר שרת באופן אקראי. : ( random)רנדומאלית ◦

המדיניות נקבעת בזמן הרצת הManager דרך ארגומנט command line או דרך קובץ הקונפיגורציה ini.

Page 20: Reliable Distributed Media Server
Page 21: Reliable Distributed Media Server
Page 22: Reliable Distributed Media Server

לאפליקציית השרתmanager אנו קוראים RFtpServer והיא אוסף של classes אשר ואחד ללינוקס: windows , הכנו שני סקריפטים להרצה אחד ל jarמוכלים בקובץ

Start_ftp_server.bat: for windowsStart_ftp_server.sh: for linux אפשר להריץ עם הארגומנט–h:ולראות איזה פרמטרים מקבל השרת

usage: java FtpServer server [--host=<host ip> | --port=<host tcp port| <

[...

-- base_dir <arg> The Base Ftp dir

-- config <arg> The configuration file path

- h,--help Print help and exit

-- host <arg> The ip or hostname to bind on, default: Any

-- log_file <arg> The log file path, default: std_error

-- log_p <arg> The logging priority, default: 3

- m,--man_port <arg> The tcp port for managment, default: 2122

- n,--name <arg> Server name, default: Reliable FtpServer 2008 v1.0

-- no_gui Disable GUI: enabled

- p,--port <arg> The tcp port to bind, default: 21

-- policy <arg> The Policy of selecting DTPs

לשרת גם יש קובץ קונפיגורציה ini שניתן דרכו גם לתת את כל הפרמטרים וגם נתונים לגבי איזה משתמשים ניתן להכניס למערכת וגם איפה נמצאת התיקייה הראשית של קבצי

המדיה.

Page 23: Reliable Distributed Media Server

בצורה דומה אפשר להריץ את שרתי המשנה כך שצריך לספק לכל אחד את או דרך קובת command line של השרת הראשי או דרך ארגומנט IPכתובת ה

.iniקונפיגורציה הרצה עם–h :תיתן

usage: java dtpserver.jar server [--host=<host ip> | --port=<host tcp port> | ...]

--base_dir <arg> The FTP Base Dir

--config <arg> The configuration file path

--connectivity_port <arg> The Connectivity port, default: 2124

-h,--help Print help and exit

--host <arg> The ip or hostname to bind on, default: Any

--log_file <arg> The log file path, default: std_error and dtp_log.txt

--log_p <arg> The logging priority, default: 3

-m,--man_port <arg> The Master machine tcp port for managment, default: 2122

--master_host <arg> The ip or hostname of the master machine

-n,--name <arg> Server name, default: Smart Ftp Server

-p,--port <arg> The tcp port to bind for RMI, default: 2123

Page 24: Reliable Distributed Media Server

מה יש לנו עד עכשיו ?! לכל דבר שיכול גם לשימוש שיתוף FTPהשרת הוא שרת ◦

קבצים.השרת נותן לנו כוח עצום בכך שהוא מחלק את העבודה בין ◦

כל השרתים עם אופציה לשינוי מדיניות בחירת שרתים.

: אבל מה לגבי שידור שהשתבש מסיבה כלשהי למשל. נפילת השרת שמזרים את המדיה, בעיות ברשת וכו' ...

ובכן ... כדי להתגבר על בעיות כאלו ולתת את היכולת לשחזורשידור המדיה מאותה נקודה בה קרתה הנפילה ,הצד של

הלקוחחייב לשתף פעולה .

Page 25: Reliable Distributed Media Server

קרתה באיזה נקודת זמן מתחילת השידור יודעהלקוח מצורת עבודתו. התקלה

תיאורטית : הלקוח יכול לבקש פעם נוספת את אותו קובץ ולספק פקודת ה FTP-REST אשר קובעת לשרת מאזיה בית בקובץ המדיה צריך להתחיל את

השידור.

היינו חייבים לערב את הclient לבצע זאת מכיוון שמאוד קשה לשחזר חיבור TCP של מערכת ההפעלה וזה מצריך המון עבודה. network stackשבור מבלי להתעסק ב

ולכן שינוי קל בclient שאפילו הרבה clients : כבר תומכים בפעולה זו והיא auto-reconnect

- מכיוון שתמיד ישנם שרתים משניים )ההנחה שיש הרבה שרתים משניים( ולכן בכל רגע שהלקוח מבקש את המדיה שוב נמצא שרת זמין אחר)מזה

שנפל( ונתן לו לשלוח ללקוח את המדיה מאותה נקודה .

ברגע ששרת נופל הManager.זורק אותו מרשימת השרתים הזמינים

Page 26: Reliable Distributed Media Server

השתמשנו בVLC: בצד הלקוח ◦VLC הינה תוכנית אשר משמשת גם כ client וגם כ server

לסרטים. external אשר לא מחייבת התקנת stand aloneתוכנית זו הינה ◦

codecs והיא מכילה כל codec .שאפשר לחשוב עליו

בחרנו לספקplug-in לתוכנית זו מכיוון שהיא נפוצה מאוד , אנו משתמשים בה רק webוגם כן ניתנת לאינטגרציה בדפי

שלה . streaming ולא משתמשים ביכולות ה clientכ הכנוplug-in עבור גרסת ה windows 0.9.8 האחרונהa ,

.auto-reconnectאשר הוסיף יכולת

Page 27: Reliable Distributed Media Server

תוספת שלנו

Page 28: Reliable Distributed Media Server

בחירתAutoReconnect גורמת לשרת לנסות וחדש את פעמים . Manager RetryCountהחיבור עם ה

אחרי שמנסים מס' זה של ניסיונות ה client קובע שאי אפשר לחדש את החיבור ונותן הודעת שגיאה שהשרת נפל.

הוספנו גם אפשרות לשינוי זמן ההחלטה על חיבור מת, כלומר :◦ לא מקבל מידע Client אז אם ה 1000אם בוחרים שדה זה להיות

אזי מחליטים ששרת ה (msec 1000) במשך שנייה DTPבחיבור ה DTP : נפל וצריך חיבור חדש בתנאי שהאופציה AutoReconnect פעילה .ולא נגמרו הניסיונות

Page 29: Reliable Distributed Media Server

Secondary Server)Dtp Server(

Manager )Pi Server(

VLC Client-Include Our plug-in

Page 30: Reliable Distributed Media Server

:למדנו הרבה דברים מהפרויקט הזה

,FTP, RTSP- הבנת פרוטוקולי רשת והעברת מדיה כגון : 1◦

RTP .

- תכן ותכנות מערכת מבוזרת.2◦

.Java- התנסות טובה בשפת 3◦

. Java Rmi- שימוש בטכנולוגיה מתקדמת 4◦

.VLC לאפליקציה קיימת plug-in- הוספת 5◦

- בניית מערכת תוכנה עמידה בפני תקלות כגון נפילות רשת 6◦

או נפילת שרת והתאוששות.

Page 31: Reliable Distributed Media Server

הוספתGUI לשרת הראשי Manager .

הוספת מנגנון לאסוף סטטיסטיקות לגבי כל החיבורים של

.recoveryלקוחות ואחוזי נפילות ו

מימוש מלא שלFTP .כך שיתמוך גם בהעלאת קבצי מדיה

הוספת מערכת סנכרון קבצים בין כל השרתים כך שבעליית

כל שרת משנה הוא יקבל את כל הקבצים החסרים לו.

.מנגנון להתאוששות מהמצב שגם השרת הראשי נופל

Page 32: Reliable Distributed Media Server

FTP: RFC959- http://www.faqs.org/rfcs/rfc959.html

Java Tutorial-http://java.sun.com/docs/books/tutorial

Java RMI-http://java.sun.com/docs/books/tutorial/rmi/index.html

VLC-http://www.videolan.org/

Page 33: Reliable Distributed Media Server