บริการแบบดาวน์สตรีมและอัพสตรีมคือวิธีใด


45

สำหรับระบบที่ประกอบด้วยบริการหลายอย่างที่โทรหากัน (เช่น Front End -> Backend -> Storage) ฉันมักจะได้ยินคนที่ใช้คำศัพท์เช่นบริการ "downstream" หรือ "upstream" ฉันไม่ชัดเจนว่าทิศทางเหล่านี้หมายถึงอะไร กระแสข้อมูลในทั้งสองทิศทาง คำขอไหลจากการที่ผู้ใช้หันหน้าไปทางบริการแบ็กเอนด์มากขึ้น แต่การตอบสนองไหลไปในทิศทางตรงกันข้าม


3
ที่น่าสนใจคือข้อกำหนด HTTP RFC 7230 มีคำจำกัดความของคำว่า "อัปสตรีม" และ "ดาวน์สตรีม" ในส่วน 2.3: tools.ietf.org/html/rfc7230#section-2.3
แจ็ค

คำตอบ:


56

บริการดาวน์สตรีมเป็นบริการที่ใช้บริการอัปสตรีม โดยเฉพาะอย่างยิ่งพวกเขาขึ้นอยู่กับบริการต้นน้ำ ดังนั้น front-end จะล่องไปที่ back-end เพราะมันขึ้นอยู่กับ back-end ส่วนหลังสามารถดำรงอยู่อย่างมีความหมายโดยไม่ต้องใช้ส่วนหน้า แต่ส่วนหน้านั้นไม่เข้าท่าหากไม่มีส่วนหลัง

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


ผมคิดว่ามันควรจะเป็น"บริการปลายน้ำ"ในสถานที่ของบริการ "ปลายน้ำ"
Nawaz

8

น่าเสียดายที่มีความแตกต่างในความเห็นเกี่ยวกับความหมายของต้นน้ำ / ปลายน้ำ เมื่อพูดถึงสถาปัตยกรรมของระบบฉันกำหนดดังต่อไปนี้:

เมื่อพิจารณาถึงระบบที่มีความกังวลระบบที่เริ่มต้นการแลกเปลี่ยนข้อความ / ข้อมูลไปยังระบบที่เกี่ยวข้องนั้นคือระบบต้นน้ำและระบบที่ระบบที่เกี่ยวข้องนั้นขึ้นอยู่กับ (เช่นที่ระบบของฉันเริ่มต้นแลกเปลี่ยนข้อมูล) เป็นระบบดาวน์สตรีม

ลิงค์นี้จาก IBM อธิบายการโต้ตอบกับหนึ่งในผลิตภัณฑ์ของพวกเขายืนยันมุมมองนี้: การรวมเข้ากับระบบต้นน้ำและปลายน้ำhttps://www.ibm.com/support/knowledgecenter/th/SSWSR9_11.3.0/com.ibm.pim.dev.doc /integration/pim_con_dev_creatingjobsforintegrationcontainer.html

ระบบอัพสตรีมคือระบบใด ๆ ที่ส่งข้อมูลไปยังระบบ Collaboration Server ระบบดาวน์สตรีมเป็นระบบที่รับข้อมูลจากระบบ Collaboration Server

เมื่อพิจารณาคำศัพท์ 'upstream' และ 'downstream' มันอาจช่วยในการเปรียบเทียบกับแม่น้ำ หากคุณวางข้อความ (ข้อมูล) ในแม่น้ำจะไหลจากต้นน้ำ (ผู้เริ่มต้น) ไปยังปลายน้ำ (ผู้รับ)

โดยทั่วไปฉันพบว่าสถาปนิกและนักพัฒนามิดเดิลแวร์ใช้คำจำกัดความนี้และนักพัฒนาเว็บตรงกันข้าม (อาจเป็นเพราะ 'อัพโหลด')

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

ในฐานะที่เป็น @Jack บันทึก RFC7230 tools.ietf.org/html/rfc7230#section-2.3มีสิ่งนี้:

คำว่า "อัปสตรีม" และ "ดาวน์สตรีม" ใช้เพื่ออธิบาย
ข้อกำหนดเกี่ยวกับทิศทางที่สัมพันธ์กับโฟลว์ข้อความ:
ข้อความทั้งหมดไหลจากอัปสตรีมไปยังดาวน์สตรีม

