ทำความเข้าใจเกี่ยวกับโบรกเกอร์ข้อความ เรียนรู้กลไกการส่งข้อความด้วย ActiveMQ และ Kafka บทที่ 1

Hello!

เริ่มแปลหนังสือเล่มเล็ก:
«ทำความเข้าใจเกี่ยวกับโบรกเกอร์ข้อความ"
ผู้แต่ง: Jakub Korab ผู้จัดพิมพ์: O'Reilly Media, Inc. วันที่เผยแพร่: มิถุนายน 2017 ISBN: 9781492049296

จากบทนำสู่หนังสือ:
" ... หนังสือเล่มนี้จะสอนคุณถึงวิธีคิดเกี่ยวกับระบบการส่งข้อความผ่านนายหน้าโดยการเปรียบเทียบและเปรียบเทียบความแตกต่างของเทคโนโลยีนายหน้ายอดนิยมสองแห่ง ได้แก่ Apache ActiveMQ และ Apache Kafka จะสรุปกรณีการใช้งานและแรงจูงใจในการพัฒนาที่ทำให้นักพัฒนาของพวกเขาใช้วิธีการที่แตกต่างกันอย่างมากในพื้นที่เดียวกันของการส่งข้อความผ่านนายหน้าระหว่างระบบ เราจะพิจารณาเทคโนโลยีเหล่านี้ตั้งแต่เริ่มต้นและเน้นผลกระทบของตัวเลือกการออกแบบที่แตกต่างกันไปพร้อมกัน คุณจะได้รับความเข้าใจอย่างลึกซึ้งเกี่ยวกับผลิตภัณฑ์ทั้งสอง เข้าใจว่าควรใช้และไม่ควรใช้อย่างไร และเข้าใจว่าควรระวังอะไรบ้างเมื่อพิจารณาเทคโนโลยีการส่งข้อความอื่นๆ ในอนาคต ... ”

ส่วนที่แปลแล้ว:
บทที่ 1 บทนำ
บทที่ 3 คาฟคา

ฉันจะโพสต์บทที่เสร็จสมบูรณ์ตามที่มีการแปล

บทที่ 1

การแนะนำ

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

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

เสียงที่คุ้นเคย?

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

หากปราศจากความเข้าใจอย่างลึกซึ้งเกี่ยวกับวิธีการทำงานของโบรกเกอร์ ผู้คนจะกล่าวอ้างที่สมเหตุสมผลเกี่ยวกับระบบการส่งข้อความของพวกเขา เช่น:

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

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

หนังสือเล่มนี้จะสอนคุณถึงการให้เหตุผลเกี่ยวกับระบบการส่งข้อความผ่านนายหน้าโดยการเปรียบเทียบและเปรียบเทียบความแตกต่างของเทคโนโลยีนายหน้ายอดนิยมสองแห่ง ได้แก่ Apache ActiveMQ และ Apache Kafka จะสรุปกรณีการใช้งานและแรงจูงใจในการพัฒนาที่ทำให้นักพัฒนาของพวกเขาใช้วิธีการที่แตกต่างกันอย่างมากในพื้นที่เดียวกันของการส่งข้อความผ่านนายหน้าระหว่างระบบ เราจะพิจารณาเทคโนโลยีเหล่านี้ตั้งแต่เริ่มต้นและเน้นผลกระทบของตัวเลือกการออกแบบที่แตกต่างกันไปพร้อมกัน คุณจะได้รับความเข้าใจอย่างลึกซึ้งเกี่ยวกับผลิตภัณฑ์ทั้งสอง เข้าใจว่าควรใช้และไม่ควรใช้อย่างไร และเข้าใจว่าควรระวังอะไรบ้างเมื่อพิจารณาเทคโนโลยีการส่งข้อความอื่นๆ ในอนาคต

ก่อนที่เราจะเริ่ม มาดูพื้นฐานกันก่อน

ระบบส่งข้อความคืออะไรและทำไมจึงจำเป็น

เพื่อให้สองแอปพลิเคชันสื่อสารกันได้ ก่อนอื่นต้องกำหนดอินเทอร์เฟซ คำจำกัดความของอินเทอร์เฟซนี้รวมถึงตัวเลือกของการขนส่งหรือโปรโตคอล เช่น HTTP, MQTT หรือ SMTP และการต่อรองของรูปแบบข้อความที่ระบบจะแลกเปลี่ยน การดำเนินการนี้อาจเป็นกระบวนการที่เข้มงวด เช่น การกำหนด XML schema ที่มีข้อกำหนดค่าใช้จ่ายเพย์โหลดสำหรับข้อความ หรืออาจเป็นทางการน้อยกว่ามาก เช่น ข้อตกลงระหว่างนักพัฒนาสองคนที่บางส่วนของคำขอ HTTP จะมีตัวระบุไคลเอ็นต์

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

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

มาดูการเปรียบเทียบสองสามข้อสำหรับประเภทของปัญหาที่ระบบส่งข้อความแก้ไข และแนะนำคำศัพท์พื้นฐานบางคำ

จุดต่อจุด

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

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

คำว่า "ทนทาน" ใช้กับคิว ความเชื่อถือได้ เป็นคุณสมบัติของบริการที่รับประกันว่าระบบการส่งข้อความจะเก็บข้อความไว้ในกรณีที่ไม่มีสมาชิกที่ใช้งานอยู่จนกว่าผู้บริโภคจะสมัครรับข้อมูลในคิวการส่งข้อความ

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

สำนักพิมพ์-สมาชิก

Gabriella กดหมายเลขการประชุม ขณะที่เธอเชื่อมต่อกับการประชุม เธอได้ยินทุกสิ่งที่ผู้พูดพูดพร้อมกับผู้เข้าร่วมการโทรคนอื่นๆ เมื่อเธอสลบไป เธอพลาดสิ่งที่พูดไป เมื่อเชื่อมต่อใหม่ เธอยังคงได้ยินสิ่งที่กำลังพูดอยู่

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

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

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

รุ่นไฮบริด

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

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

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

โมเดลไฮบริดไม่ใช่ของใหม่และสามารถนำไปใช้กับระบบการส่งข้อความส่วนใหญ่ รวมถึงทั้ง ActiveMQ (ผ่านปลายทางเสมือนหรือแบบผสมที่รวมหัวข้อและคิว) และ Kafka (โดยปริยาย เป็นคุณสมบัติพื้นฐานของการออกแบบปลายทาง)

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

แปลเสร็จแล้ว: tele.gg/middle_java

ส่วนที่แปลถัดไป: บทที่ 3 คาฟคา

จะยังคง ...

ที่มา: will.com

เพิ่มความคิดเห็น