hoangquochung1110 / public-notes

0 stars 0 forks source link

Các Kênh Giao Tiếp: Hướng Dẫn Toàn Diện #27

Open hoangquochung1110 opened 2 months ago

hoangquochung1110 commented 2 months ago

Hiểu về Các Kênh Giao Tiếp: Hướng Dẫn Toàn Diện

Các kênh giao tiếp tạo thành nền tảng của hệ thống phân tán hiện đại, cho phép các thành phần khác nhau trao đổi thông tin một cách hiệu quả. Hãy cùng khám phá các loại kênh giao tiếp cơ bản, đặc điểm và cách chúng được sử dụng trong thực tế.

Kênh Point-to-Point (Điểm-đến-Điểm)

Kênh point-to-point (P2P) thiết lập liên kết giao tiếp trực tiếp giữa chính xác hai điểm cuối - một người gửi và một người nhận.

Đặc điểm chính:

Hình ảnh thực tế:

Hãy nghĩ về kênh point-to-point như một cuộc gọi điện thoại giữa hai người. Thông điệp từ người gọi chỉ dành cho và được nhận bởi duy nhất một người.

Trường hợp sử dụng:

Ví dụ trong công nghệ:

Kênh Publish-Subscribe (Xuất bản-Đăng ký)

Kênh publish-subscribe (pub-sub) cho phép nhà xuất bản gửi thông điệp đến nhiều người đăng ký cùng một lúc mà không cần biết những người đăng ký đó là ai.

Đặc điểm chính:

Hình ảnh thực tế:

Hãy nghĩ về pub-sub như một chương trình phát thanh. Đài phát thanh (nhà xuất bản) truyền nội dung, và bất kỳ ai có radio điều chỉnh đến tần số đó (người đăng ký chủ đề đó) sẽ nhận được nội dung.

Trường hợp sử dụng:

Ví dụ trong công nghệ:

Kênh Request-Reply (Yêu cầu-Phản hồi)

Kênh request-reply đại diện cho mô hình hội thoại hai chiều trong đó người yêu cầu gửi thông điệp và mong đợi phản hồi.

Đặc điểm chính:

Hình ảnh thực tế:

Điều này giống như hỏi ai đó một câu hỏi và chờ đợi câu trả lời của họ.

Trường hợp sử dụng:

Ví dụ trong công nghệ:

Kênh Thông Điệp: Các Mô Hình Bổ Sung

Mẫu Người Tiêu Dùng Cạnh Tranh (Competing Consumers Pattern)

Kênh Ưu Tiên

Kênh Dead Letter (Thư Chết)

Kênh Giao Hàng Đảm Bảo

So Sánh Các Mẫu Kênh

Khía cạnh | Point-to-Point | Publish-Subscribe | Request-Reply -- | -- | -- | -- Cơ số | 1:1 | 1:N | 1:1 (hai chiều) Tiêu thụ thông điệp | Một lần bởi một người tiêu dùng | Nhiều lần bởi các người đăng ký khác nhau | Yêu cầu được tiêu thụ một lần, phản hồi trả về cho người gốc Kết nối | Lỏng lẻo nhưng trực tiếp | Rất lỏng lẻo | Kết nối chặt chẽ hơn Triển khai điển hình | Hàng đợi | Chủ đề | Thông điệp tương quan Thời gian sống của thông điệp | Cho đến khi tiêu thụ | Phụ thuộc vào cấu hình chủ đề | Cho đến khi phản hồi được tạo ra Trọng tâm trường hợp sử dụng | Phân phối công việc | Thông báo sự kiện | Gọi dịch vụ

Các Phong Cách Tích Hợp và Ứng Dụng Kênh

Message-Oriented Middleware (MOM)

Enterprise Service Bus (ESB)

Kiến Trúc Hướng Sự Kiện (Event-Driven Architecture - EDA)

Các Cân Nhắc Khi Chọn Mẫu Kênh

Yêu Cầu Độ Tin Cậy

Nhu Cầu Khả Năng Mở Rộng

Độ Nhạy Độ Trễ

Yêu Cầu Thứ Tự

Nhu Cầu Lưu Trữ

Khái Niệm Nâng Cao

Xử Lý Áp Lực Ngược (Back-Pressure)

Giao Hàng Đúng Một Lần (Exactly-Once)

Định Tuyến Dựa Trên Nội Dung

Cân Nhắc Triển Khai Thực Tế

Khi triển khai các kênh giao tiếp, hãy cân nhắc:

  1. Lựa Chọn Giao Thức: Chọn các giao thức phù hợp (HTTP, AMQP, MQTT, v.v.) dựa trên yêu cầu của bạn
  2. Định Dạng Serialize: Quyết định cách mã hóa thông điệp (JSON, Protocol Buffers, Avro, v.v.)
  3. Xử Lý Lỗi: Xác định chiến lược xử lý lỗi xử lý thông điệp
  4. Giám Sát: Triển khai khả năng quan sát để theo dõi luồng thông điệp và sức khỏe hệ thống
  5. Bảo Mật: Cân nhắc nhu cầu xác thực, ủy quyền và mã hóa

