เหตุใดคอมพิวเตอร์ไคลเอนต์จึงไม่ให้ข้อมูลกับไคลเอนต์อื่นผ่านทางอินเทอร์เน็ตเพื่อลดแบนด์วิธของเซิร์ฟเวอร์

ยกตัวอย่างบริการโฮสต์รูปภาพ เพื่อลดแบนด์วิธ/จำนวนครั้งที่คุณให้บริการภาพ เป็นไปได้ไหมที่ลูกค้าที่เพิ่งดูภาพแล้วให้บริการไฟล์ภาพเดียวกันนั้น (หรือบางส่วนของไฟล์นั้น) ให้กับลูกค้ารายอื่นที่ต้องการดูหน้าเดียวกัน /ภาพ? มีปัญหาที่เกี่ยวข้องกับความปลอดภัยที่ป้องกันไม่ให้สิ่งนี้เกิดขึ้นหรือว่าฉันขาดความเข้าใจในเทคโนโลยีที่ทำให้ฉันไม่สามารถเห็นเหตุผลที่ชัดเจนว่าเหตุใดสิ่งนี้จึงไม่ทำงาน

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

แก้ไข: ฉันทราบถึง P2P และ bittorrents ฉันถามว่าทำไมไม่ใช้แนวคิดนี้กับกิจกรรมท่องเว็บทั่วไป?


person Community    schedule 26.09.2009    source แหล่งที่มา
comment
BBC กำลังพิจารณาทำเช่นนี้สำหรับบริการวิดีโอออนดีมานด์ มีการคัดค้านจาก ISP ที่ต้องพึ่งพาคุณในการดาวน์โหลดข้อมูลจำนวนมากแต่ให้บริการน้อยมาก   -  person Martin Beckett    schedule 27.09.2009
comment
น่าสนใจมาก - แต่ ISP สามารถควบคุมซอฟต์แวร์ที่สร้างและใช้งานได้หรือไม่?   -  person    schedule 27.09.2009
comment
พวกเขาสามารถบล็อกการส่ง/รับข้อมูลของคุณ - ปกติก็เพียงพอแล้ว!   -  person Martin Beckett    schedule 27.09.2009


คำตอบ (10)


โมเดลที่คุณอธิบายคือโมเดล P2P และนั่นคือสิ่งที่โปรโตคอลบางตัว (เช่น BitTorrent ทำงาน)

หากคุณถามว่าทำไมไม่ใช้โปรโตคอลประเภทนี้สำหรับเว็บไซต์หรือการใช้งานภายในเพื่อวัตถุประสงค์ทั่วไป อาจมีเหตุผลหลักสองประการ:

  1. มันอาจจะเป็นเรื่องยากมากที่จะทำในเชิงเทคโนโลยี: คุณจะต้องสามารถเปลี่ยนเส้นทางไคลเอนต์ไปหากันได้อย่างชาญฉลาด คุณจะต้องสามารถทำให้ไคลเอนต์ส่งไฟล์ได้จริง (ซึ่งจะต้องมีการเข้าถึงระบบ ซึ่งเป็นสิ่งที่คุณไม่มีโดยทั่วไป) คุณอาจต้องคำนึงถึงสิ่งต่างๆ เช่น ความเร็วของลูกค้าแต่ละราย (เช่น คุณไม่ต้องการให้ใครบางคนใช้การเชื่อมต่อแบบเก่าและช้ามากที่ให้บริการ อัพรูปภาพ เนื่องจากเว็บไซต์ของคุณจะดูช้ามาก) มีสาเหตุหลายประการ นี่เป็นเพียงปัญหาที่เกิดขึ้นเฉพาะหน้าที่สุดที่ฉันนึกออก
  2. มันจะจบลงอย่างเลวร้ายกับผู้คน: แม้ว่าคุณจะสามารถคิดหาวิธีในการทำเช่นนี้ได้ แต่เรื่องแบบนี้ก็อาจจะไม่เข้ากันได้ดีกับผู้ใช้เว็บไซต์ของคุณ . โดยทั่วไปผู้ใช้ไม่ต้องการ "แบ่งปัน" พื้นที่คอมพิวเตอร์/แบนด์วิธ/อื่นๆ หลายครั้งที่บริษัทต่างๆ ใส่ "สปายแวร์" หรือสิ่งอื่นที่ซ่อนอยู่ในคอมพิวเตอร์ของใครบางคน พวกเขาได้รับการประชาสัมพันธ์ที่แย่มาก

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

