นี่คือโพสต์รับเชิญที่เขียนร่วมกับ Raghu Boppanna จาก Vanguard
At แนวหน้าสายธุรกิจ Enterprise Advice ปรับปรุงผลลัพธ์ของนักลงทุนผ่านการเข้าถึงแบบดิจิทัลเพื่อรับคำแนะนำทางการเงินที่เหนือกว่า เป็นส่วนตัว และราคาไม่แพง บางส่วนทำให้เป็นไปได้โดยขับเคลื่อนการประหยัดจากขนาดทั่วโลกสำหรับนักลงทุนด้วยแพลตฟอร์มทางเทคนิคที่ยืดหยุ่นและมีประสิทธิภาพสูง Vanguard เลือกใช้สถาปัตยกรรมแบบหลายภูมิภาคสำหรับเวิร์กโหลดนี้เพื่อช่วยป้องกันความบกพร่องของบริการระดับภูมิภาค สำหรับวัตถุประสงค์ความพร้อมใช้งานสูง จำเป็นต้องทำให้ข้อมูลที่ใช้โดยเวิร์กโหลดไม่พร้อมใช้งานเฉพาะในภูมิภาคหลักเท่านั้น แต่ยังรวมถึงภูมิภาครองด้วยความล่าช้าในการจำลองแบบน้อยที่สุด ในกรณีที่บริการลดลงในภูมิภาคหลัก โซลูชันควรสามารถข้ามไปยังภูมิภาครองได้โดยที่ข้อมูลสูญหายน้อยที่สุดเท่าที่จะเป็นไปได้และสามารถดำเนินการนำเข้าข้อมูลต่อได้
Vanguard Cloud Technology Office และ AWS ร่วมมือกันเพื่อสร้างโซลูชันโครงสร้างพื้นฐานบน AWS ที่ตรงตามข้อกำหนดด้านความยืดหยุ่น โซลูชันหลายภูมิภาคเปิดใช้งานกลไกการแทนที่เมื่อเกิดข้อผิดพลาดที่มีประสิทธิภาพ พร้อมความสามารถในการสังเกตและการกู้คืนในตัว โซลูชันนี้ยังรองรับการสตรีมข้อมูลจากหลายแหล่งไปยังสตรีมข้อมูล Kinesis ที่แตกต่างกัน โซลูชันนี้กำลังถูกนำไปใช้กับทีมธุรกิจในสายงานต่างๆ เพื่อปรับปรุงสถานะความยืดหยุ่นของปริมาณงานของพวกเขา
กรณีการใช้งานที่กล่าวถึงในที่นี้ต้องการ Change Data Capture (CDC) เพื่อสตรีมข้อมูลจากแหล่งข้อมูลระยะไกล (เมนเฟรม DB2) ไปยัง สตรีมข้อมูล Amazon Kinesisเนื่องจากความสามารถทางธุรกิจขึ้นอยู่กับข้อมูลนี้ Kinesis Data Streams เป็นบริการสตรีมที่มีการจัดการเต็มรูปแบบ ปรับขนาดได้จำนวนมาก ทนทาน และต้นทุนต่ำ ซึ่งสามารถจับภาพและสตรีมข้อมูลจำนวนมากจากหลายแหล่งได้อย่างต่อเนื่อง และทำให้ข้อมูลพร้อมใช้งานภายในเวลามิลลิวินาที บริการนี้สร้างขึ้นเพื่อให้มีความยืดหยุ่นสูงและใช้ Availability Zone หลายแห่งในการประมวลผลและจัดเก็บข้อมูล
โซลูชันที่กล่าวถึงในโพสต์นี้อธิบายวิธีที่ AWS และ Vanguard สร้างสรรค์นวัตกรรมเพื่อสร้างสถาปัตยกรรมที่ยืดหยุ่นเพื่อให้บรรลุเป้าหมายความพร้อมใช้งานสูง
ภาพรวมโซลูชัน
สารละลายใช้ AWS แลมบ์ดา เพื่อทำซ้ำข้อมูลจากสตรีมข้อมูล Kinesis ในภูมิภาคหลักไปยังภูมิภาครอง ในกรณีที่ความบกพร่องของบริการใด ๆ ที่ส่งผลกระทบต่อไปป์ไลน์ของ CDC กระบวนการเฟลโอเวอร์จะส่งเสริมภูมิภาครองให้เป็นภูมิภาคหลักสำหรับผู้ผลิตและผู้บริโภค เราใช้ ตารางส่วนกลางของ Amazon DynamoDB สำหรับจุดตรวจสอบการจำลองที่อนุญาตให้ดำเนินการสตรีมข้อมูลต่อจากจุดตรวจสอบ และยังรักษาการตั้งค่าสถานะการกำหนดค่าภูมิภาคหลักที่ป้องกันการวนซ้ำไม่สิ้นสุดของข้อมูลเดียวกันไปมา
โซลูชันนี้ยังให้ความยืดหยุ่นแก่ผู้บริโภค Kinesis Data Streams เพื่อใช้ภูมิภาคหลักหรือภูมิภาครองใดๆ ภายในบัญชี AWS เดียวกัน
แผนภาพต่อไปนี้แสดงสถาปัตยกรรมอ้างอิง
ดูรายละเอียดแต่ละองค์ประกอบ:
- โปรเซสเซอร์ CDC (ผู้ผลิต) – ในสถาปัตยกรรมอ้างอิงนี้ โปรดิวเซอร์จะถูกปรับใช้ อเมซอน อีลาสติก คอมพิวท์ คลาวด์ (Amazon EC2) ทั้งในภูมิภาคหลักและภูมิภาครอง และเปิดใช้งานในภูมิภาคหลักและในโหมดสแตนด์บายในภูมิภาครอง โดยจะรวบรวมข้อมูล CDC จากแหล่งข้อมูลภายนอก (เช่น ฐานข้อมูล DB2 ตามที่แสดงในสถาปัตยกรรมด้านบน) และสตรีมไปยัง Kinesis Data Streams ในภูมิภาคหลัก กองหน้าใช้ 3rd เครื่องมือปาร์ตี้ Qlik ทำซ้ำเป็นตัวประมวลผล CDC ซึ่งสร้างเพย์โหลดที่มีรูปแบบเหมาะสม ซึ่งรวมถึงการประทับเวลาการคอมมิต DB2 ไปยังสตรีมข้อมูล Kinesis นอกเหนือจากข้อมูลแถวจริงจากแหล่งข้อมูลระยะไกล (
example-stream-1
ในตัวอย่างนี้). โค้ดต่อไปนี้คือเพย์โหลดตัวอย่างที่มีเฉพาะคีย์หลักของเรกคอร์ดที่เปลี่ยนแปลงและการประทับเวลาคอมมิท (เพื่อความง่าย ข้อมูลแถวที่เหลือของตารางจะไม่แสดงด้านล่าง):{ "eventSource": "aws:kinesis", "kinesis": { "ApproximateArrivalTimestamp": "Mon July 18 20:00:00 UTC 2022", "SequenceNumber": "49544985256907370027570885864065577703022652638596431874", "PartitionKey": "12349999", "KinesisSchemaVersion": "1.0", "Data": "eyJLZXkiOiAxMjM0OTk5OSwiQ29tbWl0VGltZXN0YW1wIjogIjIwMjItMDctMThUMjA6MDA6MDAifQ==" }, "eventId": "shardId-000000000000:49629136582982516722891309362785181370337771525377097730", "invokeIdentityArn": "arn:aws:iam::6243876582:role/kds-crr-LambdaRole-1GZWP67437SD", "eventName": "aws:kinesis:record", "eventVersion": "1.0", "eventSourceARN": "arn:aws:kinesis:us-east-1:6243876582:stream/kds-stream-1/consumer/kds-crr:6243876582", "awsRegion": "us-east-1" }
ค่าการถอดรหัส Base64 ของ
Data
มีดังนี้ บันทึก Kinesis จริงจะมีข้อมูลแถวทั้งหมดของแถวตารางที่เปลี่ยนแปลง นอกเหนือจากคีย์หลักและการประทับเวลาการคอมมิต{"Key": 12349999,"CommitTimestamp": "2022-07-18T20:00:00"}
พื้นที่
CommitTimestamp
ในData
ฟิลด์นี้ใช้ในจุดตรวจสอบการจำลองแบบและมีความสำคัญอย่างยิ่งในการติดตามจำนวนข้อมูลสตรีมที่ถูกจำลองไปยังภูมิภาครองอย่างแม่นยำ จากนั้นจุดตรวจสอบสามารถใช้เพื่ออำนวยความสะดวกในการเฟลโอเวอร์ตัวประมวลผล CDC (ผู้ผลิต) และดำเนินการผลิตข้อมูลต่ออย่างถูกต้องจากการประทับเวลาจุดตรวจการจำลองเป็นต้นไปทางเลือกในการใช้แหล่งข้อมูลระยะไกล
CommitTimestamp
(หากไม่มี) คือการใช้ApproximateArrivalTimestamp
(ซึ่งเป็นเวลาประทับเมื่อบันทึกถูกเขียนไปยังสตรีมข้อมูลจริง) - ฟังก์ชันแลมบ์ดาจำลองข้ามภูมิภาค – ฟังก์ชันนี้ปรับใช้กับทั้งภูมิภาคหลักและรอง มีการตั้งค่าด้วยการแมปแหล่งที่มาของเหตุการณ์กับสตรีมข้อมูลที่มีข้อมูล CDC สามารถใช้ฟังก์ชันเดียวกันนี้เพื่อจำลองข้อมูลของหลายสตรีมได้ มีการเรียกใช้ชุดบันทึกจาก Kinesis Data Streams และจำลองชุดงานไปยังภูมิภาคการจำลองแบบเป้าหมาย (ซึ่งมีให้ผ่านสภาพแวดล้อมการกำหนดค่า Lambda) สำหรับการพิจารณาต้นทุน หากข้อมูล CDC ถูกสร้างขึ้นในภูมิภาคหลักเท่านั้น การทำงานพร้อมกันที่สงวนไว้ของฟังก์ชันในภูมิภาครองสามารถตั้งค่าเป็นศูนย์ และแก้ไขระหว่างการเปลี่ยนระบบตามภูมิภาค ฟังก์ชั่นมี AWS Identity และการจัดการการเข้าถึง (IAM) สิทธิ์ตามบทบาทเพื่อทำสิ่งต่อไปนี้:
- อ่านและเขียนลงในตารางส่วนกลางของ DynamoDB ที่ใช้ในโซลูชันนี้ภายในบัญชีเดียวกัน
- อ่านและเขียนไปยัง Kinesis Data Streams ในทั้งสองภูมิภาคภายในบัญชีเดียวกัน
- เผยแพร่เมตริกที่กำหนดเองไปที่ อเมซอน คลาวด์วอตช์ ในทั้งสองภูมิภาคภายในบัญชีเดียวกัน
- จุดตรวจสอบการจำลองแบบ – จุดตรวจการจำลองใช้ตารางส่วนกลางของ DynamoDB ทั้งในภูมิภาคหลักและรอง ฟังก์ชัน Lambda จำลองแบบข้ามภูมิภาคใช้ฟังก์ชันนี้เพื่อยืนยันการประทับเวลาคอมมิตของเรกคอร์ดการจำลองล่าสุดในฐานะจุดตรวจสอบการจำลองสำหรับทุกสตรีมที่กำหนดค่าสำหรับการจำลองแบบ สำหรับโพสต์นี้ เราสร้างและใช้ตารางส่วนกลางที่เรียกว่า
kdsReplicationCheckpoint
. - การกำหนดค่าภูมิภาคที่ใช้งานอยู่ – ภูมิภาคที่ใช้งานอยู่จะใช้ตารางส่วนกลางของ DynamoDB ทั้งในภูมิภาคหลักและรอง ใช้ความสามารถในการจำลองแบบข้ามภูมิภาคของตารางส่วนกลางเพื่อทำซ้ำการกำหนดค่า มีการเติมข้อมูลล่วงหน้าว่าภูมิภาคใดเป็นภูมิภาคหลักสำหรับสตรีม เพื่อป้องกันการจำลองกลับไปยังภูมิภาคหลักโดยฟังก์ชัน Lambda ในภูมิภาคสแตนด์บาย การกำหนดค่านี้อาจไม่จำเป็นหากฟังก์ชัน Lambda ในเขตสแตนด์บายมีการตั้งค่าการทำงานพร้อมกันที่สงวนไว้เป็นศูนย์ แต่สามารถใช้เป็นการตรวจสอบความปลอดภัยเพื่อหลีกเลี่ยงการวนซ้ำข้อมูลแบบวนซ้ำไม่สิ้นสุด สำหรับโพสต์นี้ เราสร้างตารางสากลที่เรียกว่า
kdsActiveRegionConfig
และใส่รายการที่มีข้อมูลต่อไปนี้:{ "stream-name": "example-stream-1", "active-region" : "us-east-1" }
- สตรีมข้อมูล Kinesis – สตรีมที่ตัวประมวลผล CDC สร้างข้อมูล สำหรับโพสต์นี้เราใช้สตรีมที่เรียกว่า
example-stream-1
ในทั้งสองภูมิภาค โดยมีการกำหนดค่าชาร์ดและนโยบายการเข้าถึงเหมือนกัน
ลำดับขั้นตอนในการจำลองแบบข้ามภูมิภาค
มาดูวิธีการใช้สถาปัตยกรรมโดยสังเขปโดยใช้ไดอะแกรมลำดับต่อไปนี้
ลำดับประกอบด้วยขั้นตอนต่อไปนี้:
- โปรเซสเซอร์ CDC (ใน
us-east-1
) อ่านข้อมูล CDC จากแหล่งข้อมูลระยะไกล - โปรเซสเซอร์ CDC (ใน
us-east-1
) สตรีมข้อมูล CDC ไปยัง Kinesis Data Streams (ในus-east-1
). - ฟังก์ชัน Lambda การจำลองแบบข้ามภูมิภาค (ใน us-east-1) ใช้ข้อมูลจากสตรีมข้อมูล (ใน
us-east-1
). ขอแนะนำให้ใช้รูปแบบการกระจายที่ปรับปรุงแล้วสำหรับการเฉพาะและเพิ่มปริมาณงานสำหรับการจำลองแบบข้ามภูมิภาค - ฟังก์ชันจำลองแลมบ์ดา (ใน
us-east-1
) ตรวจสอบภูมิภาคปัจจุบันด้วยการกำหนดค่าภูมิภาคที่ใช้งานอยู่สำหรับสตรีมที่กำลังใช้ ด้วยความช่วยเหลือของkdsActiveRegionConfig
DynamoDB global tableโค้ดตัวอย่างต่อไปนี้ (ใน Java) สามารถช่วยอธิบายเงื่อนไขที่กำลังประเมินได้:// Fetch the current AWS Region from the Lambda function’s environment String currentAWSRegion = System.getenv(“AWS_REGION”); // Read the stream name from the first Kinesis Record once for the entire batch being processed. This is done because we are reusing the same Lambda function for replicating multiple streams. String currentStreamNameConsumed = kinesisRecord.getEventSourceARN().split(“:”)[5].split(“/”)[1]; // Build the DynamoDB query condition using the stream name Map<String, Condition> keyConditions = singletonMap(“streamName”, Condition.builder().comparisonOperator(EQ).attributeValueList(AttributeValue.builder().s(currentStreamNameConsumed).build()).build()); // Query the DynamoDB Global Table QueryResponse queryResponse = ddbClient.query(QueryRequest.builder().tableName("kdsActiveRegionConfig").keyConditions(keyConditions).attributesToGet(“ActiveRegion”).build());
- ฟังก์ชันประเมินการตอบสนองจาก DynamoDB ด้วยรหัสต่อไปนี้:
// Evaluate the response if (queryResponse.hasItems()) { AttributeValue activeRegionForStream = queryResponse.items().get(0).get(“ActiveRegion”); return currentAWSRegion.equalsIgnoreCase(activeRegionForStream.s()); }
- ขึ้นอยู่กับการตอบสนอง ฟังก์ชันดำเนินการต่อไปนี้:
- ถ้าคำตอบคือ
true
ฟังก์ชันตัวจำลองสร้างบันทึกไปยัง Kinesis Data Streams ในus-east-2
ตามลำดับ- หากมีความล้มเหลว หมายเลขลำดับของเรคคอร์ดจะถูกติดตามและการวนซ้ำจะใช้งานไม่ได้ ฟังก์ชันส่งคืนรายการหมายเลขลำดับที่ล้มเหลว โดยการส่งคืนหมายเลขลำดับที่ล้มเหลว โซลูชันจะใช้คุณลักษณะของ ด่านแลมบ์ดา เพื่อให้สามารถดำเนินการต่อชุดของเร็กคอร์ดด้วยความล้มเหลวบางส่วน สิ่งนี้มีประโยชน์เมื่อต้องจัดการกับความบกพร่องของบริการ โดยฟังก์ชันจะพยายามจำลองข้อมูลข้ามภูมิภาคเพื่อให้แน่ใจว่าสตรีมมีความเท่าเทียมกันและไม่มีข้อมูลสูญหาย
- หากไม่มีความล้มเหลว รายการว่างเปล่าจะถูกส่งกลับ ซึ่งบ่งชี้ว่าแบทช์สำเร็จ
- ถ้าคำตอบคือ
false
ฟังก์ชันตัวจำลองจะส่งกลับโดยไม่ทำการจำลองแบบใดๆ เพื่อลดต้นทุนของการเรียกใช้ Lambda คุณสามารถตั้งค่าการทำงานพร้อมกันที่สงวนไว้ของฟังก์ชันในภูมิภาค DR (us-east-2
) ถึงศูนย์ สิ่งนี้จะป้องกันไม่ให้เรียกใช้ฟังก์ชัน เมื่อคุณเฟลโอเวอร์ คุณสามารถอัพเดตค่านี้เป็นตัวเลขที่เหมาะสมตามปริมาณงาน CDC และตั้งค่าการทำงานพร้อมกันที่สงวนไว้ของฟังก์ชันในus-east-1
เป็นศูนย์เพื่อป้องกันไม่ให้ดำเนินการโดยไม่จำเป็น
- ถ้าคำตอบคือ
- หลังจากสร้างบันทึกทั้งหมดไปยัง Kinesis Data Streams ใน
us-east-2
, จุดตรวจสอบฟังก์ชันตัวจำลองไปยังkdsReplicationCheckpoint
ตารางส่วนกลาง DynamoDB (ในus-east-1
) ด้วยข้อมูลต่อไปนี้:{ "streamName": "example-stream-1", "lastReplicatedTimestamp": "2022-07-18T20:00:00" }
- ฟังก์ชันจะส่งคืนหลังจากประมวลผลชุดเร็กคอร์ดเรียบร้อยแล้ว
การพิจารณาประสิทธิภาพ
ควรเข้าใจความคาดหวังด้านประสิทธิภาพของโซลูชันโดยคำนึงถึงปัจจัยต่อไปนี้:
- การเลือกภูมิภาค – เวลาแฝงของการจำลองเป็นสัดส่วนโดยตรงกับระยะทางที่ข้อมูลเดินทาง ดังนั้นโปรดทำความเข้าใจการเลือกภูมิภาคของคุณ
- ความเร็ว – ความเร็วขาเข้าของข้อมูลหรือปริมาณข้อมูลที่ถูกจำลองแบบ
- ขนาดน้ำหนักบรรทุก – ขนาดของเพย์โหลดที่ถูกจำลองแบบ
ตรวจสอบการจำลองแบบข้ามภูมิภาค
ขอแนะนำให้ติดตามและสังเกตการจำลองแบบที่เกิดขึ้น คุณสามารถปรับแต่งฟังก์ชัน Lambda เพื่อเผยแพร่เมตริกแบบกำหนดเองไปยัง CloudWatch ด้วยเมตริกต่อไปนี้เมื่อสิ้นสุดการเรียกใช้ทุกครั้ง การเผยแพร่เมตริกเหล่านี้ไปยังทั้งภูมิภาคหลักและภูมิภาครองจะช่วยป้องกันตัวคุณเองจากความบกพร่องที่ส่งผลต่อความสามารถในการสังเกตในภูมิภาคหลัก
- ทางเข้า – ขนาดแบทช์การเรียกใช้แลมบ์ดาปัจจุบัน
- ReplicationLag วินาที – ความแตกต่างระหว่างการประทับเวลาปัจจุบัน (หลังจากประมวลผลบันทึกทั้งหมด) และ
ApproximateArrivalTimestamp
ของบันทึกล่าสุดที่ถูกทำซ้ำ
กราฟเมตริก CloudWatch ตัวอย่างต่อไปนี้แสดงความล่าช้าในการจำลองแบบโดยเฉลี่ยคือ 2 วินาทีโดยมีปริมาณงาน 100 รายการที่จำลองมาจาก us-east-1
ไปยัง us-east-2
.
กลยุทธ์ความล้มเหลวทั่วไป
ระหว่างการด้อยค่าใดๆ ที่ส่งผลกระทบต่อไปป์ไลน์ CDC ในภูมิภาคหลัก ความต่อเนื่องทางธุรกิจหรือความต้องการในการกู้คืนจากภัยพิบัติอาจกำหนดให้ไปป์ไลน์ล้มเหลวไปยังภูมิภาครอง (สแตนด์บาย) ซึ่งหมายความว่าต้องทำ XNUMX-XNUMX อย่างเพื่อเป็นส่วนหนึ่งของกระบวนการเฟลโอเวอร์นี้:
- ถ้าเป็นไปได้ ให้หยุดงาน CDC ทั้งหมดในเครื่องมือตัวประมวลผล CDC ใน
us-east-1
. - ตัวประมวลผล CDC ต้องล้มเหลวไปยังภูมิภาครอง เพื่อให้สามารถอ่านข้อมูล CDC จากแหล่งข้อมูลระยะไกลได้ในขณะที่ทำงานนอกภูมิภาคสแตนด์บาย
- พื้นที่
kdsActiveRegionConfig
จำเป็นต้องมีการอัปเดตตารางส่วนกลางของ DynamoDB ตัวอย่างเช่นสำหรับกระแสexample-stream-1
ใช้ในตัวอย่างของเรา ภูมิภาคที่ใช้งานจะเปลี่ยนเป็นus-east-2
:
{ "stream-name": "example-stream-1", "active-Region" : "us-east-2"
}
- ต้องอ่านจุดตรวจสอบสตรีมทั้งหมดจาก
kdsReplicationCheckpoint
ตารางส่วนกลาง DynamoDB (ในus-east-2
) และการประทับเวลาจากจุดตรวจสอบแต่ละจุดจะถูกใช้เพื่อเริ่มงาน CDC ในเครื่องมือตัวสร้างus-east-2
ภูมิภาค. ซึ่งช่วยลดโอกาสที่ข้อมูลจะสูญหายและกลับมาสตรีมข้อมูล CDC จากแหล่งข้อมูลระยะไกลต่อจากจุดตรวจสอบเวลาเป็นต้นไปได้อย่างแม่นยำ - หากใช้การทำงานพร้อมกันที่สงวนไว้เพื่อควบคุมการเรียกใช้ Lambda ให้ตั้งค่าเป็นศูนย์ในภูมิภาคหลัก (
us-east-1
) และค่าที่ไม่ใช่ศูนย์ที่เหมาะสมในภูมิภาครอง (us-east-2
).
กลยุทธ์การเฟลโอเวอร์แบบหลายขั้นตอนของ Vanguard
เครื่องมือของบุคคลที่สามบางตัวที่ Vanguard ใช้มีกระบวนการ CDC สองขั้นตอนในการสตรีมข้อมูลจากแหล่งข้อมูลระยะไกลไปยังปลายทาง เครื่องมือของ Vanguard ที่เลือกใช้สำหรับโปรเซสเซอร์ CDC เป็นไปตามแนวทางสองขั้นตอนนี้:
- ขั้นตอนแรกเกี่ยวข้องกับการตั้งค่างานสตรีมบันทึกที่อ่านข้อมูลจากแหล่งข้อมูลระยะไกลและคงอยู่ในตำแหน่งที่กำลังจัดเตรียม
- ขั้นตอนที่สองเกี่ยวข้องกับการตั้งค่างานของผู้บริโภคแต่ละรายที่อ่านข้อมูลจากตำแหน่งการจัดเตรียมซึ่งอาจเปิดอยู่ ระบบไฟล์ Amazon Elastic (Amazon EFS) หรือ อเมซอน FSxตัวอย่างเช่น—และสตรีมไปยังปลายทาง ความยืดหยุ่นในที่นี้คือแต่ละงานของผู้บริโภคเหล่านี้สามารถถูกเรียกให้สตรีมจากการประทับเวลาที่ต่างกันได้ งานสตรีมบันทึกมักจะเริ่มอ่านข้อมูลจากค่าต่ำสุดของการประทับเวลาทั้งหมดที่ใช้โดยงานของผู้บริโภค
ลองดูตัวอย่างเพื่ออธิบายสถานการณ์:
- งานผู้บริโภค A กำลังสตรีมข้อมูลจากการประทับเวลาคอมมิต 2022-07-19T20:00:00 เป็นต้นไป
example-stream-1
. - งานผู้บริโภค B กำลังสตรีมข้อมูลจากการประทับเวลาคอมมิชชัน 2022-07-19T21:00:00 เป็นต้นไป
example-stream-2
. - ในสถานการณ์นี้ สตรีมบันทึกควรอ่านข้อมูลจากแหล่งข้อมูลระยะไกลจากเวลาประทับขั้นต่ำที่ใช้โดยงานของผู้บริโภค ซึ่งก็คือ 2022-07-19T20:00:00
ไดอะแกรมลำดับต่อไปนี้แสดงขั้นตอนที่ถูกต้องในการรันระหว่างการเฟลโอเวอร์ us-east-2
(ภาคสแตนด์บาย).
ขั้นตอนมีดังนี้:
- กระบวนการเฟลโอเวอร์ถูกทริกเกอร์ในภูมิภาคสแตนด์บาย (
us-east-2
ในตัวอย่างนี้) เมื่อจำเป็น โปรดทราบว่าทริกเกอร์สามารถทำงานโดยอัตโนมัติได้โดยใช้การตรวจสอบความสมบูรณ์ของไปป์ไลน์ในภูมิภาคหลัก - กระบวนการเฟลโอเวอร์จะอัปเดตตารางส่วนกลาง kdsActiveRegionConfig DynamoDB ด้วยค่าใหม่สำหรับภูมิภาคเป็น
us-east-2
สำหรับชื่อสตรีมทั้งหมด - ขั้นตอนต่อไปคือการดึงข้อมูลจุดตรวจสอบสตรีมทั้งหมดจาก
kdsReplicationCheckpoint
ตารางส่วนกลาง DynamoDB (ในus-east-2
). - หลังจากอ่านข้อมูลจุดตรวจสอบแล้ว กระบวนการเฟลโอเวอร์จะค้นหาค่าต่ำสุดของทั้งหมด
lastReplicatedTimestamp
. - งานล็อกสตรีมในเครื่องมือตัวประมวลผล CDC เริ่มต้นขึ้นแล้ว
us-east-2
ด้วยการประทับเวลาที่พบในขั้นตอนที่ 4 โดยจะเริ่มอ่านข้อมูล CDC จากแหล่งข้อมูลระยะไกลจากการประทับเวลานี้เป็นต้นไป และคงอยู่ในตำแหน่งการจัดเตรียมบน AWS - ขั้นตอนต่อไปคือการเริ่มงานผู้บริโภคทั้งหมดเพื่ออ่านข้อมูลจากตำแหน่งการจัดเตรียมและสตรีมไปยังสตรีมข้อมูลปลายทาง นี่คือที่ที่แต่ละงานของผู้บริโภคได้รับการประทับเวลาที่เหมาะสมจาก
kdsReplicationCheckpoint
ตารางตามstreamName
ซึ่งงานจะสตรีมข้อมูล
หลังจากเริ่มงานผู้บริโภคทั้งหมดแล้ว ข้อมูลจะถูกสร้างขึ้นไปยังสตรีมข้อมูล Kinesis ใน us-east-2 จากนั้น กระบวนการจำลองแบบข้ามภูมิภาคจะเหมือนกับที่อธิบายไว้ก่อนหน้านี้ – ฟังก์ชันแลมบ์ดาจำลองใน us-east-2
เริ่มจำลองข้อมูลไปยังสตรีมข้อมูลใน us-east-1
.
แอปพลิเคชันผู้บริโภคที่อ่านข้อมูลจากสตรีมนั้นคาดว่าจะสามารถจัดการข้อมูลที่ซ้ำกันได้ สามารถนำรายการที่ซ้ำกันมาใช้ในสตรีมได้เนื่องจากสาเหตุหลายประการ ซึ่งสาเหตุส่วนหนึ่งได้ระบุไว้ด้านล่าง
- ผู้ผลิตหรือตัวประมวลผล CDC แนะนำรายการที่ซ้ำกันในสตรีมในขณะที่เล่นซ้ำข้อมูล CDC ในระหว่างการล้มเหลว
- DynamoDB Global Table ใช้การจำลองแบบอะซิงโครนัสของข้อมูลข้ามภูมิภาค และถ้า
kdsReplicationCheckpoint
ข้อมูลตารางมีความล่าช้าในการจำลอง กระบวนการเฟลโอเวอร์อาจใช้การประทับเวลาจุดตรวจสอบที่เก่ากว่าเพื่อเล่นข้อมูล CDC ซ้ำ
นอกจากนี้ แอปพลิเคชันสำหรับผู้บริโภคควรตรวจสอบ CommitTimestamp ของเรกคอร์ดล่าสุดที่ใช้ นี่คือการอำนวยความสะดวกในการตรวจสอบและการกู้คืนที่ดีขึ้น
เส้นทางสู่ความเป็นผู้ใหญ่: การกู้คืนอัตโนมัติ
สถานะในอุดมคติคือทำให้กระบวนการเฟลโอเวอร์เป็นแบบอัตโนมัติโดยสมบูรณ์ ลดเวลาในการกู้คืนและบรรลุวัตถุประสงค์ระดับการบริการ (SLO) ที่ยืดหยุ่นได้ อย่างไรก็ตาม ในองค์กรส่วนใหญ่ การตัดสินใจที่จะล้มเหลว การล้มเหลว การย้อนกลับ และการกระตุ้นให้เกิดความล้มเหลว จำเป็นต้องมีการแทรกแซงด้วยตนเองในการประเมินสถานการณ์และตัดสินใจผลลัพธ์ การสร้างสคริปต์อัตโนมัติเพื่อดำเนินการเฟลโอเวอร์ที่มนุษย์สามารถดำเนินการได้นั้นเป็นจุดเริ่มต้นที่ดี
Vanguard ทำให้ขั้นตอนทั้งหมดของการเฟลโอเวอร์เป็นไปโดยอัตโนมัติ แต่ก็ยังมีมนุษย์เป็นผู้ตัดสินใจว่าจะเรียกใช้เมื่อใด คุณสามารถปรับแต่งโซลูชันให้ตรงกับความต้องการของคุณ และขึ้นอยู่กับเครื่องมือตัวประมวลผล CDC ที่คุณใช้ในสภาพแวดล้อมของคุณ
สรุป
ในโพสต์นี้ เราได้อธิบายวิธีที่ Vanguard คิดค้นและสร้างโซลูชันสำหรับการจำลองข้อมูลข้ามภูมิภาคใน Kinesis Data Streams เพื่อทำให้ข้อมูลมีความพร้อมใช้งานสูง นอกจากนี้ เรายังแสดงกลยุทธ์จุดตรวจสอบที่มีประสิทธิภาพเพื่ออำนวยความสะดวกในการเฟลโอเวอร์ของกระบวนการจำลองแบบในระดับภูมิภาคเมื่อจำเป็น โซลูชันนี้ยังแสดงวิธีใช้ตารางส่วนกลางของ DynamoDB เพื่อติดตามจุดตรวจสอบการจำลองและการกำหนดค่า ด้วยสถาปัตยกรรมนี้ Vanguard จึงสามารถปรับใช้ปริมาณงานที่ขึ้นอยู่กับข้อมูล CDC ไปยังภูมิภาคต่างๆ เพื่อตอบสนองความต้องการทางธุรกิจที่มีความพร้อมใช้งานสูง ท่ามกลางความบกพร่องของบริการที่ส่งผลกระทบต่อไปป์ไลน์ CDC ในภูมิภาคหลัก
หากคุณมีข้อเสนอแนะใด ๆ โปรดแสดงความคิดเห็นในส่วนความคิดเห็นด้านล่าง
เกี่ยวกับผู้แต่ง
ราหุบุพพนา ทำงานเป็น Enterprise Architect ที่ Chief Technology Office ของ Vanguard Raghu เชี่ยวชาญด้านการวิเคราะห์ข้อมูล การย้ายข้อมูล/การจำลองข้อมูล รวมถึงท่อ CDC การกู้คืนความเสียหาย และฐานข้อมูล เขาได้รับการรับรอง AWS หลายรายการ รวมถึง AWS Certified Security – Specialty & AWS Certified Data Analytics – Specialty
ปรเมศวรานที่ XNUMX ไวยาธาน เป็นสถาปนิกอาวุโสด้าน Cloud Resilience กับ Amazon Web Services เขาช่วยให้องค์กรขนาดใหญ่บรรลุเป้าหมายทางธุรกิจด้วยการออกแบบสถาปัตยกรรมและสร้างโซลูชันที่ปรับขนาดได้และยืดหยุ่นบน AWS Cloud
ริชา คอล เป็นผู้นำอาวุโสด้านโซลูชั่นลูกค้าที่ให้บริการลูกค้าด้านการเงิน เธอมาจากนิวยอร์ก เธอมีประสบการณ์มากมายในการเปลี่ยนแปลงระบบคลาวด์ขนาดใหญ่ ความเป็นเลิศของพนักงาน และโซลูชันดิจิทัลยุคหน้า เธอและทีมของเธอมุ่งเน้นที่การปรับมูลค่าคลาวด์ให้เหมาะสมด้วยการสร้างโซลูชันที่มีประสิทธิภาพ ยืดหยุ่น และคล่องตัว Richa สนุกกับกีฬาหลายประเภท เช่น ไตรกีฬา ดนตรี และการเรียนรู้เกี่ยวกับเทคโนโลยีใหม่ๆ
มิถิลปรา เป็นผู้จัดการโซลูชันลูกค้าหลักกับ Amazon Web Services ในบทบาทของเขา มิธิลทำงานร่วมกับลูกค้าเพื่อขับเคลื่อนการสร้างมูลค่าบนคลาวด์ จัดหาผู้นำทางความคิดเพื่อช่วยให้ธุรกิจบรรลุความเร็ว ความคล่องตัว และนวัตกรรม
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- เพลโตบล็อคเชน Web3 Metaverse ข่าวกรอง ขยายความรู้. เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/big-data/how-vanguard-made-their-technology-platform-resilient-and-efficient-by-building-cross-region-replication-for-amazon-kinesis-data-streams/
- 1
- 100
- 2022
- 28
- a
- ความสามารถ
- สามารถ
- เกี่ยวกับเรา
- ข้างบน
- เข้า
- ตาม
- ลงชื่อเข้าใช้
- แม่นยำ
- บรรลุ
- ข้าม
- การปฏิบัติ
- คล่องแคล่ว
- อย่างกระตือรือร้น
- จริง
- นอกจากนี้
- คำแนะนำ
- น่าสงสาร
- ราคาไม่แพง
- หลังจาก
- กับ
- เปรียว
- ทั้งหมด
- ช่วยให้
- ทางเลือก
- อเมซอน
- Amazon EC2
- อเมซอน Kinesis
- Amazon Web Services
- จำนวน
- การวิเคราะห์
- และ
- การใช้งาน
- เข้าใกล้
- เหมาะสม
- สถาปัตยกรรม
- โดยอัตโนมัติ
- อัตโนมัติ
- อัตโนมัติ
- ความพร้อมใช้งาน
- ใช้ได้
- เฉลี่ย
- หลีกเลี่ยง
- AWS
- ได้รับการรับรอง AWS
- กลับ
- ตาม
- เพราะ
- กำลัง
- ด้านล่าง
- ดีกว่า
- ระหว่าง
- สั้น
- แตก
- สร้าง
- การก่อสร้าง
- สร้าง
- built-in
- ธุรกิจ
- ต่อเนื่องทางธุรกิจ
- ธุรกิจ
- ที่เรียกว่า
- จับ
- จับ
- กรณี
- CDC
- การรับรอง
- มีมาตรฐาน
- โอกาส
- เปลี่ยนแปลง
- ตรวจสอบ
- การตรวจสอบ
- หัวหน้า
- ทางเลือก
- เมฆ
- เทคโนโลยีคลาวด์
- รหัส
- ความเห็น
- ความคิดเห็น
- ผูกมัด
- ส่วนประกอบ
- ครอบคลุม
- คำนวณ
- สภาพ
- องค์ประกอบ
- การพิจารณา
- ถูกใช้
- ผู้บริโภค
- ผู้บริโภค
- การบริโภค
- อย่างต่อเนื่อง
- ควบคุม
- ราคา
- ได้
- คู่
- สร้าง
- การสร้าง
- วิกฤติ
- ปัจจุบัน
- ขณะนี้
- ประเพณี
- ลูกค้า
- โซลูชั่นสำหรับลูกค้า
- ลูกค้า
- ปรับแต่ง
- ข้อมูล
- วิเคราะห์ข้อมูล
- ข้อมูลสูญหาย
- ฐานข้อมูล
- ฐานข้อมูล
- กำลังตัดสินใจ
- การตัดสินใจ
- ทุ่มเท
- แสดงให้เห็นถึง
- แสดงให้เห็นถึง
- ทั้งนี้ขึ้นอยู่กับ
- ขึ้นอยู่กับ
- ปรับใช้
- นำไปใช้
- อธิบาย
- ปลายทาง
- รายละเอียด
- ความแตกต่าง
- ต่าง
- ดิจิตอล
- โดยตรง
- ภัยพิบัติ
- กล่าวถึง
- ระยะทาง
- ขับรถ
- การขับขี่
- ที่ซ้ำกัน
- ในระหว่าง
- แต่ละ
- ก่อน
- ที่ได้รับ
- เศรษฐกิจ
- การประหยัดจากขนาด
- ที่มีประสิทธิภาพ
- ลูกจ้าง
- ช่วยให้
- ที่เพิ่มขึ้น
- ทำให้มั่นใจ
- Enterprise
- ผู้ประกอบการ
- ทั้งหมด
- สิ่งแวดล้อม
- อีเธอร์ (ETH)
- ประเมินค่า
- ประเมิน
- เหตุการณ์
- ทุกๆ
- ตัวอย่าง
- ความยอดเยี่ยม
- การดำเนินงาน
- ความคาดหวัง
- ที่คาดหวัง
- ประสบการณ์
- อธิบาย
- อธิบาย
- กว้างขวาง
- ภายนอก
- ใบหน้า
- อำนวยความสะดวก
- ปัจจัย
- ล้มเหลว
- ล้มเหลว
- ความล้มเหลว
- ลักษณะ
- ข้อเสนอแนะ
- สนาม
- เนื้อไม่มีมัน
- ทางการเงิน
- บริการทางการเงิน
- พบ
- ชื่อจริง
- ความยืดหยุ่น
- โฟกัส
- ดังต่อไปนี้
- ดังต่อไปนี้
- สำหรับนักลงทุน
- พบ
- ราคาเริ่มต้นที่
- อย่างเต็มที่
- ฟังก์ชัน
- รุ่น
- เหตุการณ์ที่
- โลก
- เป้าหมาย
- ดี
- กราฟ
- แขก
- โพสต์ของผู้เข้าพัก
- จัดการ
- การจัดการ
- ที่เกิดขึ้น
- สุขภาพ
- ช่วย
- จะช่วยให้
- โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม
- จุดสูง
- อย่างสูง
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- อย่างไรก็ตาม
- HTTPS
- เป็นมนุษย์
- มนุษย์
- AMI
- ในอุดมคติ
- เอกลักษณ์
- การด้อยค่า
- ปรับปรุง
- ช่วยเพิ่ม
- in
- รวมทั้ง
- ขาเข้า
- เพิ่มขึ้น
- บ่งชี้ว่า
- เป็นรายบุคคล
- ข้อมูล
- โครงสร้างพื้นฐาน
- นักวิเคราะห์ส่วนบุคคลที่หาโอกาสให้เป็นไปได้มากที่สุด
- ตัวอย่าง
- การแทรกแซง
- แนะนำ
- เปิดตัว
- นักลงทุน
- นักลงทุน
- ที่เกี่ยวข้องกับการ
- IT
- การย้ำ
- ชวา
- กรกฎาคม
- คีย์
- สตรีมข้อมูล Kinesis
- ใหญ่
- ชื่อสกุล
- ความแอบแฝง
- ผู้นำ
- ความเป็นผู้นำ
- การเรียนรู้
- ทิ้ง
- ชั้น
- Line
- เส้น
- รายการ
- น้อย
- ที่ตั้ง
- ดู
- ปิด
- ทำ
- รักษา
- ทำ
- ทำให้
- การจัดการ
- ผู้จัดการ
- ลักษณะ
- คู่มือ
- หลาย
- การทำแผนที่
- อย่างมากมาย
- วุฒิภาวะ
- วิธี
- กลไก
- พบ
- ที่ประชุม
- เมตริก
- ตัวชี้วัด
- ต่ำสุด
- ขั้นต่ำ
- โหมด
- การแก้ไข
- การตรวจสอบ
- มากที่สุด
- หลาย
- หลาย
- ดนตรี
- ชื่อ
- ชื่อ
- พื้นเมือง
- จำเป็นต้อง
- จำเป็น
- ความต้องการ
- ใหม่
- เทคโนโลยีใหม่ ๆ
- นิวยอร์ก
- ถัดไป
- จำนวน
- ตัวเลข
- วัตถุประสงค์
- สังเกต
- Office
- การดำเนินงาน
- การเพิ่มประสิทธิภาพ
- องค์กร
- ผล
- ความเท่าเทียมกัน
- ส่วนหนึ่ง
- ร่วมมือ
- พรรค
- แบบแผน
- ดำเนินการ
- การปฏิบัติ
- ที่มีประสิทธิภาพ
- สิทธิ์
- ยังคงมีอยู่
- ส่วนบุคคล
- ท่อ
- สถานที่
- เวที
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- กรุณา
- นโยบาย
- เป็นไปได้
- โพสต์
- ที่อาจเกิดขึ้น
- ป้องกัน
- ประถม
- หลัก
- กระบวนการ
- การประมวลผล
- หน่วยประมวลผล
- ผลิต
- ผู้ผลิต
- ผู้ผลิต
- ส่งเสริม
- ป้องกัน
- ให้
- ให้
- ให้
- ประกาศ
- การประกาศ
- วัตถุประสงค์
- ใส่
- อ่าน
- การอ่าน
- สำนึก
- เหตุผล
- แนะนำ
- ระเบียน
- บันทึก
- กู้
- การฟื้นตัว
- ลด
- ลด
- ภูมิภาค
- ของแคว้น
- ภูมิภาค
- รีโมท
- การจำลองแบบ
- ทำซ้ำ
- การทำซ้ำ
- จำเป็นต้องใช้
- ความต้องการ
- ต้อง
- ลิขสิทธิ์
- ความยืดหยุ่น
- ยืดหยุ่น
- คำตอบ
- REST
- เรซูเม่
- กลับ
- การคืน
- รับคืน
- แข็งแรง
- บทบาท
- รีด
- แถว
- วิ่ง
- ความปลอดภัย
- เดียวกัน
- ที่ปรับขนาดได้
- ขนาด
- สถานการณ์
- ที่สอง
- รอง
- วินาที
- Section
- ความปลอดภัย
- ระดับอาวุโส
- ลำดับ
- ให้บริการ
- บริการ
- บริการ
- การให้บริการ
- ชุด
- การตั้งค่า
- หลาย
- น่า
- แสดง
- แสดงให้เห็นว่า
- ความง่าย
- สถานการณ์
- ขนาด
- So
- ทางออก
- โซลูชัน
- บาง
- แหล่ง
- แหล่งที่มา
- ความเชี่ยวชาญ
- พิเศษ
- ความเร็ว
- กีฬา
- การแสดงละคร
- เริ่มต้น
- ข้อความที่เริ่ม
- เริ่มต้น
- สถานะ
- ขั้นตอน
- ขั้นตอน
- ยังคง
- หยุด
- จัดเก็บ
- กลยุทธ์
- กระแส
- ที่พริ้ว
- สตรีมมิ่งบริการ
- ลำธาร
- ที่ประสบความสำเร็จ
- ประสบความสำเร็จ
- เหมาะสม
- เหนือกว่า
- ที่จัดมา
- รองรับ
- ระบบ
- ตาราง
- ใช้เวลา
- เป้า
- งาน
- งาน
- ทีม
- ทีม
- วิชาการ
- เทคโนโลยี
- เทคโนโลยี
- พื้นที่
- ของพวกเขา
- สิ่ง
- ของบุคคลที่สาม
- คิดว่า
- ความเป็นผู้นำทางความคิด
- ตลอด
- ปริมาณงาน
- เวลา
- การประทับเวลา
- ไปยัง
- เครื่องมือ
- เครื่องมือ
- ลู่
- การติดตาม
- การแปลง
- เดินทาง
- เรียก
- ทริกเกอร์
- เข้าใจ
- เข้าใจ
- เกินความจำเป็น
- บันทึก
- ให้กับคุณ
- การปรับปรุง
- ใช้
- ใช้กรณี
- มักจะ
- UTC
- ความคุ้มค่า
- แนวหน้า
- ความเร็ว
- ผ่านทาง
- ปริมาณ
- เว็บ
- บริการเว็บ
- ที่
- ในขณะที่
- จะ
- ภายใน
- ไม่มี
- โรงงาน
- จะ
- เขียน
- เขียน
- ของคุณ
- ด้วยตัวคุณเอง
- ลมทะเล
- เป็นศูนย์
- โซน