เหตุใดฉันจึงควรใช้ Amazon Kinesis ไม่ใช่ SNS-SQS


164

ฉันมีกรณีการใช้งานที่จะมีกระแสข้อมูลไหลเข้ามาและฉันไม่สามารถใช้งานได้ในเวลาเดียวกันและต้องการบัฟเฟอร์ สิ่งนี้สามารถแก้ไขได้โดยใช้คิว SNS-SQS ฉันรู้ว่า Kinesis แก้จุดประสงค์เดียวกันดังนั้นอะไรคือความแตกต่าง? ทำไมฉันถึงชอบ Kinesis (หรือไม่ควร)

คำตอบ:


59

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

คำถามที่พบบ่อย



80

โปรดทราบว่าคำตอบนี้ถูกต้องในเดือนมิถุนายน 2558

หลังจากศึกษาปัญหามาพักหนึ่งแล้วเมื่อมีคำถามเดียวกันฉันพบว่า SQS (พร้อม SNS) เป็นที่นิยมใช้ในกรณีส่วนใหญ่เว้นแต่ว่าลำดับของข้อความนั้นสำคัญสำหรับคุณ (SQS ไม่รับประกัน FIFO กับข้อความ)

มี 2 ​​ข้อได้เปรียบหลักสำหรับ Kinesis:

  1. คุณสามารถอ่านข้อความเดียวกันได้จากหลายแอพพลิเคชั่น
  2. คุณสามารถอ่านข้อความใหม่ได้ในกรณีที่คุณต้องการ

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

นอกจากนี้เราได้เพิ่ม SQS เพิ่มเติมอีกหนึ่งรายการที่สมัครรับข่าวสารจาก SNS ที่จะเก็บข้อความไว้เป็นเวลา 14 วัน ในกรณีปกติไม่มีใครอ่านจาก SQS นี้ แต่ในกรณีที่มีข้อผิดพลาดที่ทำให้เราต้องการย้อนกลับข้อมูลเราสามารถอ่านข้อความทั้งหมดจาก SQS นี้ได้อย่างง่ายดายและส่งไปยัง SNS อีกครั้ง ในขณะที่ Kinesis ให้การเก็บรักษา 7 วันเท่านั้น

โดยสรุป SNS + SQS ง่ายกว่าและให้ความสามารถมากที่สุด IMO คุณต้องมีเคสที่แข็งแกร่งมากในการเลือก Kinesis


2
FYI: คุณสามารถรักษา Kinesis ได้นานถึง 7 วัน
Didier A.