person Edan Maor    schedule 26.09.2009
comment
ถูกต้อง - ฉันถามว่าทำไมไม่ทำสิ่งนี้กับเว็บไซต์ เกี่ยวกับ # 2); ข้อดีสำหรับผู้ใช้: ก) ค่าแบนด์วิธจะลดลง ไซต์ไม่จำเป็นต้องแสดงโฆษณามากนัก B) ไซต์อาจปรับขนาดได้ดีขึ้น = เวลาหยุดทำงานน้อยลง C) แม้ว่านี่จะเป็นค่าแทนเจนต์ แต่การไม่มีเซิร์ฟเวอร์กลางโดยสิ้นเชิงอาจให้ความสะดวกสบายแก่ผู้ที่ไซต์ของเขาถูกบล็อกโดยบุคคลอื่น เช่น: เว็บไซต์ปฏิวัติที่ถูกบล็อกโดยประเทศเผด็จการ D) ผู้คนดูเหมือนจะตอบสนองต่อการระดมทุนจากมวลชนในทางที่ดี สิ่งที่พวกเขารู้สึกว่ากำลังสร้างความแตกต่าง เช่น SETI@home, recaptcha ฯลฯ - person ; 27.09.2009
comment
แม้ว่าคุณจะทำให้มันใช้งานได้ในทางเทคนิคและได้รับประโยชน์ทั้งหมดเหล่านั้น แต่ฉันก็ยังคิดว่าคุณคงเป็นเรื่องยากลำบากมากที่จะทำให้ผู้คนเข้าใจเรื่องทั้งหมดนี้ SETI@home แม้จะได้รับความนิยม แต่ก็เป็นที่รู้จักของประชากรออนไลน์เพียงส่วนน้อยเท่านั้น เพียงลองให้ผู้ใช้ทุกคนมาที่ไซต์ของคุณเพื่อติดตั้งบางอย่าง เนื่องจากการกล่าวอ้างที่คลุมเครือจะทำให้เว็บไซต์มีการโฆษณาน้อยลง สำหรับ Recaptcha นั้นง่ายต่อการบังคับให้ผู้ใช้ใช้งาน และนอกจากนี้ ฉันไม่คิดว่าคนส่วนใหญ่จะรู้ด้วยซ้ำว่ามันมีจุดประสงค์ที่ดี พวกเขาแค่รู้ว่าต้องป้อนคำเพื่อเข้าสู่ไซต์ - person Edan Maor; 27.09.2009
comment
นั่นเป็นเรื่องจริง ฉันสงสัยว่าจะเป็นไปได้หรือไม่ที่จะทำโดยไม่ต้องให้ผู้ใช้ทำตามขั้นตอนการติดตั้งและขัดจังหวะประสบการณ์การท่องเว็บของพวกเขา เว็บเซิร์ฟเวอร์อ่านข้อมูลจำนวนเล็กน้อยจากเบราว์เซอร์ของคุณแล้ว ทำไมไม่ส่งข้อมูลเพิ่มอีกเล็กน้อยและทำให้ไคลเอนต์อื่น ๆ สามารถใช้งานได้ในส่วนที่เข้ารหัสขนาดเล็กล่ะ - person ; 27.09.2009

หากต้องการ "ให้บริการ" ข้อมูลเช่นนี้ ไคลเอนต์แต่ละรายจะต้องติดตั้งเซิร์ฟเวอร์บนคอมพิวเตอร์ของตน -- และสามารถเข้าถึงได้ทั่วโลก (ซึ่งไม่ใช่เรื่องง่ายเสมอไปเมื่อคุณอยู่เบื้องหลัง NAT, พร็อกซี, เครือข่ายองค์กร หรือ อะไรก็ได้).

