Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

อธิบาย Redis Pub/Sub:เพิ่มความสามารถในการปรับขนาดด้วยการส่งข้อความเผยแพร่/สมัครสมาชิก

อธิบาย Redis Pub/Sub:เพิ่มความสามารถในการปรับขนาดด้วยการส่งข้อความเผยแพร่/สมัครสมาชิก

เมื่อคุณทำงานกับแอปพลิเคชันที่ต้องดูแลรักษาง่าย ปรับขนาดได้ และมีประสิทธิภาพ รูปแบบการส่งข้อความเผยแพร่/สมัครรับข้อมูลคือตัวเลือกที่ดี

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

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

นี่คือที่ที่ สมาชิก มาเล่นกันเถอะ พวกเขาสามารถสมัครรับข้อมูลจากหนึ่งช่องขึ้นไปและเริ่มรับข้อความที่ออกอากาศในนั้น

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

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

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

เรดิสคืออะไร?

แนวคิดเริ่มแรกเบื้องหลัง Redis คือทำหน้าที่เป็นโซลูชันแคชในหน่วยความจำ เป็นทางเลือกแทน Memcached รุ่นพี่

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

อธิบาย Redis Pub/Sub:เพิ่มความสามารถในการปรับขนาดด้วยการส่งข้อความเผยแพร่/สมัครสมาชิก

การเปรียบเทียบประสิทธิภาพของ Redis (ที่มา:google)

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

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

อธิบาย Redis Pub/Sub:เพิ่มความสามารถในการปรับขนาดด้วยการส่งข้อความเผยแพร่/สมัครสมาชิก

หน้าลงทะเบียน / ลงชื่อเข้าใช้ Redis Enterprise Cloud

ผับ/ซับคืออะไร?

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

เราจะอธิบายสั้นๆ ด้านล่างนี้ จากนั้นจึงดูในทางปฏิบัติในแอปสาธิตเล็กๆ ที่ฉันเตรียมไว้สำหรับคุณ

Redis pub/sub ทำงานอย่างไร

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

มาดูวิธีการทำงานจากตัวอย่าง:

หากเราสร้างผู้เผยแพร่สามรายซึ่งจะเผยแพร่ข้อความไปยังสามช่องทางที่แตกต่างกัน เรียกพวกเขาว่าช่อง 1, 2 และ 3 เรามีสมาชิกสามคนด้วย เรียกพวกเขาว่าสมาชิก A, B และ C

ทีนี้ ลองจินตนาการว่าสมาชิก A กำลังฟังข้อความจากทั้งสามช่อง นั่นคือได้ติดตามพวกเขาอยู่ และสมาชิก B และ C ได้สมัครรับข้อมูลช่อง 2 และ 3 ซึ่งหมายความว่าเมื่อผู้เผยแพร่โฆษณารายใดรายหนึ่งจากทั้งสามรายส่งข้อความ สมาชิก A จะได้รับข้อความนั้น และสมาชิก B และ C จะได้รับข้อความที่ส่งโดยผู้เผยแพร่ 2 และ 3 เท่านั้น เนื่องจากพวกเขากำลังฟังเฉพาะข้อความในช่องเหล่านี้ (2 และ 3)

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

วิธีใช้ pub/sub ใน Redis

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

พนักงานที่ Redis ยังได้ทำเครื่องหมายที่เก็บข้อมูลเหล่านี้บางส่วนว่า แนะนำ ซึ่งทำให้การเลือกง่ายขึ้น หากคุณยังใหม่กับเรื่องทั้งหมดนี้

สำหรับการสาธิตด้านล่างนี้ ฉันใช้ ioredis ซึ่งเป็นไคลเอนต์ Redis ที่มีฟีเจอร์ครบถ้วนสำหรับ Node.js ฉันเลือกสิ่งนี้เนื่องจาก UI ของแอปสาธิตสร้างขึ้นด้วย React และ Node.js และโค้ดเซิร์ฟเวอร์ของฉันก็เข้ากันได้ดี

การสาธิต Redis Pub/Sub

อธิบาย Redis Pub/Sub:เพิ่มความสามารถในการปรับขนาดด้วยการส่งข้อความเผยแพร่/สมัครสมาชิก

แอป Redis Pub/Sub Visualizer

แสดงเวลา!

แนวคิดเบื้องหลังแอปพลิเคชันสาธิตคือการแสดงให้เห็นว่ารูปแบบทำงานอย่างไร

สิ่งที่คุณจะเห็นเมื่อเปิดเป็นครั้งแรกคือปุ่มสามปุ่มสำหรับเผยแพร่ข้อความธรรมดา (ข่าว) ในช่องทีวีจินตนาการสามช่อง:สภาพอากาศ กีฬา และดนตรี

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

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

เล่นกับผู้เผยแพร่/สมาชิกที่แตกต่างกันและดูผลลัพธ์

ฉันหวังว่าสิ่งนี้จะทำให้คุณเข้าใจสิ่งที่ฉันอธิบายในตัวอย่างด้านบนได้ดีขึ้น

วิธีเรียกใช้แอปสาธิตในเครื่อง

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

เรียกใช้ส่วนหน้า:

08

เรียกใช้แบ็กเอนด์:

12

และสุดท้าย ใช้การติดตั้ง Docker ในเครื่องของคุณ (หากไม่มี คุณสามารถดาวน์โหลดได้จากที่นี่) เพื่อรันสิ่งนี้:

docker run -p 6379:6379 redislabs/redismod:preview

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

ปิด

บทความนี้แนะนำให้คุณรู้จักกับหัวเรื่องรูปแบบการส่งข้อความ pub/sub สิ่งสำคัญคือต้องจำไว้ว่าเมื่อใดก็ตามที่เราต้องการสร้างแอปพลิเคชันที่มีประสิทธิภาพสูงด้วยสถาปัตยกรรมแบบ Low Coupled และฟีเจอร์การรับส่งข้อความแบบเรียลไทม์ ให้พิจารณาใช้รูปแบบ Publish/Subscribe และ Redis โดยเฉพาะ

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

ตัวอย่างเช่น ลองนึกภาพระบบที่แสดงการจราจรในพื้นที่เฉพาะ ซอฟต์แวร์ประเภทนี้เป็นตัวเลือกที่สมบูรณ์แบบสำหรับการใช้ประโยชน์จาก pub/sub และในหลายกรณีสามารถทำได้โดยใช้ Redis

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

เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น