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

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

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

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

ข้อกำหนด

บ่อยครั้งในการพัฒนาซอฟต์แวร์ มาเริ่มด้วยการพูดถึงข้อกำหนดพื้นฐานบางอย่างกัน ต่อไปนี้คือเรื่องราวของผู้ใช้ที่บันทึกไว้อย่างไม่เป็นทางการ:

  • ในฐานะลูกค้ารายย่อย:
    • ฉันต้องการมี เร็ว (<100ms เวลาในการตอบสนองแบบ end-to-end) การเข้าถึงแคตตาล็อกและรายละเอียดผลิตภัณฑ์ โดยสามารถหาสินค้าได้ ตามเกณฑ์ต่างๆ (เช่น ข้อความแบบเต็ม ช่วงราคา การให้คะแนนของลูกค้ารายอื่น หรือการค้นหาแบบเหลี่ยม) เวลาตอบสนองที่สูงส่งผลให้อัตราตีกลับสูง
    • หากฉันไม่ทราบชื่อแบรนด์ของผลิตภัณฑ์หรือต้องการสิ่งที่คล้ายกับที่ฉันซื้อมาก่อน ฉันต้องการซื้อผลิตภัณฑ์ตามภาพ คงจะดีถ้าหากล้องที่ใกล้เคียงหรือใกล้เคียงกับที่ฉันมี
    • ฉันต้องการการจัดส่งที่ปลอดภัย หรือสามารถซื้อออนไลน์และรับที่ร้านหรือริมทาง (คลิกและรับ)
  • ในฐานะผู้จัดการสินค้าคงคลัง:
    • ฉันต้องมีมุมมองสินค้าคงคลังที่ถูกต้องและแบบเรียลไทม์เพื่อมอบประสบการณ์การเติมเต็มที่เหนือกว่าให้กับลูกค้าของฉัน
    • ฉันต้องการเพิ่มประสิทธิภาพสินค้าคงคลังเพื่อเก็บสินค้าที่มีความต้องการสูงไว้ในสต็อกและลดสต็อกสินค้าที่เคลื่อนไหวช้า
    • ฉันต้องการมุมมองแบบเกือบเรียลไทม์ของสินค้าคงคลังในร้านค้าต่างๆ และ/หรือศูนย์ปฏิบัติตามคำสั่งซื้อเพื่อเพิ่มประสิทธิภาพสต็อก

สถาปัตยกรรม    

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

  • RediSearch ช่วยให้สามารถค้นหาผลิตภัณฑ์ที่หลากหลายด้วยตัวกรองตัวเลข การค้นหาข้อความแบบเต็ม การจัดทำดัชนีทางภูมิศาสตร์ การให้คะแนน และการรวม
  • ฟีเจอร์ Active-Active ของ Redis Enterprise ให้การอัปเดตตามเวลาจริงที่จำลองตามภูมิศาสตร์ในสินค้าคงคลังทั้งหมดตั้งแต่แกะกล่อง
  • RedisAI, RedisGears และ RediSearch ใช้ประโยชน์จากการสร้างไปป์ไลน์การเรียนรู้ของเครื่องที่ผสานรวมฐานข้อมูลสำหรับการอนุมานแบบเรียลไทม์และการค้นหาเวกเตอร์ที่คล้ายคลึงกัน
RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

จากที่นั่น ไม่ยากเกินไปที่จะจินตนาการถึงการออกแบบต่อไปนี้:

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

กล่องสีน้ำเงินแสดงถึงบริการ กล่องสีแดงแสดงฐานข้อมูลที่ใช้โดยบริการเหล่านั้น

เราปฏิบัติตามแนวทางไมโครเซอร์วิสเช่น:

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