มีโปรโตคอลที่ทำเช่นนั้น (เช่น โปรโตคอล Peer to Peer จำนวนมาก แต่โปรโตคอลเหล่านั้นทำงานได้ดีกับไฟล์ขนาดใหญ่มากกว่ารูปภาพขนาดเล็ก) แต่นั่นไม่ใช่วิธีการทำงานของเว็บ

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

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

person Pascal MARTIN    schedule 26.09.2009
comment
ตราบใดที่มันมาถึงก็ต้องใช้แพ็กเก็ต UDP กับ TCP ในการจัดส่ง การเล่นเกมใช้ UDP เพราะไม่สำคัญว่าคุณจะสูญเสียการเคลื่อนไหวบนแผนที่ที่กำหนดหรือไม่ ในขณะที่ลำดับบิต/ไบต์มีความสำคัญเมื่อถ่ายโอนไฟล์ข้อมูล - person OMG Ponies; 27.09.2009

เครือข่ายแบบเพียร์ทูเพียร์ใช้งานได้กับเนื้อหาคงที่เท่านั้น เนื่องจากความยุ่งยากในการซิงค์ไฟล์ที่กำหนด

person OMG Ponies    schedule 26.09.2009

ด้วยเหตุผลหลายประการ:

  • ลูกค้ามีแนวโน้มที่จะอยู่เบื้องหลัง NAT ซึ่งห้ามไม่ให้ให้บริการข้อมูลโดยตรงกับลูกค้ารายอื่น
  • ไคลเอนต์มักจะมีการเชื่อมต่อที่แย่กว่าเซิร์ฟเวอร์
  • คุณไม่สามารถพึ่งพาไคลเอนต์ที่มีแบนด์วิธที่เหมาะสมหรือให้บริการตามที่พวกเขาอ้างว่าจะทำได้จริง หากคุณสนใจว่าผู้ใช้จะได้รับประสบการณ์การใช้งานไซต์ของคุณอย่างไร คุณต้องแน่ใจว่าเนื้อหาได้รับการแสดงอย่างรวดเร็ว ไม่ใช่เนื้อหาที่จับต้องได้
  • คุณต้องมีวิธีในการตรวจสอบว่าข้อมูลที่คุณได้รับไม่ได้รับการแก้ไขโดยลูกค้าที่คุณได้รับ (หรือลูกค้า พวกเขา ได้รับมาและอื่น ๆ ) - สิ่งนี้จะต้องมี ลายเซ็นดิจิทัล ซึ่งจะบ่งบอกถึงปัญหาและความยุ่งยากเช่นเดียวกับ SSL
  • จะต้องมีการปรับปรุง HTTP ครั้งใหญ่ (หากไม่ใช่การออกแบบใหม่ทั้งหมด) เพื่อรองรับสิ่งนี้ การสนับสนุนลูกค้าจะขาด ๆ หาย ๆ อย่างดีที่สุด โดยเฉพาะอย่างยิ่งโดยไม่มีแรงจูงใจให้ลูกค้าสนับสนุน
person Nick Johnson    schedule 26.09.2009

มันถูกเรียกว่า P2P การใช้งานที่ประสบความสำเร็จที่สุดคือ bittorrent เหมาะมากสำหรับไฟล์ขนาดใหญ่ (Linux distros, open office ฯลฯ) ไม่มีประสิทธิภาพมากนักสำหรับไฟล์ขนาดเล็ก

แพตช์ World of Warcraft จัดส่งโดยระบบที่คล้ายกันเช่นกัน

person Macha    schedule 26.09.2009
comment
Peer-to-peer สำหรับพวกเราที่ถูกท้าทาย TLA - person Robert Harvey; 27.09.2009
comment
แต่ทำไมเราไม่สามารถนำหลักการเบื้องหลัง torrents ไปใช้กับกิจกรรมท่องเว็บทั่วไปได้? - person ; 27.09.2009
comment
Bittorrent เป็นโปรโตคอลแบบเพียร์ทูเพียร์ (P2P) ไม่ใช่การใช้งาน - person OMG Ponies; 27.09.2009
comment
BitTorrent ต้องการการเข้าถึงระบบไฟล์ของคุณ เว็บเบราว์เซอร์ไม่ได้รับอนุญาตให้ทำเช่นนี้ ด้วยเหตุผลด้านความปลอดภัย - person Robert Harvey; 27.09.2009
comment
@harvey แต่ข้อมูลจะไม่อยู่ในแคชของเบราว์เซอร์ของคุณด้วยใช่ไหม เป็นไปได้หรือไม่ที่จะให้บริการข้อมูลบางส่วนนี้แก่ไคลเอนต์อื่นที่ร้องขอข้อมูลเดียวกันโดยไม่ให้สิทธิ์เข้าถึงระบบไฟล์ของคุณ - person ; 27.09.2009
comment
แคชเก็บไว้ที่ไหน? (คำตอบ: บนดิสก์... ในระบบไฟล์) - person Dave Sherohman; 27.09.2009

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

