SmugMug ดำเนินการแพลตฟอร์มรูปภาพออนไลน์ขนาดใหญ่สองแห่ง SmugMug และ Flickrช่วยให้ลูกค้ามากกว่า 100 ล้านคนสามารถจัดเก็บ ค้นหา แบ่งปัน และขายภาพถ่ายนับหมื่นล้านภาพได้อย่างปลอดภัย ลูกค้าที่อัปโหลดและค้นหาภาพถ่ายหลายทศวรรษช่วยเปลี่ยนการค้นหาให้เป็นโครงสร้างพื้นฐานที่สำคัญ ซึ่งเติบโตอย่างต่อเนื่องนับตั้งแต่ SmugMug ใช้ครั้งแรก อเมซอน CloudSearch ใน 2012 ตามด้วย บริการ Amazon OpenSearch ตั้งแต่ปี 2018 หลังจากเข้าถึงเอกสารนับพันล้านและพื้นที่ค้นหาเทราไบต์
ที่นี่ Lee Shepherd วิศวกรพนักงาน SmugMug แบ่งปันสถาปัตยกรรมการค้นหาของ SmugMug ที่ใช้ในการเผยแพร่ ทดแทน และสะท้อนการรับส่งข้อมูลสดไปยังหลายคลัสเตอร์ SmugMug ใช้ไปป์ไลน์เหล่านี้เพื่อเปรียบเทียบ ตรวจสอบ และโยกย้ายไปยังการกำหนดค่าใหม่ รวมถึงอินสแตนซ์ r6gd.2xlarge ที่ใช้ Graviton จาก i3.2xlarge พร้อมกับการทดสอบ Amazon OpenSearch แบบไร้เซิร์ฟเวอร์. เราครอบคลุมถึงสามไปป์ไลน์ที่ใช้สำหรับการเผยแพร่ การทดแทน และการสืบค้น โดยไม่แนะนำรูปแบบการรับส่งข้อมูลที่ไม่สมจริงที่แหลมคม และไม่มีผลกระทบใดๆ ต่อบริการที่ใช้งานจริง
มีสถาปัตยกรรมหลักสองชิ้นที่มีความสำคัญต่อกระบวนการนี้:
- แหล่งที่มาของความจริงที่คงทนสำหรับข้อมูลดัชนี เป็นแนวทางปฏิบัติที่ดีที่สุด และเป็นส่วนหนึ่งของกลยุทธ์การสำรองข้อมูลของเราเพื่อให้มีร้านค้าที่คงทนเกินกว่าดัชนี OpenSearch และ อเมซอน ไดนาโมดีบี ให้ความสามารถในการขยายขนาดและการบูรณาการด้วย AWS แลมบ์ดา นั่นทำให้กระบวนการง่ายขึ้นมาก เราใช้ DynamoDB สำหรับบริการอื่นๆ ที่ไม่ใช่การค้นหา ดังนั้นจึงเป็นเรื่องปกติ
- ฟังก์ชัน Lambda สำหรับการเผยแพร่ข้อมูลจากแหล่งที่มาของความจริงไปยัง OpenSearch โดยใช้ นามแฝงของฟังก์ชัน ช่วยเรียกใช้การกำหนดค่าหลายรายการของฟังก์ชัน Lambda เดียวกันในเวลาเดียวกัน และเป็นกุญแจสำคัญในการซิงค์ข้อมูล
การประกาศ
ไปป์ไลน์การเผยแพร่นั้นขับเคลื่อนจากเหตุการณ์ เช่น การที่ผู้ใช้ป้อนคำสำคัญหรือคำอธิบายภาพ การอัปโหลดใหม่ หรือการตรวจจับป้ายกำกับผ่าน ความหมายของ Amazon. เหตุการณ์เหล่านี้ได้รับการประมวลผล โดยรวมข้อมูลจากร้านค้าสินทรัพย์อื่นๆ สองสามแห่งที่คล้ายกัน Amazon Aurora รุ่นที่เข้ากันได้กับ MySQL และ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3)ก่อนที่จะเขียนรายการเดียวลงใน DynamoDB
การเขียนไปยัง DynamoDB จะเรียกใช้ฟังก์ชันการเผยแพร่ Lambda ผ่านทาง อะแดปเตอร์ Kinesis สตรีม DynamoDBซึ่งรับชุดรายการที่อัปเดตจาก DynamoDB และจัดทำดัชนีลงใน OpenSearch การใช้ DynamoDB Streams Kinesis Adapter ยังมีข้อดีอื่นๆ เช่น การลดจำนวน Lambda ที่ต้องใช้งานพร้อมกัน
ฟังก์ชันการเผยแพร่ Lambda ใช้ตัวแปรสภาพแวดล้อมเพื่อกำหนดโดเมนและดัชนี OpenSearch ที่จะเผยแพร่ นามแฝงการผลิตได้รับการกำหนดค่าให้เขียนไปยังโดเมน OpenSearch ที่ใช้งานจริง นอกตาราง DynamoDB หรือ Kinesis Stream
เมื่อทดสอบการกำหนดค่าใหม่หรือการย้ายข้อมูล นามแฝงการย้ายข้อมูลจะได้รับการกำหนดค่าให้เขียนไปยังโดเมน OpenSearch ใหม่ แต่ใช้ทริกเกอร์เดียวกันกับนามแฝงที่ใช้งานจริง ซึ่งเปิดใช้งานการจัดทำดัชนีข้อมูลแบบคู่ไปยังโดเมน OpenSearch Service ทั้งสองพร้อมกัน
นี่คือตัวอย่างของสคีมาตาราง DynamoDB:
ค่า "LastUpdated" จะถูกใช้เป็นเวอร์ชันของเอกสารเมื่อจัดทำดัชนี ทำให้ OpenSearch สามารถปฏิเสธการอัปเดตที่ไม่อยู่ในลำดับได้
ทดแทน
ขณะนี้การเปลี่ยนแปลงได้รับการเผยแพร่ไปยังทั้งสองโดเมนแล้ว โดเมนใหม่ (ดัชนี) จะต้องได้รับการทดแทนด้วยข้อมูลประวัติ หากต้องการทดแทนดัชนีที่สร้างขึ้นใหม่ การรวมกันของ บริการ Amazon Simple Queue (Amazon SQS) และใช้ DynamoDB สคริปต์เติมคิว SQS พร้อมข้อความที่มีคำแนะนำสำหรับ การสแกนแบบขนาน ส่วนของตาราง DynamoDB
คิว SQS เปิดใช้ฟังก์ชัน Lambda ที่อ่านคำแนะนำข้อความ ดึงชุดรายการจากส่วนที่เกี่ยวข้องของตาราง DynamoDB และเขียนลงในดัชนี OpenSearch ข้อความใหม่จะถูกเขียนลงในคิว SQS เพื่อติดตามความคืบหน้าผ่านเซ็กเมนต์ หลังจากเซ็กเมนต์เสร็จสมบูรณ์แล้ว จะไม่มีการเขียนข้อความลงในคิว SQS อีกต่อไป และกระบวนการจะหยุดเอง
การเกิดขึ้นพร้อมกันจะกำหนดโดยจำนวนเซ็กเมนต์ โดยมีการควบคุมเพิ่มเติมจากการปรับขนาดการทำงานพร้อมกันของ Lambda SmugMug สามารถจัดทำดัชนีเอกสารมากกว่า 1 พันล้านฉบับต่อชั่วโมงในการกำหนดค่า OpenSearch โดยไม่ส่งผลกระทบต่อโดเมนที่ใช้งานจริงเป็นศูนย์
สคริปต์ที่ใช้ NodeJS AWS-SDK ใช้เพื่อเริ่มต้นคิว SQS นี่เป็นตัวอย่างตัวเลือกของสคริปต์การกำหนดค่า SQS:
พร้อมด้วยรูปแบบของข้อความ SQS ที่เป็นผลลัพธ์:
มิเรอร์
สุดท้ายของเรา คำค้นหาที่มิเรอร์ ผลลัพธ์ที่ดำเนินการโดยการส่งคำค้นหา OpenSearch ไปยังคิว SQS นอกเหนือจากโดเมนที่ใช้งานจริงของเรา คิว SQS เปิดใช้ฟังก์ชัน Lambda ที่เล่นซ้ำการสืบค้นไปยังโดเมนแบบจำลอง ผลการค้นหาจากคำขอเหล่านี้จะไม่ถูกส่งไปยังผู้ใช้ใดๆ แต่อนุญาตให้มีการจำลองโหลดที่ใช้งานจริงในบริการ OpenSearch ที่อยู่ระหว่างการทดสอบโดยไม่มีผลกระทบต่อระบบที่ใช้งานจริงหรือลูกค้า
สรุป
เมื่อประเมินโดเมนหรือการกำหนดค่า OpenSearch ใหม่ ตัวชี้วัดหลักที่เราสนใจคือประสิทธิภาพเวลาในการตอบสนองของคิวรี กล่าวคือ เวลาแฝงที่ใช้ (เวลาแฝงต่อครั้ง) และที่สำคัญที่สุดคือเวลาแฝงในการค้นหา ในการเปลี่ยนไปใช้ Graviton R6gd เราเห็นเวลาแฝงของ P40-P50 ลดลงประมาณ 99 เปอร์เซ็นต์ พร้อมด้วยการใช้งาน CPU เพิ่มขึ้นที่ใกล้เคียงกันเมื่อเปรียบเทียบกับ i3 (โดยไม่สนใจต้นทุนที่ต่ำกว่าของ Graviton) ข้อดีที่น่ายินดีอีกประการหนึ่งคือความกดดันของหน่วยความจำ JVM ที่คาดการณ์และตรวจสอบได้มากขึ้น โดยมีการเปลี่ยนแปลงการรวบรวมขยะจากการเพิ่ม G1GC บน R6gd และอินสแตนซ์ใหม่อื่นๆ
เมื่อใช้ไปป์ไลน์นี้ เรายังทดสอบ OpenSearch Serverless และค้นหากรณีการใช้งานที่ดีที่สุด เรารู้สึกตื่นเต้นกับบริการดังกล่าวและตั้งใจอย่างเต็มที่ที่จะมีสถาปัตยกรรมแบบไร้เซิร์ฟเวอร์ทั้งหมดได้ทันเวลา คอยติดตามผล
เกี่ยวกับผู้เขียน
ลี เชพเพิร์ด เป็นวิศวกรซอฟต์แวร์พนักงาน SmugMug
ไอดิน เบคิรอฟ เป็นผู้จัดการบัญชีด้านเทคนิคหลักของ Amazon Web Services
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- :เป็น
- :ไม่
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- สามารถ
- เกี่ยวกับเรา
- ลงชื่อเข้าใช้
- ที่เพิ่ม
- นอกจากนี้
- เพิ่มเติม
- หลังจาก
- อนุญาต
- การอนุญาต
- ตาม
- ด้วย
- อเมซอน
- Amazon Web Services
- an
- และ
- อื่น
- ใด
- ในเชิงสถาปัตยกรรม
- สถาปัตยกรรม
- เป็น
- AS
- สินทรัพย์
- At
- แสงเงินแสงทอง
- AWS
- สำรอง
- ตาม
- BE
- ก่อน
- กำลัง
- มาตรฐาน
- ประโยชน์
- ประโยชน์ที่ได้รับ
- ที่ดีที่สุด
- เกิน
- พันล้าน
- พันล้าน
- ทั้งสอง
- แต่
- by
- คำอธิบายภาพ
- การเปลี่ยนแปลง
- ชุด
- การผสมผสาน
- การรวมกัน
- เมื่อเทียบกับ
- เข้ากันได้
- เสร็จสิ้น
- พร้อมกัน
- องค์ประกอบ
- การกำหนดค่า
- บรรจุ
- การควบคุม
- ตรงกัน
- ค่าใช้จ่าย
- หน้าปก
- ซีพียู
- ที่สร้างขึ้น
- วิกฤติ
- โครงสร้างพื้นฐานที่สำคัญ
- ลูกค้า
- ข้อมูล
- ทศวรรษที่ผ่านมา
- การตรวจพบ
- กำหนด
- แน่นอน
- เอกสาร
- เอกสาร
- โดเมน
- โดเมน
- ขับเคลื่อน
- แต่ละ
- ช่วยให้
- การเปิดใช้งาน
- ปลายทาง
- วิศวกร
- การป้อน
- อย่างสิ้นเชิง
- สิ่งแวดล้อม
- อีเธอร์ (ETH)
- การประเมินการ
- เหตุการณ์
- ตัวอย่าง
- ตื่นเต้น
- สองสาม
- สาขา
- หา
- ชื่อจริง
- พอดี
- ตาม
- สำหรับ
- รูป
- ราคาเริ่มต้นที่
- อย่างเต็มที่
- ฟังก์ชัน
- กําไร
- การเจริญเติบโต
- มี
- ความสูง
- ช่วย
- จะช่วยให้
- ทางประวัติศาสตร์
- ชั่วโมง
- HTML
- ที่ http
- HTTPS
- i
- i3
- ID
- ส่งผลกระทบ
- ที่สำคัญ
- in
- รวมทั้ง
- ดัชนี
- ดัชนี
- โครงสร้างพื้นฐาน
- อินสแตนซ์
- คำแนะนำการใช้
- บูรณาการ
- ตั้งใจ
- สนใจ
- เข้าไป
- แนะนำ
- จะเรียก
- รายการ
- การย้ำ
- ITS
- ตัวเอง
- jpg
- เก็บ
- การเก็บรักษา
- คีย์
- คำหลัก
- ฉลาก
- ใหญ่
- ความแอบแฝง
- การเปิดตัว
- Lee
- กดไลก์
- สด
- โหลด
- Lot
- ลด
- หลัก
- หน่วยความจำ
- ข่าวสาร
- ข้อความ
- ตัวชี้วัด
- อพยพ
- การโยกย้าย
- การโยกย้าย
- ล้าน
- ลูกค้านับล้าน
- กระจก
- ข้อมูลเพิ่มเติม
- มากที่สุด
- ย้าย
- หลาย
- MySQL
- ชื่อ
- คือ
- โดยธรรมชาติ
- ความต้องการ
- ใหม่
- ใหม่
- ถัดไป
- ไม่
- จำนวน
- of
- ปิด
- on
- ออนไลน์
- ดำเนินการ
- Options
- opts
- or
- อื่นๆ
- ของเรา
- Parallel
- ส่วนหนึ่ง
- รูปแบบ
- ต่อ
- เปอร์เซ็นต์
- การปฏิบัติ
- ภาพถ่าย
- ภาพถ่าย
- ชิ้น
- ท่อ
- แพลตฟอร์ม
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- ทายได้
- ความดัน
- ก่อน
- หลัก
- กระบวนการ
- การประมวลผล
- การผลิต
- ความคืบหน้า
- ให้
- ให้
- ประกาศ
- การตีพิมพ์
- การประกาศ
- ถึง
- ลด
- แบบจำลอง
- การร้องขอ
- จำเป็นต้องใช้
- ส่งผลให้
- ผลสอบ
- วิ่ง
- อย่างปลอดภัย
- เดียวกัน
- เห็น
- scalability
- ปรับ
- ต้นฉบับ
- ค้นหา
- ค้นหา
- เมล็ดพันธุ์
- ส่วน
- กลุ่ม
- ขาย
- การส่ง
- ส่ง
- serverless
- บริการ
- บริการ
- Share
- หุ้น
- คล้ายคลึงกัน
- ง่าย
- พร้อมกัน
- ตั้งแต่
- เดียว
- เศษเล็กเศษน้อย
- So
- ซอฟต์แวร์
- แหล่ง
- ทักษะ
- เข้าพัก
- ไม่หยุดหย่อน
- หยุด
- การเก็บรักษา
- จัดเก็บ
- ร้านค้า
- กลยุทธ์
- ลำธาร
- อย่างเช่น
- ระบบ
- ตาราง
- ใช้เวลา
- วิชาการ
- เมตริกซ์
- ทดสอบ
- การทดสอบ
- กว่า
- ที่
- พื้นที่
- ที่มา
- ของพวกเขา
- พวกเขา
- ที่นั่น
- ล้อยางขัดเหล่านี้ติดตั้งบนแกน XNUMX (มม.) ผลิตภัณฑ์นี้ถูกผลิตในหลายรูปทรง และหลากหลายเบอร์ความแน่นหนาของปริมาณอนุภาคขัดของมัน จะทำให้ท่านได้รับประสิทธิภาพสูงในการขัดและการใช้งานที่ยาวนาน
- นี้
- สาม
- ตลอด
- เวลา
- ไปยัง
- เอา
- ลู่
- การจราจร
- เรียก
- ความจริง
- กลับ
- สอง
- ภายใต้
- ให้กับคุณ
- การปรับปรุง
- อัปโหลด
- URL
- การใช้
- ใช้
- กรณีใช้งาน
- มือสอง
- ผู้ใช้งาน
- ใช้
- การใช้
- ตรวจสอบความถูกต้อง
- ความคุ้มค่า
- รุ่น
- มาก
- คือ
- we
- เว็บ
- บริการเว็บ
- ยินดีต้อนรับ
- อะไร
- เมื่อ
- ในขณะที่
- กับ
- ไม่มี
- เขียน
- การเขียน
- เขียน
- ลมทะเล
- เป็นศูนย์