โควต้าคาฟคาเป็นส่วนหนึ่งของคลัสเตอร์คาฟคาที่มีผู้เช่าหลายราย พวกเขาป้องกันไม่ให้ประสิทธิภาพของคลัสเตอร์ Kafka ได้รับผลกระทบในทางลบจากแอปพลิเคชันที่ทำงานไม่ดีซึ่งใช้ทรัพยากรของคลัสเตอร์มากเกินไป นอกจากนี้ยังช่วยให้แพลตฟอร์มข้อมูลการสตรีมส่วนกลางสามารถดำเนินการเป็นแพลตฟอร์มแบบหลายผู้เช่าและใช้งานโดยแอปพลิเคชันดาวน์สตรีมและอัปสตรีมในสายธุรกิจต่างๆ คาฟคารองรับโควต้าสองประเภท: โควต้าแบนด์วิธของเครือข่าย และ ขอโควต้าอัตรา. โควต้าแบนด์วิธของเครือข่ายกำหนดเกณฑ์อัตราไบต์ เช่น ปริมาณที่แอปพลิเคชันไคลเอ็นต์สามารถสร้างและใช้งานจากโบรกเกอร์แต่ละรายในคลัสเตอร์ Kafka ที่วัดเป็นไบต์ต่อวินาที โควต้าอัตราคำขอจะจำกัดเปอร์เซ็นต์ของเวลาที่แต่ละโบรกเกอร์ใช้ประมวลผลคำขอแอปพลิเคชันของลูกค้า โควต้า Kafka สามารถตั้งค่าสำหรับผู้ใช้เฉพาะ รหัสไคลเอ็นต์เฉพาะ หรือทั้งสองอย่าง ทั้งนี้ขึ้นอยู่กับการกำหนดค่าของคุณ
In 1 หมายเลข ของซีรีส์สองตอนนี้ เราได้พูดถึงแนวคิดของการบังคับใช้โควต้าคาฟคาใน Amazon Managed Streaming สำหรับ Apache Kafka (Amazon MSK) คลัสเตอร์ขณะใช้งาน AWS Identity และการจัดการการเข้าถึง (IAM) การควบคุมการเข้าถึง
ในโพสต์นี้ เราจะแนะนำคุณเกี่ยวกับการตั้งค่าโควต้า Kafka ในคลัสเตอร์ MSK ทีละขั้นตอนในขณะที่ใช้การควบคุมการเข้าถึง IAM และทดสอบผ่านแอปพลิเคชันไคลเอ็นต์ตัวอย่าง
ภาพรวมโซลูชัน
รูปต่อไปนี้ซึ่งเราแนะนำในครั้งแรก 1 หมายเลขแสดงให้เห็นว่าแอปพลิเคชันไคลเอนต์ Kafka (ProducerApp-1
, ConsumerApp-1
และ ConsumerApp-2
) เข้าถึง Topic-B
ในคลัสเตอร์ MSK โดยสมมติบทบาทเขียนและอ่าน IAM แอปพลิเคชันไคลเอนต์ของผู้ผลิตและผู้บริโภคแต่ละรายการมีโควต้าที่กำหนดว่าข้อมูลที่พวกเขาสามารถสร้างหรือบริโภคได้มากน้อยเพียงใดในหน่วยไบต์/วินาที เดอะ ProducerApp-1
โควต้าอนุญาตให้สร้างได้สูงสุด 1024 ไบต์/วินาทีต่อโบรกเกอร์หนึ่งราย ในทำนองเดียวกัน ConsumerApp-1
และ ConsumerApp-2
โควต้าอนุญาตให้ใช้ 5120 และ 1024 ไบต์/วินาทีต่อโบรกเกอร์ ตามลำดับ ต่อไปนี้เป็นคำอธิบายโดยย่อของการไหลที่แสดงในไดอะแกรมสถาปัตยกรรม:
- P1 -
ProducerApp-1
(ผ่านมันProducerApp-1-Role
บทบาท IAM) ถือว่าTopic-B-Write-Role
บทบาท IAM เพื่อส่งข้อความถึงTopic-B
- P2 - กับ
Topic-B-Write-Role
บทบาท IAM สันนิษฐานว่าProducerApp-1
เริ่มส่งข้อความถึงTopic-B
- C1 -
ConsumerApp-1
(ผ่านมันConsumerApp-1-Role
บทบาท IAM) และConsumerApp-2
(ผ่านมันConsumerApp-2-Role
บทบาท IAM) ถือว่าTopic-B-Read-Role
บทบาท IAM เพื่ออ่านข้อความจากTopic-B
- C2 - กับ
Topic-B-Read-Role
บทบาท IAM สันนิษฐานว่าConsumerApp-1
และConsumerApp-2
เริ่มบริโภคข้อความจากTopic-B
โปรดทราบว่าโพสต์นี้ใช้ อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI) การก่อตัวของ AWS Cloud แม่แบบ และ คอนโซลการจัดการ AWS สำหรับการจัดเตรียมและแก้ไขทรัพยากร AWS และทรัพยากรที่จัดเตรียมจะถูกเรียกเก็บเงินไปยังบัญชี AWS ของคุณ
ขั้นตอนระดับสูงมีดังนี้:
- จัดเตรียมคลัสเตอร์ MSK ด้วยการควบคุมการเข้าถึง IAM และ อเมซอน อีลาสติก คอมพิวท์ คลาวด์ (Amazon EC2) อินสแตนซ์สำหรับแอปพลิเคชันไคลเอนต์
- สร้างบัญชีตัวแทน
Topic-B
บนคลัสเตอร์ MSK - สร้างบทบาท IAM สำหรับแอปพลิเคชันไคลเอ็นต์เพื่อเข้าถึง
Topic-B
. - เรียกใช้แอปพลิเคชันผู้ผลิตและผู้บริโภคโดยไม่ต้องกำหนดโควต้า
- กำหนดค่าโควต้าการผลิตและการบริโภคสำหรับแอปพลิเคชันไคลเอนต์
- เรียกใช้แอปพลิเคชันอีกครั้งหลังจากตั้งค่าโควต้า
เบื้องต้น
ขอแนะนำให้คุณอ่าน 1 หมายเลข ของชุดนี้ก่อนดำเนินการต่อ ในการเริ่มต้น คุณต้องมีสิ่งต่อไปนี้:
- บัญชี AWS ที่จะเรียกว่าบัญชีทดลองในโพสต์นี้ โดยสมมติว่า ID บัญชีคือ
1111 1111 1111
- สิทธิ์ในการสร้าง ลบ และแก้ไขทรัพยากร AWS ในบัญชีสาธิต
จัดเตรียมคลัสเตอร์ MSK ด้วยการควบคุมการเข้าถึง IAM และอินสแตนซ์ EC2
ขั้นตอนนี้เกี่ยวข้องกับการจัดเตรียมคลัสเตอร์ MSK ด้วยการควบคุมการเข้าถึง IAM ใน VPC ในบัญชีสาธิต นอกจากนี้ เราสร้างอินสแตนซ์ EC2 สี่อินสแตนซ์เพื่อทำการเปลี่ยนแปลงการกำหนดค่าคลัสเตอร์ MSK และโฮสต์โปรดิวเซอร์และแอปพลิเคชันไคลเอนต์ผู้บริโภค
ปรับใช้สแต็ก CloudFormation
- โคลน พื้นที่เก็บข้อมูล GitHub เพื่อดาวน์โหลดไฟล์เทมเพลต CloudFormation และแอปพลิเคชันไคลเอนต์ตัวอย่าง:
- บนคอนโซล AWS CloudFormation ให้เลือก สแต็ค ในบานหน้าต่างนำทาง
- Choose สร้าง stack.
- สำหรับ เตรียมเทมเพลตให้เลือก เทมเพลตพร้อมแล้ว.
- สำหรับ แหล่งที่มาของเทมเพลตให้เลือก อัปโหลดไฟล์เทมเพลต.
- อัปโหลดไฟล์
cfn-msk-stack-1.yaml
ไฟล์จากamazon-msk-kafka-quotas/cfn-templates
ไดเร็กทอรี จากนั้นเลือก ถัดไป. - สำหรับ ชื่อกองป้อน
MSKStack
. - ปล่อยให้พารามิเตอร์เป็นค่าเริ่มต้นแล้วเลือก ถัดไป.
- เลื่อนไปที่ด้านล่างของ กำหนดค่าตัวเลือกสแต็ก หน้าและเลือก ถัดไป เพื่อดำเนินการต่อ
- เลื่อนไปที่ด้านล่างของ รีวิว หน้า เลือกกล่องกาเครื่องหมาย ฉันรับทราบว่า CloudFormation อาจสร้างทรัพยากร IAMและเลือก ส่ง.
จะใช้เวลาประมาณ 30 นาทีเพื่อให้สแต็กเสร็จสมบูรณ์ หลังจากสร้างสแต็กสำเร็จแล้ว ทรัพยากรต่อไปนี้จะถูกสร้างขึ้น:
- VPC ที่มีซับเน็ตส่วนตัว XNUMX ซับเน็ตและซับเน็ตสาธารณะ XNUMX ซับเน็ต
- คลัสเตอร์ MSK ที่มีโบรกเกอร์ XNUMX รายที่เปิดใช้งานการควบคุมการเข้าถึง IAM
- มีการเรียกใช้อินสแตนซ์ EC2
MSKAdminInstance
สำหรับแก้ไขการตั้งค่าคลัสเตอร์ MSK ตลอดจนสร้างและแก้ไขทรัพยากร AWS - อินสแตนซ์ EC2 สำหรับ
ProducerApp-1
,ConsumerApp-1
และConsumerApp-2
หนึ่งรายการสำหรับแอปพลิเคชันไคลเอ็นต์แต่ละรายการ - บทบาท IAM แยกต่างหากสำหรับแต่ละอินสแตนซ์ EC2 ที่โฮสต์แอปพลิเคชันไคลเอนต์ ดังที่แสดงในไดอะแกรมสถาปัตยกรรม
- จากสแต็คของ Outputs แท็บ หมายเหตุ
MSKClusterArn
มูลค่า
สร้างหัวข้อในคลัสเตอร์ MSK
เพื่อสร้าง Topic-B
บนคลัสเตอร์ MSK ให้ทำตามขั้นตอนต่อไปนี้:
- บนคอนโซล Amazon EC2 ให้ไปที่รายการอินสแตนซ์ EC2 ที่กำลังทำงานอยู่
- เลือก
MSKAdminInstance
อินสแตนซ์ EC2 และเลือก เชื่อมต่อ. - เกี่ยวกับ ผู้จัดการเซสชัน เลือกแท็บ เชื่อมต่อ.
- เรียกใช้คำสั่งต่อไปนี้บนแท็บใหม่ที่เปิดขึ้นในเบราว์เซอร์ของคุณ:
- ตั้งค่าตัวแปรสภาพแวดล้อมให้ชี้ไปยังจุดสิ้นสุด IAM ของโบรกเกอร์ MSK Cluster:
- สังเกตค่าของ
BOOTSTRAP_BROKERS_IAM
. - เรียกใช้คำสั่ง Kafka CLI ต่อไปนี้เพื่อสร้าง
Topic-B
บนคลัสเตอร์ MSK:
เนื่องจากคลัสเตอร์ MSK ได้รับการจัดเตรียมด้วยการควบคุมการเข้าถึง IAM ตัวเลือก --command-config
จุด config_iam.properties
ซึ่งมีคุณสมบัติที่จำเป็นสำหรับการควบคุมการเข้าถึง IAM ซึ่งสร้างขึ้นโดย MSKStack
สแต็ค CloudFormation
คำเตือนต่อไปนี้อาจปรากฏขึ้นเมื่อคุณเรียกใช้คำสั่ง Kafka CLI แต่คุณอาจเพิกเฉยได้:
- เพื่อยืนยันว่า
Topic-B
ได้สร้างรายชื่อหัวข้อทั้งหมด:
สร้างบทบาท IAM สำหรับแอปพลิเคชันไคลเอ็นต์เพื่อเข้าถึง Topic-B
ขั้นตอนนี้เกี่ยวข้องกับการสร้าง Topic-B-Write-Role
และ Topic-B-Read-Role
ดังแสดงในแผนภาพสถาปัตยกรรม Topic-B-Write-Role
เปิดใช้งานการดำเนินการเขียนบน Topic-B
และสามารถสันนิษฐานได้โดย ProducerApp-1
. ในทำนองเดียวกัน ConsumerApp-1
และ ConsumerApp-2
สามารถสันนิษฐานได้ Topic-B-Read-Role
เพื่อดำเนินการอ่าน Topic-B
. เพื่อดำเนินการอ่านบน Topic-B
, ConsumerApp-1
และ ConsumerApp-2
จะต้องอยู่ในกลุ่มผู้บริโภคที่ระบุไว้ในระหว่าง MSKStack
การอัปเดตสแต็กในขั้นตอนต่อไป
สร้างบทบาทตามขั้นตอนต่อไปนี้:
- บนคอนโซล AWS CloudFormation ให้เลือก สแต็ค ในบานหน้าต่างนำทาง
- เลือก
MSKStack
และเลือก บันทึก. - สำหรับ เตรียมเทมเพลตเลือกแทนที่เทมเพลตปัจจุบัน
- สำหรับ แหล่งที่มาของเทมเพลตให้เลือก อัปโหลดไฟล์เทมเพลต.
- อัปโหลดไฟล์
cfn-msk-stack-2.yaml
ไฟล์จากamazon-msk-kafka-quotas/cfn-templates
ไดเร็กทอรี จากนั้นเลือก ถัดไป. - ระบุพารามิเตอร์สแต็กเพิ่มเติมต่อไปนี้:
-
- สำหรับ กระทู้ B ARNเข้าสู่
Topic-B
อาร์เอ็นเอ
- สำหรับ กระทู้ B ARNเข้าสู่
ARN จะต้องอยู่ในรูปแบบ arn:aws:kafka:region:account-id:topic/msk-cluster-name/msk-cluster-uuid/Topic-B
. ใช้ชื่อคลัสเตอร์และ UUID คลัสเตอร์จาก MSK คลัสเตอร์ ARN ที่คุณจดบันทึกไว้ก่อนหน้านี้และระบุภูมิภาค AWS ของคุณ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การควบคุมการเข้าถึง IAM สำหรับ Amazon MSK.
-
- สำหรับ ชื่อกลุ่มผู้บริโภค ConsumerApp-1ป้อน
ConsumerApp-1
กลุ่มผู้บริโภค ARN.
- สำหรับ ชื่อกลุ่มผู้บริโภค ConsumerApp-1ป้อน
จะต้องอยู่ในรูปแบบ arn:aws:kafka:region:account-id:group/msk-cluster-name/msk-cluster-uuid/consumer-group-name
-
- สำหรับ ชื่อกลุ่มผู้บริโภค ConsumerApp-2ป้อน
ConsumerApp-2
กลุ่มผู้บริโภค ARN.
- สำหรับ ชื่อกลุ่มผู้บริโภค ConsumerApp-2ป้อน
ใช้รูปแบบเดียวกันกับ ARN ก่อนหน้า
- Choose ถัดไป เพื่อดำเนินการต่อ
- เลื่อนไปที่ด้านล่างของ กำหนดค่าสแต็ก หน้าตัวเลือกและเลือก ถัดไป เพื่อดำเนินการต่อ
- เลื่อนไปที่ด้านล่างของ รีวิว หน้า เลือกกล่องกาเครื่องหมาย ฉันรับทราบว่า CloudFormation อาจสร้างทรัพยากร IAMและเลือก ปรับปรุงกอง.
จะใช้เวลาประมาณ 3 นาทีในการอัปเดตสแต็ก หลังจากอัปเดตสแต็กสำเร็จแล้ว ทรัพยากรต่อไปนี้จะถูกสร้างขึ้น:
- หัวข้อ-B-เขียน-บทบาท – บทบาท IAM ที่ได้รับอนุญาตให้ดำเนินการเขียน
Topic-B
. นโยบายความน่าเชื่อถือช่วยให้ProducerApp-1-Role
บทบาท IAM ที่จะรับมัน - หัวข้อ-ข-อ่าน-บทบาท – บทบาท IAM ที่ได้รับอนุญาตให้ดำเนินการอ่าน
Topic-B
. นโยบายความน่าเชื่อถือช่วยให้ConsumerApp-1-Role
และConsumerApp-2-Role
บทบาท IAM ที่จะรับไว้ นอกจากนี้,ConsumerApp-1
และConsumerApp-2
ต้องเป็นของกลุ่มผู้บริโภคที่คุณระบุเมื่ออัปเดตสแต็กเพื่อดำเนินการอ่านTopic-B
.
- จากสแต็คของ Outputs แท็บ หมายเหตุ
TopicBReadRoleARN
และTopicBWriteRoleARN
ค่า
เรียกใช้แอปพลิเคชันผู้ผลิตและผู้บริโภคโดยไม่ต้องกำหนดโควต้า
นี่เราวิ่ง ProducerApp-1
, ConsumerApp-1
และ ConsumerApp-2
โดยไม่กำหนดโควตา จากขั้นตอนก่อนหน้านี้ คุณจะต้อง BOOTSTRAP_BROKERS_IAM
มูลค่า Topic-B-Write-Role
ARN และ Topic-B-Read-Role
เออาร์เอ็น. ซอร์สโค้ดของแอปพลิเคชันไคลเอนต์และเวอร์ชันแพ็คเกจมีอยู่ใน พื้นที่เก็บข้อมูล GitHub.
เรียกใช้แอปพลิเคชัน ConsumerApp-1
เมื่อต้องการเรียกใช้ ConsumerApp-1
การสมัคร ทำตามขั้นตอนต่อไปนี้:
- บนคอนโซล Amazon EC2 ให้เลือก
ConsumerApp-1
อินสแตนซ์ EC2 และเลือก เชื่อมต่อ. - เกี่ยวกับ ผู้จัดการเซสชัน เลือกแท็บ เชื่อมต่อ.
- เรียกใช้คำสั่งต่อไปนี้บนแท็บใหม่ที่เปิดขึ้นในเบราว์เซอร์ของคุณ:
- เรียกใช้
ConsumerApp-1
แอปพลิเคชันเพื่อเริ่มใช้ข้อความจากTopic-B
:
คุณสามารถค้นหา รหัสแหล่งที่มา บน GitHub สำหรับการอ้างอิงของคุณ รายละเอียดพารามิเตอร์บรรทัดคำสั่งมีดังนี้:
- –bootstrap-เซิร์ฟเวอร์ – MSK คลัสเตอร์ bootstrap โบรกเกอร์ IAM endpoint
- –สมมติบทบาท-arn -
Topic-B-Read-Role
IAM บทบาท ARN สวมบทบาทนี้ConsumerApp-1
จะอ่านข้อความจากหัวข้อ - -ภูมิภาค – ภูมิภาคที่คุณใช้
- – ชื่อหัวข้อ - ชื่อหัวข้อจากที่
ConsumerApp-1
จะอ่านข้อความ ค่าเริ่มต้นคือTopic-B
. - –กลุ่มผู้บริโภค – ชื่อกลุ่มผู้บริโภคสำหรับ
ConsumerApp-1
ตามที่ระบุไว้ระหว่างการอัปเดตสแต็ก - – ชื่อเซสชันบทบาท -
ConsumerApp-1
ถือว่าTopic-B-Read-Role
โดยใช้โปรแกรม บริการโทเค็นความปลอดภัย AWS (AWS STS) SDKConsumerApp-1
จะใช้ชื่อเซสชันบทบาทนี้เมื่อเรียกassumeRole
ฟังก์ชัน - –รหัสลูกค้า – รหัสลูกค้าสำหรับ
ConsumerApp-1
. - – พิมพ์โควต้าผู้บริโภค – แฟล็กระบุว่าควรพิมพ์เมตริกไคลเอนต์บนเทอร์มินัลหรือไม่
ConsumerApp-1
. - –cw-มิติชื่อ - อเมซอน คลาวด์วอตช์ ชื่อมิติข้อมูลที่จะใช้ในการเผยแพร่เมตริกการควบคุมปริมาณไคลเอ็นต์จาก
ConsumerApp-1
. - –cw-ขนาด-ค่า – ค่ามิติ CloudWatch ที่จะใช้ในการเผยแพร่เมตริกการควบคุมปริมาณไคลเอ็นต์จาก
ConsumerApp-1
. - –cw-เนมสเปซ – เนมสเปซที่ไหน
ConsumerApp-1
จะเผยแพร่ตัววัด CloudWatch เพื่อตรวจสอบการควบคุม
- หากคุณพอใจกับพารามิเตอร์ที่เหลือแล้ว ให้ใช้คำสั่งต่อไปนี้และเปลี่ยนแปลง
--assume-role-arn
และ--region
ตามสภาพแวดล้อมของคุณ:
พื้นที่ fetch-throttle-time-avg
และ fetch-throttle-time-max
เมตริกไคลเอ็นต์ควรแสดงเป็น 0.0 ซึ่งบ่งชี้ว่าไม่มีการควบคุมเกิดขึ้นสำหรับ ConsumerApp-1
. โปรดจำไว้ว่าเราไม่ได้กำหนดโควต้าการบริโภคสำหรับ ConsumerApp-1
ยัง. ปล่อยให้มันทำงานในขณะที่
เรียกใช้แอปพลิเคชัน ConsumerApp-2
เมื่อต้องการเรียกใช้ ConsumerApp-2
การสมัคร ทำตามขั้นตอนต่อไปนี้:
- บนคอนโซล Amazon EC2 ให้เลือก
ConsumerApp-2
อินสแตนซ์ EC2 และเลือก เชื่อมต่อ. - เกี่ยวกับ ผู้จัดการเซสชัน เลือกแท็บ เชื่อมต่อ.
- เรียกใช้คำสั่งต่อไปนี้บนแท็บใหม่ที่เปิดขึ้นในเบราว์เซอร์ของคุณ:
- เรียกใช้
ConsumerApp-2
แอปพลิเคชันเพื่อเริ่มใช้ข้อความจากTopic-B
:
รหัสมีรายละเอียดพารามิเตอร์บรรทัดคำสั่งที่คล้ายกันเช่น ConsumerApp-1
ได้กล่าวมาแล้ว ยกเว้นข้อต่อไปนี้
- –กลุ่มผู้บริโภค – ชื่อกลุ่มผู้บริโภคสำหรับ
ConsumerApp-2
ตามที่ระบุไว้ระหว่างการอัปเดตสแต็ก - – ชื่อเซสชันบทบาท -
ConsumerApp-2
ถือว่าTopic-B-Read-Role
โดยใช้ AWS STS SDKConsumerApp-2
จะใช้ชื่อเซสชันบทบาทนี้เมื่อเรียกassumeRole
ฟังก์ชัน - –รหัสลูกค้า – รหัสลูกค้าสำหรับ
ConsumerApp-2
.
- หากคุณพอใจกับพารามิเตอร์ที่เหลือแล้ว ให้ใช้คำสั่งต่อไปนี้และเปลี่ยนแปลง
--assume-role-arn
และ--region
ตามสภาพแวดล้อมของคุณ:
พื้นที่ fetch-throttle-time-avg
และ fetch-throttle-time-max
เมตริกไคลเอ็นต์ควรแสดงเป็น 0.0 ซึ่งบ่งชี้ว่าไม่มีการควบคุมเกิดขึ้นสำหรับ ConsumerApp-2
. โปรดจำไว้ว่าเราไม่ได้กำหนดโควต้าการบริโภคสำหรับ ConsumerApp-2
ยัง. ปล่อยให้มันทำงานในขณะที่
เรียกใช้แอปพลิเคชัน ProducerApp-1
เมื่อต้องการเรียกใช้ ProducerApp-1
การสมัคร ทำตามขั้นตอนต่อไปนี้:
- บนคอนโซล Amazon EC2 ให้เลือก
ProducerApp-1
อินสแตนซ์ EC2 และเลือก เชื่อมต่อ. - เกี่ยวกับ ผู้จัดการเซสชัน เลือกแท็บ เชื่อมต่อ.
- เรียกใช้คำสั่งต่อไปนี้บนแท็บใหม่ที่เปิดขึ้นในเบราว์เซอร์ของคุณ:
- เรียกใช้
ProducerApp-1
แอปพลิเคชันเพื่อเริ่มส่งข้อความถึงTopic-B
:
คุณสามารถค้นหา รหัสแหล่งที่มา บน GitHub สำหรับการอ้างอิงของคุณ รายละเอียดพารามิเตอร์บรรทัดคำสั่งมีดังนี้:
- –bootstrap-เซิร์ฟเวอร์ – MSK คลัสเตอร์ bootstrap โบรกเกอร์ IAM endpoint
- –สมมติบทบาท-arn -
Topic-B-Write-Role
IAM บทบาท ARN สวมบทบาทนี้ProducerApp-1
จะเขียนข้อความในหัวข้อ - – ชื่อหัวข้อ -
ProducerApp-1
จะส่งข้อความไปที่หัวข้อนี้ ค่าเริ่มต้นคือTopic-B
. - -ภูมิภาค – ภูมิภาค AWS ที่คุณใช้
- –จำนวนข้อความ – จำนวนข้อความ
ProducerApp-1
ใบสมัครจะส่งไปที่หัวข้อ - – ชื่อเซสชันบทบาท -
ProducerApp-1
ถือว่าTopic-B-Write-Role
โดยใช้ AWS STS SDKProducerApp-1
จะใช้ชื่อเซสชันบทบาทนี้เมื่อเรียกassumeRole
ฟังก์ชัน - –รหัสลูกค้า – รหัสลูกค้าของ
ProducerApp-1
. - –ประเภทผู้ผลิต -
ProducerApp-1
สามารถเรียกใช้งานได้เช่นกัน พร้อมกัน or แบบอะซิงโครนัส. ตัวเลือกคือ ซิงค์ or async. - – ผู้ผลิตการพิมพ์โควต้าเมตริก – แฟล็กระบุว่าควรพิมพ์เมตริกไคลเอนต์บนเทอร์มินัลหรือไม่ ผู้ผลิตแอป-1.
- –cw-มิติชื่อ – ชื่อมิติข้อมูล CloudWatch ที่จะใช้ในการเผยแพร่เมตริกการควบคุมปริมาณไคลเอ็นต์จาก ผู้ผลิตแอป-1.
- –cw-ขนาด-ค่า – ค่ามิติ CloudWatch ที่จะใช้ในการเผยแพร่เมตริกการควบคุมปริมาณไคลเอ็นต์จาก ผู้ผลิตแอป-1.
- –cw-เนมสเปซ – เนมสเปซที่ ผู้ผลิตแอป-1 จะเผยแพร่ตัววัด CloudWatch เพื่อตรวจสอบการควบคุม
- หากคุณพอใจกับพารามิเตอร์ที่เหลือแล้ว ให้ใช้คำสั่งต่อไปนี้และเปลี่ยนแปลง
--assume-role-arn
และ--region
ตามสภาพแวดล้อมของคุณ ในการรันโปรดิวเซอร์ Kafka แบบซิงโครนัส จะใช้ตัวเลือก--producer-type sync
:
หรือใช้ --producer-type async
เพื่อรันโปรดิวเซอร์แบบอะซิงโครนัส สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ ส่งแบบอะซิงโครนัส.
พื้นที่ produce-throttle-time-avg
และ produce-throttle-time-max
เมตริกไคลเอ็นต์ควรแสดงเป็น 0.0 ซึ่งบ่งชี้ว่าไม่มีการควบคุมเกิดขึ้นสำหรับ ProducerApp-1
. โปรดจำไว้ว่าเราไม่ได้กำหนดโควต้าการผลิตสำหรับ ProducerApp-1
ยัง. ตรวจสอบว่า ConsumerApp-1
และ ConsumerApp-2
สามารถใช้ข้อความและสังเกตว่าไม่ถูกควบคุมปริมาณ หยุดแอปพลิเคชันไคลเอ็นต์ของผู้บริโภคและผู้ผลิตโดยการกด CTRL + C ในแท็บเบราว์เซอร์ที่เกี่ยวข้อง
กำหนดโควต้าการผลิตและการบริโภคสำหรับแอปพลิเคชันไคลเอนต์
ตอนนี้เราได้รันแอปพลิเคชันผู้ผลิตและผู้บริโภคโดยไม่มีโควต้าแล้ว เราตั้งค่าโควต้าและรันใหม่อีกครั้ง
เปิด ผู้จัดการเซสชัน ขั้วสำหรับ MSKAdminInstance
อินสแตนซ์ EC2 ตามที่อธิบายไว้ก่อนหน้านี้ และเรียกใช้คำสั่งต่อไปนี้เพื่อค้นหาการกำหนดค่าเริ่มต้นของหนึ่งในโบรกเกอร์ในคลัสเตอร์ MSK คลัสเตอร์ MSK ได้รับการจัดเตรียมด้วยการกำหนดค่าโควต้า Kafka เริ่มต้น
ภาพหน้าจอต่อไปนี้แสดงให้เห็น Broker-1
ค่าเริ่มต้นสำหรับ quota.consumer.default
และ quota.producer.default
.
การกำหนดค่าโควต้าของ ProducerApp-1
แทนที่ตัวยึดตำแหน่งในคำสั่งทั้งหมดในส่วนนี้ด้วยค่าที่สอดคล้องกับบัญชีของคุณ
ตามแผนภาพสถาปัตยกรรมที่กล่าวถึงก่อนหน้านี้ ให้ตั้งค่า ProducerApp-1
สร้างโควต้าเป็น 1024 ไบต์/วินาที สำหรับ <ProducerApp-1 Client Id>
และ <ProducerApp-1 Role Session>
ตรวจสอบให้แน่ใจว่าคุณใช้ค่าเดียวกับที่คุณใช้ขณะเรียกใช้ ProducerApp-1
ก่อนหน้านี้ (producerapp-1-client-id
และ producerapp-1-role-session
ตามลำดับ):
ตรวจสอบ ProducerApp-1
สร้างโควต้าโดยใช้คำสั่งต่อไปนี้:
คุณสามารถลบ ProducerApp-1
สร้างโควต้าโดยใช้คำสั่งต่อไปนี้ แต่ อย่าเรียกใช้คำสั่ง เนื่องจากเราจะสอบโควตากันต่อไป
การกำหนดค่าโควต้า ConsumerApp-1
แทนที่ตัวยึดตำแหน่งในคำสั่งทั้งหมดในส่วนนี้ด้วยค่าที่สอดคล้องกับบัญชีของคุณ
มากำหนดโควต้าการบริโภคที่ 5120 ไบต์/วินาทีกันเถอะ ConsumerApp-1
. สำหรับ <ConsumerApp-1 Client Id>
และ <ConsumerApp-1 Role Session>
ตรวจสอบให้แน่ใจว่าคุณใช้ค่าเดียวกับที่คุณใช้ขณะเรียกใช้ ConsumerApp-1
ก่อนหน้านี้ (consumerapp-1-client-id
และ consumerapp-1-role-session
ตามลำดับ):
kafka-configs.sh --bootstrap-server $BOOTSTRAP_BROKERS_IAM --command-config config_iam.properties --alter --add-config 'consumer_byte_rate=5120' --entity-type clients --entity-name <ConsumerApp-1 Client Id> --entity-type users --entity-name arn:aws:sts::<AWS Account Id>:assumed-role/MSKStack-TopicBReadRole-xxxxxxxxxxx/<ConsumerApp-1 Role Session>
ตรวจสอบ ConsumerApp-1
ใช้โควต้าโดยใช้คำสั่งต่อไปนี้:
คุณสามารถลบ ConsumerApp-1
ใช้โควต้าโดยใช้คำสั่งต่อไปนี้ แต่ อย่าเรียกใช้คำสั่ง เนื่องจากเราจะสอบโควตากันต่อไป
การกำหนดค่าโควต้า ConsumerApp-2
แทนที่ตัวยึดตำแหน่งในคำสั่งทั้งหมดในส่วนนี้ด้วยค่าที่สอดคล้องกับบัญชีของคุณ
มากำหนดโควต้าการบริโภคที่ 1024 ไบต์/วินาทีกันเถอะ ConsumerApp-2
. สำหรับ <ConsumerApp-2 Client Id>
และ <ConsumerApp-2 Role Session>
ตรวจสอบให้แน่ใจว่าคุณใช้ค่าเดียวกับที่คุณใช้ขณะเรียกใช้ ConsumerApp-2
ก่อนหน้านี้ (consumerapp-2-client-id
และ consumerapp-2-role-session
ตามลำดับ):
ตรวจสอบ ConsumerApp-2
ใช้โควต้าโดยใช้คำสั่งต่อไปนี้:
เช่นเดียวกับ ConsumerApp-1
คุณสามารถเอา ConsumerApp-2
ใช้โควต้าโดยใช้คำสั่งเดียวกันกับ ConsumerApp-2
รายละเอียดลูกค้าและผู้ใช้
เรียกใช้แอปพลิเคชันผู้ผลิตและผู้บริโภคอีกครั้งหลังจากตั้งค่าโควต้า
ลองเรียกใช้แอปพลิเคชันอีกครั้งเพื่อตรวจสอบผลกระทบของโควต้า
เรียกใช้ ProducerApp-1
วิ่งใหม่ ProducerApp-1
in พร้อมกัน โหมดด้วยคำสั่งเดียวกับที่คุณใช้ก่อนหน้านี้ ภาพหน้าจอต่อไปนี้แสดงให้เห็นว่าเมื่อใด ProducerApp-1
ถึงโควต้าในโบรกเกอร์ใด ๆ, the produce-throttle-time-avg
และ produce-throttle-time-max client
ค่าเมตริกจะสูงกว่า 0.0 ค่าที่สูงกว่า 0.0 แสดงว่า ProducerApp-1
ถูกควบคุมปริมาณ อนุญาต ProducerApp-1
ให้ทำงานสองสามวินาทีแล้วหยุดโดยใช้ CTRL + C.
คุณยังสามารถทดสอบผลกระทบของโควต้าการผลิตได้ด้วยการรันซ้ำ ProducerApp-1
อีกครั้งใน ไม่ตรงกัน โหมด (--producer-type async
). คล้ายกับการวิ่งแบบซิงโครนัส ภาพหน้าจอต่อไปนี้แสดงให้เห็นว่าเมื่อใด ProducerApp-1
ถึงโควต้าในโบรกเกอร์ใด ๆ, the produce-throttle-time-avg
และ produce-throttle-time-max
ค่าเมตริกของลูกค้าจะสูงกว่า 0.0 ค่าที่สูงกว่า 0.0 แสดงว่า ProducerApp-1
ถูกควบคุมปริมาณ อนุญาตแบบอะซิงโครนัส ProducerApp-1
วิ่งไปสักพัก
ในที่สุดคุณจะเห็น TimeoutException
เซน org.apache.kafka.common.errors.TimeoutException: Expiring xxxxx record(s) for Topic-B-2:xxxxxxx ms has passed since batch creation
เมื่อใช้งาน ไม่ตรงกัน ผู้ผลิตและส่งข้อความในอัตราที่มากกว่าที่นายหน้าจะรับได้เนื่องจากโควต้า ข้อความจะถูกจัดคิวในหน่วยความจำแอปพลิเคชันไคลเอนต์ก่อน ไคลเอนต์จะหมดพื้นที่บัฟเฟอร์ในที่สุดหากอัตราการส่งข้อความยังคงเกินอัตราการรับข้อความ Producer.send()
โทรถูกบล็อก Producer.send()
ในที่สุดก็จะโยน TimeoutException
หากการหน่วงเวลาการหมดเวลาไม่เพียงพอที่จะทำให้โบรกเกอร์สามารถติดตามแอปพลิเคชันของผู้ผลิตได้ หยุด ProducerApp-1
โดยใช้ CTRL + C.
เรียกใช้ ConsumerApp-1
วิ่งใหม่ ConsumerApp-1
ด้วยคำสั่งเดียวกับที่คุณใช้ก่อนหน้านี้ ภาพหน้าจอต่อไปนี้แสดงให้เห็นว่าเมื่อใด ConsumerApp-1
ถึงโควต้าของมัน, the fetch-throttle-time-avg
และ fetch-throttle-time-max client
ค่าเมตริกจะสูงกว่า 0.0 ค่าที่สูงกว่า 0.0 แสดงว่า ConsumerApp-1
ถูกควบคุมปริมาณ
อนุญาต ConsumerApp-1
ให้ทำงานสองสามวินาทีแล้วหยุดโดยใช้ CTRL + C.
เรียกใช้ ConsumerApp-2
วิ่งใหม่ ConsumerApp-2
ด้วยคำสั่งเดียวกับที่คุณใช้ก่อนหน้านี้ ในทำนองเดียวกัน เมื่อ ConsumerApp-2
ถึงโควต้าของมัน, the fetch-throttle-time-avg
และ fetch-throttle-time-max client
ค่าเมตริกจะอยู่ด้านบน 0.0. ค่าข้างต้น 0.0 บ่งบอกว่า ConsumerApp-2
ถูกควบคุมปริมาณ อนุญาต ConsumerApp-2
ให้ทำงานสองสามวินาทีแล้วหยุดโดยการกด CTRL + C.
เมตริกโควต้าไคลเอนต์ใน Amazon CloudWatch
In 1 หมายเลขเราอธิบายว่าเมตริกไคลเอนต์เป็นเมตริกที่เปิดเผยโดยไคลเอ็นต์ที่เชื่อมต่อกับคลัสเตอร์คาฟคา มาตรวจสอบเมตริกไคลเอ็นต์ใน CloudWatch กัน
- บนคอนโซล CloudWatch เลือก ตัวชี้วัดทั้งหมด.
- ภายใต้ เนมสเปซที่กำหนดเองให้เลือกเนมสเปซที่คุณระบุขณะเรียกใช้แอปพลิเคชันไคลเอนต์
- เลือกชื่อมิติและเลือก
produce-throttle-time-max
,produce-throttle-time-avg
,fetch-throttle-time-max
และfetch-throttle-time-avg metrics
สำหรับการใช้งานทั้งหมด
เมตริกเหล่านี้บ่งชี้พฤติกรรมการควบคุมสำหรับ ProducerApp-1
, ConsumerApp-1
และ ConsumerApp-2
แอปพลิเคชันทดสอบด้วยการกำหนดค่าโควต้าในส่วนก่อนหน้า ภาพหน้าจอต่อไปนี้ระบุถึงการควบคุมปริมาณ ProducerApp-1
, ConsumerApp-1
และ ConsumerApp-2
ขึ้นอยู่กับโควต้าแบนด์วิธของเครือข่าย ProducerApp-1
, ConsumerApp-1
และ ConsumerApp-2
แอปพลิเคชันป้อนเมตริกไคลเอ็นต์ของตนไปยัง CloudWatch คุณสามารถหา รหัสแหล่งที่มา บน GitHub สำหรับการอ้างอิงของคุณ
รหัสไคลเอ็นต์ที่ปลอดภัยและชื่อเซสชันของบทบาท
เราได้พูดถึงวิธีกำหนดค่าโควต้าของ Kafka โดยใช้แอปพลิเคชัน รหัสลูกค้า และรับรองความถูกต้อง ผู้ใช้งาน อาจารย์ใหญ่. เมื่อแอปพลิเคชันไคลเอ็นต์รับบทบาท IAM เพื่อเข้าถึงหัวข้อ Kafka บนคลัสเตอร์ MSK ที่เปิดใช้งานการตรวจสอบสิทธิ์ IAM แอปพลิเคชันนั้นจะได้รับการตรวจสอบสิทธิ์ ผู้ใช้งาน เงินต้นจะแสดงในรูปแบบต่อไปนี้ (สำหรับข้อมูลเพิ่มเติม โปรดดูที่ ตัวระบุ IAM):
arn:aws:sts::111111111111:assumed-role/Topic-B-Write-Role/producerapp-1-role-session
มันมี ชื่อเซสชันบทบาท (ในกรณีนี้, producerapp-1-role-session
) ใช้ในแอปพลิเคชันไคลเอนต์ขณะรับบทบาท IAM ผ่าน AWS STS SDK แอปพลิเคชันไคลเอนต์ รหัสแหล่งที่มา สามารถใช้ได้สำหรับการอ้างอิงของคุณ เดอะ รหัสลูกค้า เป็นสตริงชื่อตรรกะ (ตัวอย่างเช่น producerapp-1-client-id
) ที่กำหนดค่าในรหัสแอปพลิเคชันโดยทีมแอปพลิเคชัน ดังนั้น แอปพลิเคชันสามารถเลียนแบบแอปพลิเคชันอื่นได้หากได้รับ รหัสลูกค้า และ ชื่อเซสชันบทบาท ของแอปพลิเคชันอื่น และถ้าแอปพลิเคชันนั้นได้รับอนุญาตให้รับบทบาท IAM เดียวกัน
ดังแสดงในแผนภาพสถาปัตยกรรม ConsumerApp-1
และ ConsumerApp-2
เป็นแอปพลิเคชันไคลเอนต์สองรายการที่แยกจากกันโดยมีการจัดสรรโควต้าตามลำดับ เนื่องจากทั้งคู่มีสิทธิ์รับบทบาท IAM เดียวกัน (Topic-B-Read-Role
) ในบัญชีทดลอง พวกเขาได้รับอนุญาตให้ใช้ข้อความจาก Topic-B
. ดังนั้น โบรกเกอร์คลัสเตอร์ MSK จึงแยกความแตกต่างตามพวกเขา รหัสลูกค้า และ ผู้ใช้ (ซึ่งประกอบไปด้วย ชื่อเซสชันบทบาท ค่า). ถ้า ConsumerApp-2
อย่างใดได้รับ ConsumerApp-1
ชื่อเซสชันบทบาท และ รหัสลูกค้ามันสามารถปลอมตัว ConsumerApp-1
โดยระบุ ConsumerApp-1
ชื่อเซสชันบทบาท และ รหัสลูกค้า ในรหัสแอปพลิเคชัน
สมมติ ConsumerApp-1
ใช้ consumerapp-1-client-id
และ consumerapp-1-role-session
ตามที่ รหัสลูกค้า และ ชื่อเซสชันบทบาทตามลำดับ ดังนั้น, ConsumerApp-1's
รับรองความถูกต้อง ผู้ใช้งาน หลักการจะปรากฏดังนี้เมื่อถือว่า Topic-B-Read-Role
บทบาท IAM:
arn:aws:sts::<AWS Account Id>:assumed-role/Topic-B-Read-Role/consumerapp-1-role-session
ในทำนองเดียวกัน ConsumerApp-2
ใช้ consumerapp-2-client-id
และ consumerapp-2-role-session
ตามที่ รหัสลูกค้า และ ชื่อเซสชันบทบาทตามลำดับ ดังนั้น, ConsumerApp-2's
รับรองความถูกต้อง ผู้ใช้งาน หลักการจะปรากฏดังนี้เมื่อถือว่า Topic-B-Read-Role
บทบาท IAM:
arn:aws:sts::<AWS Account Id>:assumed-role/Topic-B-Read-Role/consumerapp-2-role-session
If ConsumerApp-2
ได้รับ ConsumerApp-1's
รหัสลูกค้า และ ชื่อเซสชันบทบาท และระบุในรหัสแอปพลิเคชัน โบรกเกอร์คลัสเตอร์ MSK จะถือว่าเป็น ConsumerApp-1
และดูมัน รหัสลูกค้า as consumerapp-1-client-id
และการรับรองความถูกต้อง ผู้ใช้งาน หลักดังนี้
arn:aws:sts::<AWS Account Id>:assumed-role/Topic-B-Read-Role/consumerapp-1-role-session
สิ่งนี้ช่วยให้ ConsumerApp-2
เพื่อใช้ข้อมูลจากคลัสเตอร์ MSK ในอัตราสูงสุด 5120 ไบต์ต่อวินาทีแทนที่จะเป็น 1024 ไบต์ต่อวินาทีตามการจัดสรรโควต้าเดิม เพราะเหตุนี้, ConsumerApp-1's
ปริมาณงานจะได้รับผลกระทบในทางลบหาก ConsumerApp-2
ทำงานพร้อมกัน
สถาปัตยกรรมที่ได้รับการปรับปรุง
คุณสามารถแนะนำ ผู้จัดการความลับของ AWS และ บริการจัดการคีย์ AWS (AWS KMS) ในสถาปัตยกรรมเพื่อรักษาความปลอดภัยแอปพลิเคชัน' รหัสลูกค้า และ ชื่อเซสชันบทบาท. เพื่อให้การกำกับดูแลที่รัดกุมยิ่งขึ้น ID ไคลเอ็นต์ของแอปพลิเคชันและชื่อเซสชันบทบาทของแอปพลิเคชันจะต้องจัดเก็บเป็นความลับที่เข้ารหัสใน Secrets Manager นโยบายทรัพยากร IAM ที่เกี่ยวข้องกับความลับที่เข้ารหัสและคีย์ที่จัดการโดยลูกค้าของ KMS (CMK) จะอนุญาตให้แอปพลิเคชันเข้าถึงและถอดรหัสเฉพาะรหัสไคลเอ็นต์และชื่อเซสชันบทบาทของตนตามลำดับ ด้วยวิธีนี้ แอปพลิเคชันจะไม่สามารถเข้าถึง ID ไคลเอนต์และชื่อเซสชันบทบาทของกันและกัน และเลียนแบบซึ่งกันและกัน รูปภาพต่อไปนี้แสดงสถาปัตยกรรมที่ได้รับการปรับปรุง
โฟลว์ที่อัปเดตมีขั้นตอนต่อไปนี้:
- P1 -
ProducerApp-1
เรียกค้นมันclient-id
และrole-session-name
ความลับจาก Secrets Manager - P2 -
ProducerApp-1
กำหนดค่าความลับclient-id
asCLIENT_ID_CONFIG
ในรหัสแอปพลิเคชันและถือว่าTopic-B-Write-Role
(ผ่านมันProducerApp-1-Role
IAM บทบาท) โดยผ่านความลับrole-session-name
ไปยัง AWS STS SDKassumeRole
เรียกฟังก์ชัน - P3 - กับ
Topic-B-Write-Role
บทบาท IAM สันนิษฐานว่าProducerApp-1
เริ่มส่งข้อความถึงTopic-B
- C1 -
ConsumerApp-1
และConsumerApp-2
เรียกคืนตามลำดับclient-id
และrole-session-name
ความลับจาก Secrets Manager - C2 -
ConsumerApp-1
และConsumerApp-2
กำหนดค่าความลับที่เกี่ยวข้องclient-id
asCLIENT_ID_CONFIG
ในรหัสแอปพลิเคชันและถือว่าTopic-B-Write-Role
(ผ่านConsumerApp-1-Role
และConsumerApp-2-Role
บทบาทของ IAM ตามลำดับ) โดยผ่านความลับของพวกเขาrole-session-name
ใน AWS STS SDKassumeRole
เรียกฟังก์ชัน - C3 - กับ
Topic-B-Read-Role
บทบาท IAM สันนิษฐานว่าConsumerApp-1
และConsumerApp-2
เริ่มบริโภคข้อความจากTopic-B
โปรดดูเอกสารประกอบสำหรับ ผู้จัดการความลับของ AWS และ AWS KMS เพื่อให้เข้าใจได้ดีขึ้นว่าเหมาะสมกับสถาปัตยกรรมอย่างไร
ทำความสะอาดทรัพยากร
นำทางไปยังคอนโซล CloudFormation และลบไฟล์ MSKStack
ซ้อนกัน. ทรัพยากรทั้งหมดที่สร้างขึ้นระหว่างโพสต์นี้จะถูกลบ
สรุป
ในโพสต์นี้ เราได้กล่าวถึงขั้นตอนโดยละเอียดในการกำหนดค่าโควต้า Amazon MSK และแสดงผลผ่านแอปพลิเคชันไคลเอ็นต์ตัวอย่าง นอกจากนี้ เรายังกล่าวถึงวิธีที่คุณสามารถใช้เมตริกไคลเอ็นต์เพื่อตรวจสอบว่าแอปพลิเคชันไคลเอ็นต์ถูกควบคุมปริมาณหรือไม่ เรายังเน้นปัญหาที่อาจเกิดขึ้นกับ ID ไคลเอนต์ข้อความธรรมดาและชื่อเซสชันบทบาท เราขอแนะนำให้ใช้โควต้า Kafka กับ Amazon MSK โดยใช้ Secrets Manager และ AWS KMS ตามไดอะแกรมสถาปัตยกรรมที่แก้ไขเพื่อให้แน่ใจว่าสถาปัตยกรรมไม่น่าเชื่อถือ
หากคุณมีข้อเสนอแนะหรือคำถามเกี่ยวกับโพสต์นี้ รวมถึงสถาปัตยกรรมที่แก้ไขแล้ว เรายินดีที่จะรับฟังความคิดเห็นจากคุณ เราหวังว่าคุณจะสนุกกับการอ่านโพสต์นี้
เกี่ยวกับผู้เขียน
วิกัส บาจาจ เป็นผู้จัดการอาวุโส สถาปนิกโซลูชัน บริการทางการเงินที่ Amazon Web Services ด้วยประสบการณ์กว่าสองทศวรรษในบริการทางการเงินและการทำงานกับธุรกิจที่ใช้เทคโนโลยีดิจิทัล เขาจึงให้คำแนะนำแก่ลูกค้าเกี่ยวกับการออกแบบผลิตภัณฑ์ แผนงานด้านเทคโนโลยี และสถาปัตยกรรมแอปพลิเคชัน
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- การเงิน EVM ส่วนต่อประสานแบบครบวงจรสำหรับการเงินแบบกระจายอำนาจ เข้าถึงได้ที่นี่.
- กลุ่มสื่อควอนตัม IR/PR ขยาย เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. ข้อมูลอัจฉริยะ Web3 ขยายความรู้ เข้าถึงได้ที่นี่.
- ที่มา: https://aws.amazon.com/blogs/big-data/multi-tenancy-apache-kafka-clusters-in-amazon-msk-with-iam-access-control-and-kafka-quotas-part-2/
- :มี
- :เป็น
- :ไม่
- :ที่ไหน
- $ ขึ้น
- 1
- 10
- 11
- 30
- 7
- 70
- 8
- 9
- a
- สามารถ
- เกี่ยวกับเรา
- ข้างบน
- ยอมรับ
- ยอมรับ
- เข้า
- ลงชื่อเข้าใช้
- รับทราบ
- ข้าม
- เพิ่ม
- นอกจากนี้
- เพิ่มเติม
- นอกจากนี้
- หลังจาก
- อีกครั้ง
- ทั้งหมด
- การจัดสรร
- การจัดสรร
- อนุญาต
- ช่วยให้
- ด้วย
- อเมซอน
- Amazon EC2
- Amazon Web Services
- an
- และ
- อื่น
- ใด
- อาปาเช่
- Apache Kafka
- ปรากฏ
- การใช้งาน
- การใช้งาน
- ประมาณ
- สถาปัตยกรรม
- เป็น
- AS
- ที่เกี่ยวข้อง
- สันนิษฐาน
- At
- รับรองความถูกต้อง
- การยืนยันตัวตน
- ใช้ได้
- AWS
- การก่อตัวของ AWS Cloud
- แบนด์วิดธ์
- ตาม
- BE
- เพราะ
- รับ
- ก่อน
- กำลัง
- ดีกว่า
- ที่ถูกบล็อก
- บูต
- ทั้งสอง
- ด้านล่าง
- กล่อง
- โบรกเกอร์
- โบรกเกอร์
- เบราว์เซอร์
- กันชน
- ธุรกิจ
- ธุรกิจ
- แต่
- by
- โทรศัพท์
- ที่เรียกว่า
- โทร
- CAN
- กรณี
- แมว
- จับ
- การก่อให้เกิด
- CD
- ส่วนกลาง
- เปลี่ยนแปลง
- การเปลี่ยนแปลง
- ตรวจสอบ
- Choose
- ชั้น
- ไคลเอนต์
- ลูกค้า
- Cluster
- รหัส
- ร่วมกัน
- สมบูรณ์
- คำนวณ
- แนวความคิด
- องค์ประกอบ
- การกำหนดค่า
- การเชื่อมต่อ
- ดังนั้น
- ปลอบใจ
- บริโภค
- ผู้บริโภค
- มี
- ต่อ
- อย่างต่อเนื่อง
- อย่างต่อเนื่อง
- ควบคุม
- ปกคลุม
- สร้าง
- ที่สร้างขึ้น
- การสร้าง
- ปัจจุบัน
- ลูกค้า
- ลูกค้า
- ข้อมูล
- แพลตฟอร์มข้อมูล
- ทศวรรษที่ผ่านมา
- ถอดรหัส
- ค่าเริ่มต้น
- ความล่าช้า
- ทดลอง
- แสดงให้เห็นถึง
- ทั้งนี้ขึ้นอยู่กับ
- บรรยาย
- อธิบาย
- ออกแบบ
- รายละเอียด
- รายละเอียด
- กำหนด
- แน่นอน
- Dimension
- กล่าวถึง
- แสดง
- เห็นความแตกต่าง
- เอกสาร
- ดาวน์โหลด
- สอง
- ในระหว่าง
- แต่ละ
- ก่อน
- เสียงสะท้อน
- ผล
- ทั้ง
- ทำให้สามารถ
- เปิดการใช้งาน
- ช่วยให้
- ที่มีการเข้ารหัส
- ปลายทาง
- บังคับใช้
- ที่เพิ่มขึ้น
- ทำให้มั่นใจ
- เข้าสู่
- สิ่งแวดล้อม
- ข้อผิดพลาด
- อีเธอร์ (ETH)
- ในที่สุด
- ตรวจสอบ
- ตัวอย่าง
- เกินกว่า
- ยกเว้น
- ประสบการณ์
- อธิบาย
- คำอธิบาย
- ส่งออก
- ที่เปิดเผย
- ข้อเสนอแนะ
- สองสาม
- รูป
- เนื้อไม่มีมัน
- ไฟล์
- ทางการเงิน
- บริการทางการเงิน
- หา
- ชื่อจริง
- พอดี
- ไหล
- ดังต่อไปนี้
- ดังต่อไปนี้
- สำหรับ
- รูป
- สี่
- ราคาเริ่มต้นที่
- ฟังก์ชัน
- นอกจากนี้
- ได้รับ
- ไป
- GitHub
- การกำกับดูแล
- มากขึ้น
- บัญชีกลุ่ม
- กลุ่ม
- มีความสุข
- มี
- he
- ได้ยิน
- ระดับสูง
- ไฮไลต์
- ความหวัง
- เจ้าภาพ
- เจ้าภาพ
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- HTML
- ที่ http
- HTTPS
- AMI
- ID
- เอกลักษณ์
- รหัส
- if
- แสดงให้เห็นถึง
- ภาพ
- ที่กระทบ
- การดำเนินงาน
- การดำเนินการ
- in
- รวมทั้ง
- แสดง
- บ่งชี้ว่า
- การแสดง
- เป็นรายบุคคล
- ข้อมูล
- ตัวอย่าง
- สำคัญ
- เข้าไป
- แนะนำ
- แนะนำ
- ISN
- ปัญหา
- IT
- ITS
- ชวา
- jpg
- Kafka
- คีย์
- ที่รู้จักกัน
- LIMIT
- Line
- เส้น
- รายการ
- ตรรกะ
- ทำ
- การจัดการ
- การจัดการ
- ผู้จัดการ
- สูงสุด
- อาจ..
- วัด
- หน่วยความจำ
- ข้อความ
- ตัวชี้วัด
- นาที
- โหมด
- แก้ไข
- การตรวจสอบ
- ข้อมูลเพิ่มเติม
- MS
- มาก
- หลาย
- ต้อง
- ชื่อ
- ชื่อ
- นำทาง
- การเดินเรือ
- จำเป็นต้อง
- ในเชิงลบ
- เครือข่าย
- ใหม่
- ถัดไป
- ไม่
- เด่น
- สังเกต..
- จำนวน
- ได้รับ
- ที่เกิดขึ้น
- of
- on
- ONE
- เพียง
- เปิด
- การดำเนินการ
- การดำเนินการ
- ตัวเลือกเสริม (Option)
- Options
- or
- ใบสั่ง
- เป็นต้นฉบับ
- อื่นๆ
- ออก
- เกิน
- แพคเกจ
- หน้า
- บานหน้าต่าง
- พารามิเตอร์
- พารามิเตอร์
- ส่วนหนึ่ง
- ผ่าน
- ที่ผ่านไป
- เส้นทาง
- เปอร์เซ็นต์
- ดำเนินการ
- การปฏิบัติ
- การอนุญาต
- ข้อความธรรมดา
- เวที
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- จุด
- จุด
- นโยบาย
- นโยบาย
- โพสต์
- ที่มีศักยภาพ
- การกด
- ป้องกัน
- ก่อน
- ก่อนหน้านี้
- หลัก
- ส่วนตัว
- การประมวลผล
- ก่อ
- ผู้ผลิต
- ผลิตภัณฑ์
- ออกแบบผลิตภัณฑ์
- คุณสมบัติ
- ให้
- ให้
- สาธารณะ
- ประกาศ
- คำถาม
- คะแนน
- ค่อนข้าง
- ต้นน้ำ
- อ่าน
- การอ่าน
- แนะนำ
- แนะนำ
- เรียกว่า
- ภูมิภาค
- จำ
- เอาออก
- แทนที่
- กรุ
- เป็นตัวแทนของ
- ขอ
- การร้องขอ
- จำเป็นต้องใช้
- ทรัพยากร
- แหล่งข้อมูล
- ว่า
- ตามลำดับ
- REST
- แผนงาน
- บทบาท
- บทบาท
- วิ่ง
- วิ่ง
- s
- เดียวกัน
- ความพึงพอใจ
- พอใจกับ
- ภาพหน้าจอ
- SDK
- ที่สอง
- วินาที
- ลับ
- Section
- ปลอดภัย
- ความปลอดภัย
- โทเค็นการรักษาความปลอดภัย
- เห็น
- ส่ง
- การส่ง
- ระดับอาวุโส
- แยก
- ชุด
- บริการ
- เซสชั่น
- ชุด
- การตั้งค่า
- การตั้งค่า
- น่า
- แสดง
- แสดงให้เห็นว่า
- คล้ายคลึงกัน
- เหมือนกับ
- ตั้งแต่
- โซลูชัน
- แหล่ง
- รหัสแหล่งที่มา
- ช่องว่าง
- โดยเฉพาะ
- ที่ระบุไว้
- กอง
- ขั้นตอน
- เริ่มต้น
- ข้อความที่เริ่ม
- ขั้นตอน
- ขั้นตอน
- หยุด
- เก็บไว้
- ที่พริ้ว
- เชือก
- แข็งแกร่ง
- ซับเน็ต
- ภายหลัง
- ประสบความสำเร็จ
- อย่างเช่น
- เพียงพอ
- ที่จัดมา
- รองรับ
- เอา
- ทีม
- เทคโนโลยี
- เทมเพลต
- แม่แบบ
- สถานีปลายทาง
- ทดสอบ
- การทดสอบ
- การทดสอบ
- กว่า
- ที่
- พื้นที่
- ที่มา
- ของพวกเขา
- พวกเขา
- แล้วก็
- ดังนั้น
- พวกเขา
- นี้
- สาม
- ตลอด
- ปริมาณงาน
- เวลา
- ไปยัง
- โทเค็น
- หัวข้อ
- หัวข้อ
- รักษา
- วางใจ
- สอง
- ชนิด
- ชนิด
- ความเข้าใจ
- บันทึก
- ให้กับคุณ
- การปรับปรุง
- ใช้
- มือสอง
- ผู้ใช้งาน
- ผู้ใช้
- ใช้
- การใช้
- ความคุ้มค่า
- ความคุ้มค่า
- ตรวจสอบ
- ผ่านทาง
- รายละเอียด
- คือ
- ทาง..
- we
- เว็บ
- บริการเว็บ
- ดี
- เมื่อ
- ว่า
- ที่
- ในขณะที่
- จะ
- กับ
- ไม่มี
- การทำงาน
- เขียน
- ยัง
- เธอ
- ของคุณ
- ลมทะเล