30
เมื่อเร็ว ๆ นี้ AWS ได้ประกาศ SQS FIFO [ docs.aws.amazon.com/AWSSimpleQueueService/latest/…ซึ่งสามารถให้บริการการเรียงลำดับข้อความตามเวลาได้
VijeshJain

4
ความคิดเห็นเล็ก ๆ น้อยสุด - อาจจะไม่ใช้คำว่าsplitในSNS split the message to multiple SQSsเพราะมันไม่ได้ทำลายลงข้อความเป็นชิ้น แต่สำเนาไปยังสถานที่ต่างๆ
Mobigital

2
Kinesis ไม่เหมาะสมสำหรับกรณีการใช้งาน fan-out (pub-sub) เนื่องจากข้อ จำกัด เกี่ยวกับจำนวนผู้อ่านต่อชาร์ด / วินาที ในขณะที่ไม่เกี่ยวข้องกับการสอบสวนเดิมใครก็ตามที่อาศัย Kinesis การปรับขนาดให้กับผู้อ่าน n ควรพิจารณาข้อเท็จจริงนี้ Forums.aws.amazon.com/message.jspa?messageID=760351
codeasone

2
การรับประกันคำสั่งของ Kinesis เป็นแบบต่อเนื่องไม่ใช่แบบต่อสตรีม เมื่อคุณมีมากกว่าหนึ่งชิ้นส่วนทั้งหมดจะไม่มีการรับประกันตามคำสั่ง สำหรับคิว SQS เมื่อปริมาณงานค่อนข้างต่ำมันเกือบจะเป็น FIFO เฉพาะเมื่อปริมาณงานของคุณสูงขึ้นการสั่งซื้อก็จะน้อยลง นี่เกี่ยวข้องกับคิว SQS คลาสสิคไม่ใช่คิว FIFO
yoroto

54

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

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

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


11
เกี่ยวกับคำอธิบายของคุณใน SQS คุณสามารถบรรลุวิธีง่ายๆในการส่งข้อความเดียวกันไปยังหลาย ๆ SQS โดยให้ SNS อยู่ข้างหน้าพวกเขา
Roee Gavirel

8
แอป -> sns หัวข้อ ---> sqs1, sqs2, sqs3 ... ?
kartik

4
ใช่ฉันหมายถึงวิธีนี้อย่างแน่นอน
Roee Gavirel

@RoeeGavirel เกี่ยวกับคำขอ / ข้อ จำกัด ที่สองสำหรับ sns api?
Barbaros Alp

@BarbarosAlp - ฉันทราบเฉพาะข้อ จำกัด ทาง SMS (ข้อความมือถือ) ที่ปิดหัวข้อไว้ที่นี่ นี่คือเอกสารอย่างเป็นทางการ: docs.aws.amazon.com/general/latest/gr/…
Roee Gavirel

43

ความหมายของเทคโนโลยีเหล่านี้มีความแตกต่างเพราะถูกออกแบบมาเพื่อรองรับสถานการณ์ต่าง ๆ :

  • SNS / SQS: รายการในสตรีมไม่เกี่ยวข้องกัน
  • kinesis: รายการในกระแสที่จะเกี่ยวข้องกัน

ลองมาทำความเข้าใจความแตกต่างตามตัวอย่าง

  1. สมมติว่าเรามีกระแสการสั่งซื้อสำหรับการสั่งซื้อแต่ละครั้งเราจำเป็นต้องจองหุ้นบางส่วนและกำหนดการส่งมอบ เมื่อเสร็จสมบูรณ์เราสามารถลบรายการออกจากสตรีมได้อย่างปลอดภัยและเริ่มดำเนินการตามลำดับต่อไป เราทำคำสั่งก่อนหน้าอย่างสมบูรณ์ก่อนที่เราจะเริ่มคำสั่งถัดไป
  2. อีกครั้งเรามีคำสั่งซื้อที่เหมือนกัน แต่ตอนนี้เป้าหมายของเราคือจัดกลุ่มคำสั่งซื้อตามจุดหมายปลายทาง เมื่อเราพูดคำสั่งซื้อ 10 รายการไปยังสถานที่เดียวกันเราต้องการส่งมอบให้กัน (การเพิ่มประสิทธิภาพการส่ง) ตอนนี้เรื่องราวแตกต่าง: เมื่อเราได้รับไอเท็มใหม่จากกระแสเราไม่สามารถประมวลผลได้ ค่อนข้างเรา "รอ" สำหรับรายการเพิ่มเติมที่จะมาเพื่อให้บรรลุเป้าหมายของเรา ยิ่งกว่านั้นหากกระบวนการประมวลผลขัดข้องเราต้อง "กู้คืน" สถานะ (ดังนั้นจะไม่มีคำสั่งหายไป)

เมื่อการประมวลผลของรายการหนึ่งไม่สามารถแยกออกจากการประมวลผลอีกรายการได้เราจะต้องมี Kinesis semantics เพื่อจัดการกรณีทั้งหมดอย่างปลอดภัย


ด้วยคิว SQS FIFO เราจะได้รับข้อความเรียงตามที่ส่ง นั่นทำให้ SQS คล้ายกับ Kinesis ในด้านนี้หรือไม่?
Andy Dufresne

1
@AndyDufresne: ครอบคลุมสถานการณ์ที่มีความสำคัญในการสั่งซื้อ ในกรณี (1) ด้านบนคุณอาจต้องการจัดการคำสั่งซื้อ "ตามลำดับ" ดังนั้นหากสินค้าของคุณหมดคำสั่งซื้อในภายหลังจะถูกปฏิเสธหรือล่าช้า ความหมายของ FIFO ไม่ได้แก้ปัญหาสัมพัทธภาพหลัก (การจัดกลุ่ม)
Konstantin Triger

35

ข้อความที่ตัดตอนมาจากเอกสาร AWS :

เราขอแนะนำ Amazon Kinesis Streams สำหรับเคสการใช้งานที่มีข้อกำหนดที่คล้ายกับต่อไปนี้:

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

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

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

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

เราขอแนะนำ Amazon SQS สำหรับกรณีการใช้งานที่มีข้อกำหนดที่คล้ายกับต่อไปนี้:

  • อรรถศาสตร์การส่งข้อความ (เช่นการรับ / ระดับข้อความและการหมดเวลาการมองเห็น) ตัวอย่างเช่นคุณมีคิวของรายการงานและต้องการติดตามความสำเร็จของแต่ละรายการอย่างเป็นอิสระ Amazon SQS ติดตามการรับ / ล้มเหลวดังนั้นแอปพลิเคชันไม่จำเป็นต้องรักษาจุดตรวจสอบ / เคอร์เซอร์ถาวร Amazon SQS จะลบข้อความที่รับและส่งข้อความล้มเหลวอีกครั้งหลังจากหมดเวลาการมองเห็นที่กำหนดค่าไว้

  • ข้อความล่าช้าส่วนบุคคล ตัวอย่างเช่นคุณมีคิวงานและจำเป็นต้องกำหนดเวลางานแต่ละงานด้วยความล่าช้า ด้วย Amazon SQS คุณสามารถกำหนดค่าข้อความส่วนตัวให้ล่าช้าได้ถึง 15 นาที

  • การเพิ่มพร้อมกัน / ปริมาณงานแบบไดนามิกในเวลาที่อ่าน ตัวอย่างเช่นคุณมีคิวงานและต้องการเพิ่มผู้อ่านมากขึ้นจนกว่าจะมีงานค้าง ด้วย Amazon Kinesis Streams คุณสามารถเพิ่มจำนวนเศษให้เพียงพอ (หมายเหตุอย่างไรก็ตามคุณจะต้องจัดเตรียมเศษชิ้นส่วนให้เพียงพอก่อนเวลา)

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


34

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


คุณรับข้อความอย่างไร คุณหมายถึงการลบใช่ไหม
NeverEndingQueue

ใช่เป็นหลัก บอกว่าคุณทำกับข้อความนี้แล้ว
Matthew Curry

15

อีกอย่าง: Kinesis สามารถกระตุ้นแลมบ์ดาได้ในขณะที่ SQS ไม่สามารถทำได้ ดังนั้นด้วย SQS คุณต้องจัดเตรียมอินสแตนซ์ EC2 เพื่อประมวลผลข้อความ SQS (และจัดการกับมันหากล้มเหลว) หรือคุณต้องมีแลมบ์ดาตามกำหนดเวลา (ซึ่งไม่ได้ปรับเพิ่มหรือลดลง - คุณจะได้หนึ่งนาที .

แก้ไข: คำตอบนี้ไม่ถูกต้องอีกต่อไป SQS สามารถเรียกใช้แลมบ์ดาโดยตรง ณ เดือนมิถุนายน 2561

https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html


1
-1 ไม่เห็นด้วย ในขณะที่ Kinesis สามารถเรียกแลมบ์ดาได้สิ่งนี้ไม่ได้เปรียบอะไรมากกว่าแลมบ์ดา SQS หลังจะปรับขนาดได้อย่างราบรื่น (เช่นถ้าใช้เวลานานกว่าหนึ่งนาทีแลมบ์ดาที่สองจะหมุนขึ้น) ราคาเป็นเวลาต่อการคำนวณดังนั้นจึงไม่มีความแตกต่างที่เห็นได้ และถ้าคุณต้องการ lambdas พร้อมกันมากกว่า 5 ตัวให้เพิ่มทริกเกอร์หลาย ๆ ตัวแยกกันสองสามวินาที (โดยใช้ cron) นี่ไม่ใช่เหตุผลที่จะใช้ Kinesis ผ่าน SNS / SQS
Steven de Salas

5
ฉันไม่แน่ใจว่าฉันเห็นด้วยกับความขัดแย้ง;] - คุณสามารถกำหนดหนึ่งแลมบ์ดา / นาทีซึ่งจะ จำกัด ให้คุณแบทช์ประมวลผลข้อความที่มาถึงช่วงเวลานั้น Kinesis ช่วยให้คุณอ่านข้อความได้ทันที หรือเป็นสิ่งที่ฉันเข้าใจผิด?
Moszi

มีความแตกต่างอย่างมากระหว่างทริกเกอร์คลาวด์สองสามตัวกับหลายร้อยเมื่อต้องการเรียกแลมบ์ดาที่ดึงออกมาจาก SQS
Coding Pig

14
ตอนนี้แลมบ์ดาสนับสนุน SQS เป็นตัวกระตุ้น!
sixty4bit

11

รูปแบบการกำหนดราคาจะแตกต่างกันดังนั้นขึ้นอยู่กับกรณีการใช้งานของคุณอย่างใดอย่างหนึ่งอาจจะถูกกว่า ใช้กรณีที่ง่ายที่สุด (ไม่รวม SNS):

  • การเรียกเก็บเงิน SQS ต่อข้อความ (แต่ละ 64 KB นับเป็นคำขอเดียว)
  • Kinesis คิดค่าบริการต่อชาร์ดต่อชั่วโมง (1 ชาร์ดสามารถรองรับข้อความได้มากถึง 1,000 ข้อความหรือ 1 MB / วินาที) และปริมาณข้อมูลที่คุณป้อน (ทุก ๆ 25 KB)

เสียบราคาปัจจุบันและไม่คำนึงถึงระดับฟรีหากคุณส่งข้อความ 1 GB ต่อวันที่ขนาดข้อความสูงสุด Kinesis จะมีราคามากกว่า SQS ($ 10.82 / เดือนสำหรับ Kinesis เทียบกับ $ 0.20 / เดือนสำหรับ SQS) . แต่ถ้าคุณส่ง 1 TB ต่อวัน Kinesis จะค่อนข้างถูกกว่า ($ 158 / เดือนเทียบกับ $ 201 / เดือนสำหรับ SQS)

รายละเอียด: SQS เรียกเก็บเงิน $ 0.40 ต่อการร้องขอ (64 KB ต่อการร้องขอ) ดังนั้น $ 0.00655 ต่อ GB ที่ 1 GB ต่อวันนี่แค่ต่ำกว่า $ 0.20 ต่อเดือน ที่ 1 TB ต่อวันมันมาน้อยกว่า $ 201 ต่อเดือน

Kinesis คิดค่าบริการ $ 0.014 ต่อการร้องขอ (25 KB ต่อการร้องขอ) ดังนั้น $ 0.00059 ต่อ GB ที่ 1 GB ต่อวันนี้น้อยกว่า $ 0.02 ต่อเดือน ที่ 1 TB ต่อวันประมาณ $ 18 ต่อเดือน อย่างไรก็ตาม Kinesis คิดค่าธรรมเนียม $ 0.015 ต่อชาร์ดชั่วโมง คุณต้องมีอย่างน้อย 1 ชิ้นต่อ 1 MB ต่อวินาที ที่ 1 GB ต่อวันเศษ 1 ชิ้นจะมีมากมายดังนั้นจะเพิ่มอีก $ 0.36 ต่อวันสำหรับค่าใช้จ่ายทั้งหมด $ 10.82 ต่อเดือน ที่ 1 TB ต่อวันคุณจะต้องมีอย่างน้อย 13 เศษซึ่งเพิ่มอีก $ 4.68 ต่อวันสำหรับค่าใช้จ่ายทั้งหมด $ 158 ต่อเดือน


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

ขออภัยฉันทำผิดพลาดในการคำนวณของฉัน (แก้ไขแล้วตอนนี้ฉันหวังว่า)
John Velonis

ใช่ แต่จะเป็นอย่างไรถ้าขนาดข้อความ SQS เฉลี่ยของคุณเล็กพูดได้ 1kb หรือน้อยกว่า
mcmillab

1
@mcmillab SQS จะคิดเหมือนกันไม่ว่าข้อความของคุณคือ 1 กิโลไบต์หรือ 64 กิโลไบต์ - ดูหน้าการกำหนดราคาของ Amazon SQS ดังนั้นหากข้อความของคุณมีเพียง 1 KB SQS จะเสียค่าใช้จ่าย 64 เท่าเท่ากับตัวเลขที่ฉันให้ไว้ข้างต้นหากคุณส่งข้อมูลจำนวนเท่ากันทั้งหมด อย่างไรก็ตามคำขอเดียวสามารถมีได้มากถึง 10 ข้อความดังนั้นหากคุณสามารถแบตช์ข้อความด้วยกันอาจมีเพียง 6x เท่า (ขึ้นอยู่กับว่าแบตช์ของคุณเต็ม)
John Velonis

1
@JohnVelonis เหนือการคำนวณสำหรับการกำหนดราคา SQS หายไปเป็นส่วนสำคัญ จำเป็นต้องมีความระมัดระวังเป็นพิเศษเพื่อให้เข้าใจถึงการเรียกเก็บเงิน SQS 1 คำขอ = 1 การกระทำของ API ในการประมวลผล "ข้อความ" เดียวคุณจำเป็นต้องดำเนินการ API อย่างน้อย 3 อย่าง: 1 ส่ง + 1 อ่าน + 1 ลบ คุณสมบัติ SQS อื่น ๆ เช่นการเปลี่ยนการมองเห็นจะทำให้เกิดการทำงานของ API มากขึ้น ตัวทวีคูณที่ไม่คาดคิดนี้ค่อนข้างน่ารังเกียจและโดยทั่วไปแล้วจะส่งผลให้ SQS มีราคาแพงกว่า Kinesis Streams 2-10 เท่าสำหรับชุดข้อมูลขนาดใหญ่ (ประมวลผลข้อความ 100 ล้านข้อความต่อเดือน)
Vlad Poskatcheev

9

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


5

ฉันจะเพิ่มอีกหนึ่งสิ่งที่ไม่มีใครพูดถึง - SQS มีขนาดใหญ่กว่าคำสั่งหลายคำสั่ง


3
คุณแน่ใจไหม? จากการคำนวณของฉัน Kinesis มีราคาแพงกว่ามาก แต่ฉันไม่เคยมีความสามารถในการใช้เครื่องคำนวณราคาแบบง่ายของ Amazon
Didier A.

ดูตัวอย่างการกำหนดราคาปัจจุบันของ aws: Kinesis ที่มีข้อความ 267 ล้านรายการอยู่ที่ประมาณ $ 60 ในขณะที่การใส่จำนวนข้อความผ่าน SQS จะส่งผลให้มีค่า $ 107 เห็นได้ชัดว่าฉันเพิ่งทำการเปรียบเทียบอย่างรวดเร็วจริง ๆ และสิ่งนี้แตกต่างอย่างมากกับกรณีการใช้ที่แตกต่างกัน แต่คำตอบนี้ควรได้รับเครดิตแน่นอน
Moszi

1
สมมติว่าคุณกำลังทำแฟนเพื่อบอกผู้บริโภค 2 รายและส่งข้อความ 100 ล้านข้อความต่อวัน ราคา SNS คือ $ 50 / วัน ค่าใช้จ่าย SQS คือ $ 40 / วัน / ผู้บริโภคหรือรวม $ 80 / วัน Kinesis คือ $ 1.4 / วันสำหรับ PUTs และ $ 0.36 / shard แม้จะมี 100 เศษ (100 MB / s ใน, 200 MB / s out) เพียง $ 3.60 / วัน + $ 1.40 / วัน ดังนั้น Kinesis ที่ $ 4 / วันกับ SNS / SQS ที่ $ 130 / วัน
Carlos Rendon

@Moszi คุณมาถึงการคำนวณนี้ได้อย่างไร คิว SQS มาตรฐานที่มีข้อความ 15,000,000 ข้อความต่อเดือนและการถ่ายโอนข้อมูล 10GB และการถ่ายโอนข้อมูลมีค่าใช้จ่ายเพียง 5.60 ดอลล่าร์สหรัฐ / เดือนในขณะที่อัตราบรรทุก 256KB (สูงสุด SQS) และ ~ 15,000,000 PUT หน่วย / เดือน (130 ชิ้น) ใน Kinesis เหรียญสหรัฐ / เดือน
simoncpu

3
ฉันสนใจที่จะรู้ว่าทำไมต้นทุนในกระทู้นี้จึงมีความแตกต่างกัน
โทมัส

2

Kinesis ใช้เคส

  • การเก็บข้อมูลบันทึกและเหตุการณ์
  • การวิเคราะห์ตามเวลาจริง
  • การเก็บข้อมูลมือถือ
  • ฟีดข้อมูล“ Internet of Things”

SQS ใช้เคส

  • การรวมแอพพลิเคชั่น
  • Decoupling microservices
  • จัดสรรงานให้กับโหนดผู้ทำงานหลายคน
  • Decouple การร้องขอของผู้ใช้จริงจากการทำงานเบื้องหลัง
  • แบทช์ข้อความสำหรับการประมวลผลในอนาคต
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.