การนำไปใช้

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

  • การจัดซื้อ: บริการจัดซื้อ (อย่างน่าประหลาดใจ) รองรับการซื้อของลูกค้า
  • สินค้าคงคลัง: บริการสินค้าคงคลังตอบคำถามเกี่ยวกับจำนวนสต็อคภายในสินค้าคงคลัง และจำนวนจะลดลงเมื่อลูกค้าซื้อสินค้า การอัปเดตสินค้าคงคลังจะถูกจำลองแบบเกือบเรียลไทม์ไปยังสินค้าคงคลังในสถานที่อื่น ๆ โดยใช้ประโยชน์จากคุณลักษณะ Active-Active ของ Redis Enterprise Redis Enterprise ใช้ประโยชน์จากประเภทข้อมูลจำลองที่ไม่มีข้อขัดแย้งเพื่อจัดการกับการอัปเดตพร้อมกัน ในกรณีนี้ ชนิดข้อมูลตัวนับค่าลบที่เป็นค่าลบที่รีเซ็ตได้จะถูกใช้เพื่อป้องกันการสูญเสียจากการตอบโต้
  • แคตตาล็อกผลิตภัณฑ์ :บริการแค็ตตาล็อกผลิตภัณฑ์ให้ข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์และเสนอวิธีการที่ซับซ้อนในการค้นหาผลิตภัณฑ์ ใช้ฐานข้อมูล Redis ที่มีการปรับใช้โมดูล RediSearch + RedisJSON RedisJSON ช่วยให้เราจัดเก็บรายละเอียดผลิตภัณฑ์โดยตรงเป็นเอกสาร JSON RediSearch สามารถจัดทำดัชนี ค้นหา และค้นหาเอกสาร JSON แบบเต็ม การอัปเดตผลิตภัณฑ์สามารถเผยแพร่ข้ามไซต์ต่างๆ ได้อย่างง่ายดายโดยใช้คุณลักษณะ Active-Active ของ Redis Enterprise
  • การจดจำภาพ :สุดท้าย บริการจดจำภาพมีฟังก์ชันการแสดงโมเดล AI สำหรับการค้นหาเวกเตอร์ที่คล้ายคลึงกันบนรูปภาพ ใช้ฐานข้อมูล Redis ที่ติดตั้งโมดูล RedisGears, RedisAI และ RediSearch RedisGears ช่วยให้เราสร้างไปป์ไลน์ข้อมูลและดำเนินการใกล้กับที่ข้อมูลอยู่ เราใช้ประโยชน์จาก Redis AI สำหรับการให้บริการและการอนุมานแบบจำลอง AI RediSearch ใช้ประโยชน์จากการค้นหาจริงสำหรับรูปภาพที่คล้ายกันโดยพิจารณาจากผลลัพธ์ของโมเดล AI

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

เรดิสมาร์ท

เมื่อเรามองไปหลังม่านแล้ว มาดูหน้าตาของแอพพลิเคชั่นบนเวทีกัน

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

หน้าแรกแสดงหมวดหมู่ผลิตภัณฑ์หลัก การคลิกที่หมวดหมู่จะทริกเกอร์คำค้นหาผ่านบริการแค็ตตาล็อกผลิตภัณฑ์โดยส่งคืนผลิตภัณฑ์ 16 รายการแรกที่อยู่ในหมวดหมู่ดังกล่าว

ฟิลด์ "ค้นหาผลิตภัณฑ์" ช่วยให้คุณทำการค้นหาผลิตภัณฑ์แบบเต็มข้อความ ซึ่งนำไปสู่หน้าผลการค้นหาต่อไปนี้:

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

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

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

อย่างที่คุณเห็น แท็กและการรวมมีบทบาท

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

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

…แต่ก็เจอหูฟังอย่างดี

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

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

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

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

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

ทันทีที่ลูกค้าทำการซื้อเสร็จสิ้น บริการสินค้าคงคลังจะเข้ามาเกี่ยวข้องโดยการลดจำนวนสินค้าในสต็อก สิ่งนี้นำเราไปสู่ส่วนหลังของแอปพลิเคชันโดยตรง ซึ่งช่วยให้เราจัดการสินค้าคงคลังได้ RedisMart แสดงให้เห็นภาพว่ามีการอัพเดทสินค้าคงคลังทันทีในแต่ละไซต์ที่จำลองแบบได้อย่างไร การซื้อในสหรัฐอเมริกา (GCP us-central1) ทำซ้ำได้ในพริบตาไปยังยุโรป (Azure North-Europe)

RedisMart:แอปพลิเคชั่นค้าปลีกที่มีคุณสมบัติครบถ้วนพร้อม Redis

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

คุณสามารถดูการทำงานของแอปพลิเคชันได้โดยดูวิดีโอต่อไปนี้:

สรุป   

