Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
vì sao Golang xử lý concurrency tốt
em đang muốn xử lý lượng concurrency lớn từ người dùng, mọi người nói nên chọn Golang vì Java k xử lý được như vậy, anh có thể giải thích em vì sao Golang và NodeJS có thể làm vậy mà Java k thể k ạ
  • Answer
Remain: 5
2 Answers
Avatar
tvd12 Professional
tvd12 Professional
  1. Đối với concurrency thì cái gì Golang hay các framework khác làm được thì java cũng làm được em ạ.
  2. Golang hay NodeJS đều cố gắng giấu đi sự phức tạp của xử lý đa luồng, vậy nên nó đã tạo sẵn một số lượng thread nhất định (và sẽ tăng lên khi cần thiết), và cài đặt sẵn càng event loop, queue cho lập trình viên rồi, lập trình viên chỉ cần sử dụng các từ khoá như go hay async, mà không cần quan tâm đến xử lý phức tạp bên trong. Còn đối với java thì em phải tự tạo thread pool, event loop và queue, như vậy nó sẽ có khó khăn hơn chút về mặt kiến thức.
  • 1
  • Reply
Avatar
Nguyễn Thái Sơn Professional
em có thể hỏi vì sao mô hình event loop có thể handle lượng request lớn mà k bị chết k ạ @anh Dũng
  • 0
  • Reply
event loop thường sẽ đi với 1 queue, và mình sẽ set max được capacity cho cái queue này, khi server đang quá tải thì queue sẽ đầy và các request mới sẽ không được thêm vào nữa, chính vì vậy mà nó đảm bảo hệ thống sẽ không bị hết RAM và CPU và vẫn sống sót (mặc dù sẽ từ chối phục vụ cho các request mới)  –  tvd12 1643964966000