Giải pháp Ứng dụng API WhatsApp Business tiêu chuẩn chạy trên một vùng chứa Docker duy nhất. Trong trường hợp muốn tách dung lượng tải, đồng thời có nhiều máy chủ nhận và gửi tin nhắn đến WhatsApp, bạn có thể tận dụng giải pháp đa kết nối của chúng tôi.
Giải pháp Đa kết nối đòi hỏi quá trình thiết lập độ sẵn sàng cao hiện có trước tiên. Hãy làm theo hướng dẫn trong tài liệu về Độ sẵn sàng cao để thiết lập, sau đó tiếp tục như bên dưới.
Khi có độ sẵn sàng cao, chỉ một vùng chứa Docker chịu trách nhiệm gửi và nhận tin nhắn từ máy chủ WhatsApp. Nếu lưu lượng nhắn tin vượt quá thông lượng tối đa của một vùng chứa Docker, tin nhắn gửi đi sẽ bị tồn đọng và độ trễ gửi tin nhắn sẽ tăng lên. Để mở rộng Ứng dụng API WhatsApp Business, giải pháp đa kết nối hỗ trợ phân đoạn để phân bổ tải trên nhiều vùng chứa Docker. Hiện tại, chúng tôi chỉ hỗ trợ phân đoạn tĩnh với số đoạn là 1, 2, 4, 8, 16 hoặc 32. Độ sẵn sàng cao là trường hợp đặc biệt của đa kết nối có số đoạn là 1.
Trong nhóm này, có 2 nút Coreapp (CoreApp 1
và CoreApp 3
) chịu trách nhiệm gửi và nhận tin nhắn từ máy chủ WhatsApp cùng lúc. Mỗi tin nhắn sẽ chỉ thuộc về một đoạn dựa trên ID người nhận.
Ứng dụng WhatsApp Business API dùng tính năng phân đoạn để đạt được mức đa kết nối. Tùy thuộc vào số đoạn mà bạn thiết lập, cơ sở dữ liệu sẽ lưu trữ bản đồ đoạn để xác định tin nhắn thuộc về đoạn nào dựa trên ID người nhận (hoặc tên người dùng WhatsApp). Dưới đây là hàm dùng để xác định điều này:
shard_id = hash(recipient-id) % shard-number
Mỗi đoạn được ánh xạ đến một vùng chứa Docker đang chạy (Coreapp). Webapp sẽ biết vùng chứa Docker nào cần gửi yêu cầu tin nhắn dựa trên kết quả mà hàm này trả về. Bạn nên thiết lập số đoạn + X máy để có thể cho phép X lỗi máy.
Trong sơ đồ đa kết nối 2 đoạn ở trên, tin nhắn được định tuyến đến CoreApp 1
và CoreApp 3
dựa trên hàm phân đoạn. CoreApp 2
là nút phụ – hoạt động rất hiệu quả, nhưng không có kết nối hoạt động với máy chủ WhatsApp. Giả sử CoreApp 1
nhận tin nhắn cho shard=0
, còn CoreApp 3
nhận tin nhắn cho shard=1
. Nếu CoreApp 1
gặp sự cố, chỉ các tin nhắn cho shard=0
mới bị ảnh hưởng. Hệ thống vẫn sẽ gửi và nhận các tin nhắn thuộc về shard=1
bằng CoreApp 3
. Tương tự như chế độ độ sẵn sàng cao, Master 1
sẽ phát hiện lỗi của CoreApp 1
và chuyển đổi lưu lượng truy cập shard=0
sang CoreApp 2
. Chuyển đổi này sẽ diễn ra trong khoảng 35 giây.
Sau khi bạn thiết lập nhóm theo hướng dẫn trong tài liệu về Độ sẵn sàng cao, hãy sử dụng yêu cầu sau để bật chế độ đa kết nối.
Hãy nhớ là bạn cần phải có số đoạn + X vùng chứa Docker của Coreapp đang chạy trước khi tiếp tục.
Giải pháp Đa kết nối không đảm bảo Độ sẵn sàng cao. Hãy sử dụng nhiều Coreapp hơn số đoạn đang chạy để đảm bảo Độ sẵn sàng cao.
POST /v1/account/shards { "cc": "country-code", "phone_number": "phone-number", "shards": 1 | 2 | 4 | 8 | 16 | 32, "pin": "pin", "cert": "verified-name-cert-in-base64" }
Tên | Mô tả |
---|---|
| Bắt buộc. Mã quốc gia của số điện thoại đã đăng ký cho Ứng dụng API WhatsApp Business này dưới dạng chuỗi. Ví dụ: |
| Bắt buộc. Số điện thoại đã đăng ký cho Ứng dụng API WhatsApp Business này không có mã quốc gia hoặc ký hiệu dấu cộng (+) dưới dạng chuỗi. Ví dụ: |
| Bắt buộc. Số đoạn bạn muốn có dưới dạng số nguyên. Tùy chọn: |
| Không bắt buộc. Mã PIN 6 chữ số hiện có dưới dạng chuỗi cho tính năng xác minh 2 yếu tố. Ví dụ: |
| Bắt buộc. Nhờ việc đưa thông số Khi điền trường này, Doanh nghiệp có thể gọi điểm cuối này bất cứ lúc nào. Trước kia, doanh nghiệp chỉ có thể gọi điểm cuối này trong vòng 7 ngày đăng ký số điện thoại của họ. Chứng chỉ được mã hóa Base64 liên kết với số điện thoại đã chỉ định trước đây. Bạn có thể lấy chứng chỉ này qua Trình quản lý kinh doanh. Hãy xem phần Sao chép chứng chỉ được mã hóa Base64 để biết thông tin. Lưu ý:
Nếu thông số |
201 Created : You successfully changed shard number 403 Forbidden : You could hit this if server is temporarily unavailable, retry the request should fix it
GET /v1/account/shards
{ "account": { "shards": number-of-shards } }
Với mẫu này, bạn có thể đặt cấu hình số lượng phiên bản vùng chứa Coreapp đang hoạt động sẽ được tạo. Mẫu sẽ tạo một phiên bản vùng chứa Coreapp bổ sung để giúp chuyển đổi nhanh chóng trong trường hợp Coreapp gặp lỗi.
Theo mặc định, mẫu sẽ tạo số lượng phiên bản sau đây trên mỗi loại môi trường cho giải pháp Đa kết nối khi Độ sẵn sàng cao được bật:
Mẫu được đặt cấu hình để tự động thay đổi quy mô các phiên bản EC2 tùy vào mức sử dụng bộ nhớ. Mức sử dụng bộ nhớ tăng (hoặc giảm) cùng với mức tăng (hoặc giảm) số lượng phiên bản vùng chứa Coreapp "đang hoạt động". Do đó, khi số lượng phiên bản Coreapp được tạo tăng lên, số lượng phiên bản EC2 sẽ tự động mở rộng theo đó. Tuy nhiên, số lượng phiên bản EC2 tối đa có thể tạo được giới hạn như sau:
Số lượng phiên bản Coreapp đang hoạt động | Số lượng phiên bản EC2 tối đa |
---|---|
2 | 3 |
4 | 4 |
8 | 5 |
16 | 8 |
32 | 15 |
Tốc độ yêu cầu API và số lượng phiên bản Coreapp đang hoạt động xác định số lượng kết nối đến cơ sở dữ liệu. Với 8 phiên bản Coreapp đang hoạt động và tốc độ API là 100 tin nhắn/giây, bạn cần có kết nối khoảng 700 DB (khi SSL bị vô hiệu hóa) và kết nối 1200 DB (khi SSL được bật). Tuy nhiên, với 32 phiên bản Coreapp đang hoạt động và tốc độ API là 250 tin nhắn/giây, bạn cần có kết nối khoảng 1.700 DB.
Trong bản phát hành hiện tại, chúng tôi đã sử dụng db.m4.2xlarge
cho 8 phiên bản Coreapp đang hoạt động (mã hóa kết nối cơ sở dữ liệu bị vô hiệu hóa) và db.m4.4x.large
cho 32 phiên bản Coreapp đang hoạt động (mã hóa kết nối cơ sở dữ liệu được bật). Bảng sau cung cấp hướng dẫn về cách lựa chọn lớp phiên bản RDS và số lượng kết nối tối đa mà lớp đó có thể hỗ trợ:
Phiên bản RDS | Số lượng kết nối cơ sở dữ liệu tối đa |
---|---|
| 318 |
| 636 |
| 1272 |
| 2543 |
| 1212 |
| 2424 |
| 4848 |
| 9696 |
| 19391 |
| 38783 |
| 636 |
| 1272 |
| 2543 |
| 5086 |
| 12716 |
| 20345 |
| 298 |
| 596 |
| 1192 |
| 2384 |