เราหวังว่าคุณจะสนุกกับการอ่านส่วนแรกของบล็อกซีรีส์เกี่ยวกับการสร้างแอปพลิเคชันค้าปลีกที่มีคุณลักษณะครบถ้วนด้วย Redis อย่างที่คุณเห็น แพลตฟอร์มข้อมูลแบบเรียลไทม์ของ Redis ช่วยให้เราจัดการกับข้อกำหนดต่างๆ เช่น การเข้าถึงทันที (เวลาแฝงแบบ end-to-end น้อยกว่า 100ms) กับข้อมูลผลิตภัณฑ์โดยใช้ประโยชน์จากความสามารถฐานข้อมูลเอกสารของ RediSearch + RedisJSON การรวมกันของ RediSearch + RedisGears + RedisAI ช่วยให้สามารถค้นหารูปภาพที่ขับเคลื่อนด้วย AI เพื่อหาผลิตภัณฑ์ที่คล้ายกันภายในแค็ตตาล็อกผลิตภัณฑ์ นอกจากนี้ยังครอบคลุมคุณลักษณะต่างๆ เช่น เหลี่ยมเพชรพลอยและการค้นหาตามภูมิศาสตร์ สุดท้ายแต่ไม่ท้ายสุด เราได้แสดงให้คุณเห็นว่าคุณสามารถสร้างสินค้าคงคลังแบบเรียลไทม์ที่จำลองตามภูมิศาสตร์ได้ง่ายๆ โดยอิงตามฟีเจอร์ Active-Active ของ Redis Enterprise ทั้งหมดนี้ แพลตฟอร์ม Redis แบบเรียลไทม์ช่วยให้บริษัทค้าปลีกส่งผลกระทบเชิงบวกต่อประสบการณ์การซื้อโดยรวม มอบประสบการณ์การเติมเต็มที่ดีที่สุดให้กับลูกค้า และเพิ่มประสิทธิภาพสินค้าคงคลังด้วยวิธีที่คุ้มค่าที่สุด

คุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับบริการส่วนบุคคลที่เรานำไปใช้กับ RedisMart หรือไม่? แล้วคอยติดตามบทความบล็อกชุดต่อไป!

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

  • ข้อมูลเพิ่มเติมเกี่ยวกับโมดูล
  • github.com/RediSearch
  • github.com/RedisJSON
  • github.com/RedisGears
  • github.com/RedisAI
  • Redis Enterprise Cloud
  • Active-Active Geo-Distribution

เครดิต

ขอบคุณมากสำหรับทุกคนที่มีส่วนร่วมในแอปพลิเคชันเดโมนี้:

  • Yiftach Shoolman และ Ash Sahu สำหรับการนำเสนอแอปพลิเคชันสาธิตระหว่าง RedisConf
  • ทีมการตลาด Redis (และโดยเฉพาะอย่างยิ่ง Udi Gotlieb, Ash Sahu และ Doug Tidwell และ Bryson Coles) ที่มีส่วนร่วมในรายการข้อกำหนดของแอปพลิเคชันสาธิต จัดระเบียบ RedisConf ช่วยเหลือในการออกแบบ UI และมีส่วนร่วมในโพสต์บล็อกนี้
  • หลี่>
  • ทีม Technical Enablement (และโดยเฉพาะอย่างยิ่ง Martin Forstner, Greg Georges และ David Maier) สำหรับการปรับใช้ ทดสอบ และออกแบบแอปพลิเคชันสาธิต และสำหรับการมีส่วนร่วมในบล็อกโพสต์นี้
  • ทีม CTO (และโดยเฉพาะอย่างยิ่ง Leibale Eidelman, Guy Korland) สำหรับการพัฒนาโมดูลและบริการการจดจำภาพ
  • ทีมจัดการผลิตภัณฑ์ (และโดยเฉพาะอย่างยิ่ง Pieter Cailliau, Emmanuel Keller, Jonathan Salomon และ Amiram Mizne) ที่มีส่วนร่วมในรายการข้อกำหนดของแอปพลิเคชันสาธิตและสำหรับการจัดหาคุณลักษณะของผลิตภัณฑ์
  • และทุกคนที่เราลืมพูดถึงที่นี่

เราต้องการอุทิศชุดบล็อกนี้ให้กับ Martin Forstner ผู้พัฒนาแอปพลิเคชัน RedisMart เป็นหลัก มันมาพร้อมกับความโศกเศร้าอย่างยิ่งที่จะแบ่งปันว่าเขาเพิ่งเสียชีวิต ความรู้ พรสวรรค์ และอารมณ์ขันของมาร์ตินไม่เป็นสองรองใคร เขาเป็นมากกว่าวิศวกรซอฟต์แวร์ของ Redis—เขาเป็นเพื่อนร่วมงาน เพื่อนร่วมทีม พี่เลี้ยง และเพื่อน หลับให้สบายนะมาร์ติน พวกเราคิดถึงคุณ!