ฉันสนใจที่จะดูคะแนนโหวตซึ่งการใช้งานบ่อยที่สุดคือ!


1
นี่เป็นเพียงความสับสนเพราะคุณสับสนในเรื่องนี้ ไม่มีความแตกต่างเพียงความแตกต่างในมุมมอง
Martin Maat

@MartinMaat ฉันไม่เห็นด้วยกับประโยคแรกของคุณและเห็นด้วยกับที่สองของคุณ
roj

3

วิธีคิดที่ดีที่สุดคือคิดถึงแม่น้ำ

ส่วนปลายน้ำของแม่น้ำลาดเทรับน้ำใด ๆ เว้นแต่ว่ามาจากต้นน้ำเช่นปลายน้ำขึ้นอยู่กับต้นน้ำสำหรับน้ำ

หากใครบางคนทำลายส่วนท้ายน้ำของแม่น้ำสิ่งนี้จะไม่ส่งผลกระทบต่อต้นน้ำ หากใครบางคนทำลายส่วนต้นน้ำของแม่น้ำสิ่งนี้จะส่งผลกระทบต่อท้ายน้ำเช่นมันจะไม่ได้รับน้ำ

ดังนั้นบริการดาวน์สตรีมจึงขึ้นอยู่กับบริการอัปสตรีม หากบริการอัปสตรีมถูกลบบริการดาวน์สตรีมจะไม่ทำงานอย่างถูกต้อง


และสำหรับความคมชัดที่เพิ่มขึ้นเล็กน้อย; ในความสัมพันธ์กับไคลเอนต์เซิร์ฟเวอร์ CRUD มาตรฐานปลายทั้งสองมีทั้งต้นน้ำและปลายน้ำซึ่งกันและกัน ลูกค้าไม่สามารถรับข้อมูลหรือการอัพเดทใด ๆ ได้หากเซิร์ฟเวอร์ล่มและเซิร์ฟเวอร์ไม่มีคำแนะนำในการดำเนินการหากไม่มีไคลเอ็นต์
Delioth

1
@Delioth ไม่เห็นด้วย แบ็คเอนด์สามารถมีลูกค้าได้มากมาย แต่ไม่ได้ขึ้นอยู่กับลูกค้ารายใดรายหนึ่ง หากคุณลบลูกค้าแบ็กเอนด์จะยังคงทำงานได้ ไคลเอ็นต์สามารถมีแบ็กเอนด์จำนวนมากที่สามารถใช้ได้ หากลบแบ็กเอนด์หนึ่งรายการโดยที่ลูกค้าไม่รู้ตัวไคลเอ็นต์จะทำงานไม่ถูกต้อง ไคลเอ็นต์คือดาวน์สตรีม แบ็คเอนด์เป็นอัปสตรีม
Gaz_Edge

1

นี่อาจเป็นปัญหาทางภาษาและภูมิศาสตร์มากกว่าปัญหาทางเทคนิค

  • คำขอข้อมูลเริ่มต้นขึ้น มันมาจากระบบดาวน์สตรีม

  • การตอบสนองต่อการร้องขอข้อมูล (ข้อมูลที่ร้องขอ) จะเป็นแบบดาวน์สตรีมและถูกส่งโดยระบบอัปสตรีม

ไม่มีความแตกต่างระหว่างมุมมอง IBM แบบคลาสสิกกับการใช้ข้อกำหนดของชุมชนเว็บในปัจจุบัน

  • ผู้ให้บริการ (เซิร์ฟเวอร์) จะอยู่ที่ต้นน้ำเมื่อเทียบกับผู้ให้บริการและส่งข้อมูลไปยังผู้บริโภค

  • ผู้ใช้บริการ (ลูกค้า) จะอยู่ที่ปลายน้ำเมื่อเทียบกับผู้ให้บริการและส่งคำขอไปยังผู้ให้บริการ

บทบาทเชิงทฤษฎีของระบบทางกายภาพสามารถเปลี่ยนแปลงได้ทันทีและทิศทางของกระแสระหว่างระบบเหล่านั้นจะเป็นเช่นไร ในเครือข่ายเพียร์ทูเพียร์อาจเป็นกรณีนี้

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.