Asked Feb 9th, 2023 1:20 a.m. 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.

Feb 9th, 2023 1:44 a.m.

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
Feb 9th, 2023 2:09 a.m.

@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 Feb 9th, 2023 4:01 a.m.
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
Feb 9th, 2023 4:15 a.m.

thankiusss rất nhiều

0
| Reply
Share
Avatar Quang Nguyễn @quangnv1311
Feb 9th, 2023 4:43 a.m.

@Linhnef no probs

0
| Reply
Share
Avatar Vu Tong @tonghoangvu
Feb 12th, 2023 3:07 a.m.

@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
Feb 12th, 2023 5:29 a.m.

@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 Feb 9th, 2023 1:32 a.m.
+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
Feb 9th, 2023 9:42 a.m.

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
Feb 10th, 2023 2:20 a.m.

@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.