โมเดลการกระจายแบบ P2P นั้นเป็นไปได้อย่างแน่นอน แต่การส่งมอบตามข้อกำหนดทั้งสามดังกล่าวด้วย P2P นั้นทำได้ยากกว่าเมื่อเปรียบเทียบกับไคลเอนต์-เซิร์ฟเวอร์

person Frank Krueger    schedule 26.09.2009

P2P ค่อนข้างครอบคลุมในคำตอบอื่น ๆ แต่ข้อกังวลเพิ่มเติมคือโครงสร้างพื้นฐานในปัจจุบัน สำหรับการเข้าถึงอินเทอร์เน็ตระดับผู้บริโภค (เคเบิล, DSL ฯลฯ) แบนด์วิธขาออกมักจะเป็นเพียงเศษเสี้ยวของขาเข้าเท่านั้น ตัวอย่างเช่น ความเร็วในการดาวน์โหลดผ่านสายเคเบิลมักจะอยู่ที่ 5-6 Mbps แต่ความเร็วในการอัปโหลดมักจะอยู่ในช่วง 400K หรือน้อยกว่า

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

person jnoss    schedule 26.09.2009
comment
อ่า เรื่องนี้น่าสนใจ แต่หากลูกค้าสามารถอัปโหลดข้อมูลได้เพียงเล็กน้อยเท่านั้น จะดีกว่าไม่มีเลยหรือ? หน้าเว็บและรูปภาพส่วนใหญ่มีขนาดน้อยกว่า 400kb มาก เว้นแต่จะเป็นรูปภาพหรือวิดีโอที่มีความละเอียดสูง - person ; 27.09.2009
comment
อัตรานี้ยังคงต่ำกว่ามาก ดังนั้นผู้ใช้ฝั่งรับจะได้รับแบนด์วิธเพียงเศษเสี้ยวของเซิร์ฟเวอร์ที่มาจากเซิร์ฟเวอร์ แม้ว่าอ็อบเจ็กต์จะน้อยกว่า 400k ก็ตาม นอกจากนี้หากใช้ DSL แทนสายเคเบิล ก็อาจมีค่าเพียง 40-60K เท่านั้น สิ่งนี้เพิ่มความท้าทายในการสร้างประสบการณ์ผู้ใช้ที่สอดคล้องกันบน P2P - person jnoss; 27.09.2009

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

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

person JB King    schedule 26.09.2009

ด้วยความมหัศจรรย์ของ UDP เล็กน้อย ทำให้ Adobe Flash Player สามารถทำงานร่วมกับไคลเอนต์อื่นๆ ในเครือข่าย P2P เฉพาะกิจได้ ใช้การแชทผ่านเครือข่ายที่น่าสนใจพอสมควรเพื่อเจาะรูผ่านการตั้งค่า NAT

http://labs.adobe.com/wiki/index.php/Stratus:FAQ

http://en.wikipedia.org/wiki/Real_Time_Media_Flow_Protocol

http://www.adobe.com/devnet/flashplayer/articles/rtmfp_stratus_app.html

http://www.flashrealtime.com/tuts/p2p-in-flash.html

person spender    schedule 26.09.2009

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

มีการบรรยายที่น่าสนใจเกี่ยวกับเทคนิคเพื่อหลีกเลี่ยงความซ้ำซ้อนของข้อมูลใน เราเตอร์โดย Van Jacobson โดยใช้การอ้างอิงระดับอื่นเหนือ TCP/IP

person Pete Kirkham    schedule 27.09.2009