Asked thg 2 9, 2023 1:20 SA 381 0 2
  • 381 0 2
+2

Cách tìm ra api chạy nhanh nhất

Share
  • 381 0 2

Hi mọi người mình có câu hỏi chưa biết cách giải quyết, có 3 API giống nhau chạy chạy trên 3 servers khác nhau, sử dụng javascript, react. cách để tìm ra api chạy nhanh nhất và lấy response từ api đó. mong các sư phụ giải đáp.

thg 2 9, 2023 1:44 SA

3 cái service API kia của bạn là cùng một source code hay là 3 source code khác nhau thế nhỉ?

0
| Reply
Share
thg 2 9, 2023 2:09 SA

@huukimit 3API này call trong cùng 1 source nhưng ở khác server thôi á bạn. tức là 3 api này sẽ giống nhau. và tìm cái nhanh nhất để chạy á bạn.

+1
| Reply
Share

2 ANSWERS


Answered thg 2 9, 2023 4:01 SA
Accepted
+8

Bạn sử dụng

Promise.race([promise1, promise2, promiseN])

Hàm này sẽ nhận vào danh sách các promise thằng nào resolved nhanh nhất thì sẽ lấy giá trị của thằng đó nhé. Như vậy là bạn có thể call cả 3 API cùng lúc rồi add nó vào 1 array chứa rồi dùng Promise.race. Cách hoạt động giống như đua xe đó. Xem thêm tại https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race

Share
thg 2 9, 2023 4:15 SA

thankiusss rất nhiều

0
| Reply
Share
Avatar Quang Nguyễn @quangnv1311
thg 2 9, 2023 4:43 SA

@Linhnef no probs

0
| Reply
Share
Avatar Vu Tong @tonghoangvu
thg 2 12, 2023 3:07 SA

@quangnv1311 nếu dùng race như vậy thì thay vì 1 request đến 1 server thì nó sẽ request tới all server, làm tăng tải cả 3 không cần thiết.

Vấn đề của chủ thớt mình nghĩ nên tìm hiểu thêm về load balancing xem sao (mình chưa thử).

0
| Reply
Share
Avatar Quang Nguyễn @quangnv1311
thg 2 12, 2023 5:29 SA

@tonghoangvu Bài toán của author theo mình thấy là khác với LB. LB thì đơn giản hơn. Có thể có 3 resource cung cấp cùng 1 thông tin và có thể thời gian request mất nhiều thời gian, nên muốn agent nào trả ra kết quả nhanh nhất thì lấy thằng đó. Nếu có kinh nghiệm hơn thì dùng Rxjs trong case này sẽ xử lý được cả cancel request đã sent.

+1
| Reply
Share
Answered thg 2 9, 2023 1:32 SA
+2

hướng giải quyết của mình là sẽ call 3 api đó lần đầu để xác định cái nào nhanh nhất. rồi apply từ lần 2. không biết có lần nào hay hơn không

Share
Avatar Ashen @Hungpv-ashen
thg 2 9, 2023 9:42 SA

mình nghĩ không giải quyết đc vấn đề, vì tốc độ chạy của 1 request sẽ phụ thuộc vào nhiều yếu tố như băng thông, cache, ... và không bất biến. Ví dụ server A lấy dữ liệu xong cache lại, lần đầu chậm nhưng các lần sau sẽ nhanh, kiểu vậy

0
| Reply
Share
thg 2 10, 2023 2:20 SA

@Hungpv-ashen vâng mình nghĩ các của mình không tối ưu và đang dùng cách của bạn bên trên ạ :

Promise.race([promise1, promise2, promiseN])

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.