thảo luận Hệ thống có nhiều TPS nhất đã từng làm

step321

Junior Member
Mình lập thớt để anh em trao đổi kinh nghiệm về các hệ thống có TPS lớn nhất mà Anh/Em đã từng làm, từ đó rút ra kinh nghiệm cho công việc sau này.

Mình trước: hệ thống có TPS lớn nhất mà minh đã từng làm và hiện vẫn đang tunring, monitor hàng ngày là có TPS 2 chiều khoảng 20 TPS, mỗi ngày khoang 2.5 triệu giao dịch, vẫn đang tăng và hiện hệ thống vẫn đáp ứng được yêu cầu.

Kinh nghiệm mà mình thấy gồm các bước tối ưu:
  • Tối ưu code: viết đơn giản, gọn
  • Tối ưu DB: đánh index, partition dữ liệu
  • Sử dụng Load balancing để share tải
  • Healcheck hệ thống, cái này khó phết, vì qua Load balacing nếu service connect trực tiếp thì LB sẽ biết được service lỗi khi nào để ko route qua, nhưng nếu qua một service khác thì LB sẽ ko phát hiện được
  • Áp dụng ELK để monitor và theo dõi log.
 
1 ngày tầm đó thì có vẻ giống ck chắc rồi.
Hì hì. Hôm trước nghe 1 cao nhân làm ở amazon nói hệ thống của họ cả triệu TPS, choáng quá nên đây hỏi các bác xem kn sao ạ. Ko biêt ht khủng như kia thì thiết kế, tối ưu thế nào, chắc ở VN có hệ thống cỡ nghìn TPS thì đã khủng lắm rồi???
 
Ở HN liệu có những công ti outsource nào có số lượng req nhiều như vậy để join lấy exp các bác nhỉ ?
 
Write tôi bác, read chưa tính, thường read bằng 1.2 -->2 lần write
Nếu write thì có cần tính consistency hay chỉ cần eventually consistency là được bác?
Việc kiểm tra health check mình nghĩ nếu giao tiếp phần write qua kafka, phần read thì dùng 1 internal db thì mình ko nghĩ sẽ cần thiết phải communicate directly từ service này qua service kia. Hay ý bác là gọi qua 1 third party service nào đó.
Bác cho mình tech stacks cty bác mình nghiên cứu thử cho vui :D
via theNEXTvoz for iPhone
 
Nếu write thì có cần tính consistency hay chỉ cần eventually consistency là được bác?
Việc kiểm tra health check mình nghĩ nếu giao tiếp phần write qua kafka, phần read thì dùng 1 internal db thì mình ko nghĩ sẽ cần thiết phải communicate directly từ service này qua service kia. Hay ý bác là gọi qua 1 third party service nào đó.
Bác cho mình tech stacks cty bác mình nghiên cứu thử cho vui :D
via theNEXTvoz for iPhone
Java spring boot bác ạ, có queue mà chỉ dùng khi put file lớn, còn bt vẫn là all api.
 
Java spring boot bác ạ, có queue mà chỉ dùng khi put file lớn, còn bt vẫn là all api.
Nếu thế thì system design của bác ko có gì đặc biệt nhỉ. Vẫn chạy scale ngon thì chắc ko vấn đề gì.
Thường để scale lên được thì phải xài Kafka, Sql, Cassandra hoặc Mongo db rồi tìm cách chuyển dữ liệu từ SQL qua Cassandra, tăng read performance thì phải xài thêm Redis các thứ nữa tuỳ bài toán. Vẫn ko hiểu tại sao lại ko health check được services vì nếu call rest API thì request nó vẫn phải đi qua load balancer mà.
Monitoring thì mình thấy xịn nhất vẫn là xài datadog cơ bản là hơi tốn kém :D
 
Đây là một module nhỏ trong hệ thống bên mình:
1702432665678.png
, mà hệ thống bên mình khoảng 10, 20 module như thế này :D
 
