Golang vs Nodejs!



  • Hi!
    Các bạn giúp mình có cái nhìn tổng quát về vụ này với. Mình đã coi qua một bài phân tích từ năm 2014 trên techmaster nhưng bây giờ thời thế đã khác rồi. IO đã quay về với Nodejs và Nodejs cũng đã ra V6 rồi. Vậy các bạn có thể đánh giá lại giúp được không?



  • nodejs mà chiến thôi, theo mình thấy 95% web hiện nay có thể viết bằng nodejs với hiệu suất ko thua golang bao nhiêu, nodejs từ javascript mà ra nên dễ hơn golang rất nhiều



  • Còn tuỳ bạn muốn làm gì :|, rest service thì nodejs ngon :D. Cần chạy cái gì tốn CPU ( xử lý ảnh, video, bản đồ ) thì golang.


  • Sailor

    Nếu xài socket thì sao nhỉ, nên xài go hay là node



  • Ở đây thì bạn muốn so sánh 2 ngôn ngữ này để làm gì nhỉ.( mỗi thằng có điểm mạnh và yếu riêng của nó)
    Với người mới học thì mình khuyên nên ngó nodejs vì với lập trình web kiều gì cũng qua html, css, js rồi. Việc tìm hiểu thêm về nodejs tương đối đơn giản. Với golang cũng không quá khó học nhưng bạn sẽ làm quen với 1 ngôn ngữ mới hoàn toàn nên mất thời gian hơn.

    Về tối ưu hiệu năng hệ thống , nodejs được sử dụng ở tầng frontend ( kết nối user và server frontend) tối ưu hoá được số lượng connect vào trong hệ thống của các bạn. Còn golang mạnh ở tầng service backend ở dưới tương tác với database xử lý các business logic(được phát triển hướng tới xử lý đa nhân). Tất nhiên khi build 1 mớ thì dùng thuần nodejs hoặc golang cũng được không sao hết.

    Về xử lý lỗi thì golang là một type-safe language trái ngược với js(nodejs) là weakly, dynamic type . Viết code nodejs bạn phải cẩn thận hơn so với golang :D ( nên dùng typescript ) . Bên cạnh đó các lỗi async khi mới lập trình trong nodejs khá là đau đầu "D .



  • Mình đã phát triển nhiều dự án, cả Go lẫn Node đều đã kinh qua. Vote cho việc kết hợp cả hai (nếu có thể), chứ so sánh thì khập khiễng vô cùng ! :D



  • Mình muốn so sánh ở đây không phải để nâng cái này hạ cái kia. Mà muốn có một cái nhìn tổng quát thôi, vì nếu có nhìn được như vậy cũng tốt hơn là chỉ nhìn mỗi vào một thứ. Với lại người trả tiền cho mình là ai? và nhu cầu của họ là cái gì mới quan trong. Dù sao cũng cảm ơn các bạn đã góp ý.



  • Nếu nói ngôn ngữ thì mỗi cái có 1 thế mạnh. Tuy vào bài toaán. Mình nghĩ sẽ đến 1 cấp độ các bạn ko quá bị ràng buộc vào ngôn ngữ nào. Giờ bạn thấy cái nào hứng thú thì bạn chiến trước. Theo mình, Nodejs đang có cộng đồng đông hơn.

    Không liên quan, anh em nào hứng thú về team bên mình nhé. Yêu cầu viết đc Nodejs hoặc Go: https://itviec.com/jobs/subiz-live-chat-software-engineers-nodejs-go-lang-4822
    Hiện API bên mình đang viết bằng cả 2 ngôn ngữ này và đang chuyển sang Go.


  • Sailor

    Tiện thể cho mình hỏi nếu xài socket thì Golang có thể handle dc số lượng kêt nối lên tầm 10k không nhỉ ?



  • @katanhich câu hỏi này khá khó trả lời , bài toán c10k h bạn dùng công nghệ gì cũng đc rồi, cả nodejs hay golang đều ok, việc mở rộng ra thì liên quan nhiều đến việc cân tải và cấu hình từng server


  • Banned

    @katanhich cái này bạn cứ lên search load balancing và scalability thì nó có hết giải pháp rồi. Nên đừng lo lắng, cứ làm đi, bao giờ lên tới đó thì sẽ biết :)


  • Sailor

    Vấn đề là mình phải thuyết phục đước sếp rằng giải pháp giải quyết đc vấn đề thì mới dc làm :v



  • Thông thường người ta hay dùng kết hợp bạn ạ. Càng gần backend thì dùng golang. còn gần phía frontend thì nodejs. những cái xử lý nặng thì bạn để golang làm. còn phần đón nhận request cũng như response ... thì để cho nodejs nó làm


  • Sailor

    Ohm, thanks bạn, hệ thống mình dag chạy Java, nen tính để nodejs hoặc golang nó đảm nhiệm cái socket thôi.


Log in to reply