Hiểu các mẫu giao tiếp này cung cấp nền tảng cho việc thiết kế hệ thống phân tán mạnh mẽ, có thể mở rộng, có thể quản lý hiệu quả luồng thông tin giữa các thành phần.

hoangquochung1110 commented 2 months ago

AWS Services for Communication Channels

Core Communication Patterns and Corresponding AWS Services

Communication Pattern Primary AWS Services Features Use Cases
Point-to-Point (P2P) Amazon SQS (Simple Queue Service) • Standard queues (at-least-once delivery)
• FIFO queues (exactly-once processing)
• Message retention up to 14 days
• Configurable visibility timeout
• Dead-letter queue support
• Task distribution
• Order processing
• Workload decoupling
• Microservices communication
• Background job processing
Publish-Subscribe (Pub-Sub) Amazon SNS (Simple Notification Service)

Amazon EventBridge
SNS:
• Topics with multiple subscribers
• Multiple delivery protocols
• Message filtering

EventBridge:
• Event buses
• Pattern matching rules
• Schema registry
• SaaS integration
• System alerts and notifications
• Email/SMS distribution
• Application events broadcasting
• Cross-service communication
• Integrating with external services
Request-Reply AWS Lambda with API Gateway

AWS AppSync
Lambda + API Gateway:
• HTTP/REST/WebSocket APIs
• Request validation
• Response transformation

AppSync:
• GraphQL interface
• Real-time data
• Built-in authorization
• Synchronous API calls
• Web/mobile backends
• Real-time applications
• Query-based data access

Advanced Channel Patterns in AWS

Channel Pattern AWS Implementation Key Capabilities
Competing Consumers SQS with multiple worker instances
(EC2, ECS, Lambda)
• Automatic message distribution
• Horizontal scaling of processing
• Prevention of duplicate processing (with FIFO queues)
Priority Channels Multiple SQS queues with different polling strategies
Amazon MQ (managed ActiveMQ/RabbitMQ)
• Differential polling rates
• Priority queues in Amazon MQ
• Message sorting based on attributes
Dead Letter Channels SQS Dead-Letter Queues
SNS Dead-Letter Queues
Lambda failure destinations
• Capture failed message processing
• Configurable retry limits
• Isolation of problematic messages
Guaranteed Delivery SQS FIFO queues
Amazon MQ with persistent delivery
• Message durability
• Exactly-once processing
• Transaction support in MQ

Enterprise Integration Patterns and AWS Implementations

Integration Pattern AWS Services Application
Message-Oriented Middleware (MOM) Amazon MQ
Amazon SQS & SNS
• Traditional MOM capabilities
• Support for JMS, AMQP, MQTT, STOMP
• Enterprise messaging features
Enterprise Service Bus (ESB) AWS Step Functions
EventBridge
Amazon AppFlow
• Workflow orchestration
• Service integration
• Data transformation
• Routing logic
Event-Driven Architecture (EDA) EventBridge
SNS
Amazon Kinesis
Lambda
• Centralized event bus
• Real-time event processing
• Scalable event streaming
• Serverless event handlers

Specialized Communication Services

Communication Need AWS Service Key Features
Streaming Data Amazon Kinesis Data Streams
Amazon Kinesis Firehose
• Real-time data ingestion
• High-throughput streaming
• Integration with analytics services
IoT Communication AWS IoT Core • MQTT and HTTPS protocols
• Device shadows
• Rules engine for message routing
Application Integration Amazon AppFlow
AWS Transfer Family
• SaaS integration
• B2B data transfer
• Protocol translation
Notification Delivery Amazon Pinpoint
Amazon SES
• Multi-channel messaging
• Email delivery
• Campaign management
Real-time Communication Amazon IVS
Kinesis Video Streams
• Live video streaming
• WebRTC support
• Media processing

Implementation Considerations

Consideration AWS Solutions Details
Security IAM, KMS, VPC endpoints • Authentication and authorization
• Encryption at rest and in transit
• Network isolation
Monitoring CloudWatch, X-Ray, CloudTrail • Metric collection
• Distributed tracing
• Audit logging
Scaling Auto Scaling, Provisioned Concurrency • Automatic resource adjustment
• Pre-warming for predictable loads
Disaster Recovery Multi-region deployment, Cross-region replication • Service redundancy
• Geographic distribution
Cost Optimization Serverless options, Reserved capacity • Pay-per-use models
• Discounted long-term commitments
hoangquochung1110 commented 2 months ago

Các Quyết định thiết kế kênh (Message Channel Decisions)

  1. One-to-one or one-to-many:
    • Point-To-Point: Đảm bảo bất kì một thông điệp nào chỉ đc tiêu thụ bởi một application
    • Pub-Sub: khi bạn muốn tất cả application đều nhận đc thông điệp
      1. Kiểu dữ liệu của thông điệp: cần tuân thủ theo mô hình định nghĩa trước sao cho receiver có thể hiểu và tiêu thụ đc.
      2. (Xử lí) thông điệp không hợp lệ và chết
      3. Tính bền vững của thông điệp: khi hệ thống Messaging crash hoặc shutdown, điều gì xảy ra với các thông điệp của nó (sau khi hệ thống available trở lại) ? Thông thường các kênh sẽ lưu trữ thông điệp ở memory