Thường đánh giá độ khủng của hệ thống là tính trên s, chứ còn 2.5 tr/ ngày thì con số nói chung vẫn là khá bé, ko đáng gì cả.
 
TPS khủng mà nhà giàu server to thì chưa chắc ngon bằng app đơn giản nhưng code sạch + optimized
Nên là cũng khó mà so sánh ai tay to hơn ai
 
Nếu thế thì system design của bác ko có gì đặc biệt nhỉ. Vẫn chạy scale ngon thì chắc ko vấn đề gì.
Thường để scale lên được thì phải xài Kafka, Sql, Cassandra hoặc Mongo db rồi tìm cách chuyển dữ liệu từ SQL qua Cassandra, tăng read performance thì phải xài thêm Redis các thứ nữa tuỳ bài toán. Vẫn ko hiểu tại sao lại ko health check được services vì nếu call rest API thì request nó vẫn phải đi qua load balancer mà.
Monitoring thì mình thấy xịn nhất vẫn là xài datadog cơ bản là hơi tốn kém :D
cty cũ em xài gần như full combo bác đề cập. Có kafka để scale, redis dùng caching, postgres lưu transaction và có kết hợp cả mongodb để giảm tải + lưu data config với business logic. Nhưng chắc do code lởm quá chứ user chỉ có vài ngàn mà hệ thống cũng chết lên chết xuống :shame: :shame: :shame:

Mình lập thớt để anh em trao đổi kinh nghiệm về các hệ thống có TPS lớn nhất mà Anh/Em đã từng làm, từ đó rút ra kinh nghiệm cho công việc sau này.

Mình trước: hệ thống có TPS lớn nhất mà minh đã từng làm và hiện vẫn đang tunring, monitor hàng ngày là có TPS 2 chiều khoảng 20 TPS, mỗi ngày khoang 2.5 triệu giao dịch, vẫn đang tăng và hiện hệ thống vẫn đáp ứng được yêu cầu.

Kinh nghiệm mà mình thấy gồm các bước tối ưu:
  • Tối ưu code: viết đơn giản, gọn
  • Tối ưu DB: đánh index, partition dữ liệu
  • Sử dụng Load balancing để share tải
  • Healcheck hệ thống, cái này khó phết, vì qua Load balacing nếu service connect trực tiếp thì LB sẽ biết được service lỗi khi nào để ko route qua, nhưng nếu qua một service khác thì LB sẽ ko phát hiện được
  • Áp dụng ELK để monitor và theo dõi log.
Ý bác là service A call qua B thì đi qua LB, còn service A call qua service C xong vòng lại service B thì không à?
 
cty cũ em xài gần như full combo bác đề cập. Có kafka để scale, redis dùng caching, postgres lưu transaction và có kết hợp cả mongodb để giảm tải + lưu data config với business logic. Nhưng chắc do code lởm quá chứ user chỉ có vài ngàn mà hệ thống cũng chết lên chết xuống :shame: :shame: :shame:


Ý bác là service A call qua B thì đi qua LB, còn service A call qua service C xong vòng lại service B thì không à?
LB--> service A (chia bài cho nh đối tác khác nhau --> nh service B (xử lý cho từng đối tác). Con service A chỉ forward lên chạy nhanh lắm, chả chết bao giờ, trong khi service B thì phức tạp hơn chút nên hay chết. Vì LB nó chỉ biết đc trạng thái của A nên khi B chết nó vẫn forward sang A, A báo lỗi, nh như thế vẫn chưa đạt yêu cầu. E đang tìm hiểu cách để B chết mà LB nó biết để forward sang con A khác đang hd bình thường.
 
Thường đánh giá độ khủng của hệ thống là tính trên s, chứ còn 2.5 tr/ ngày thì con số nói chung vẫn là khá bé, ko đáng gì cả.
Đúng rồi bác. nh đảm bảo hd ổn định, ít lỗi cũng khá khó. Vì độ tin cậy yêu cầu là 99.99%, có đối soát hằng ngày rất chặt.
 
Back
Top