Cảm ơn những ý kiến góp ý của bạn rất nhiều.
Mình cũng đã cố gắng truyền tải nhiều thông tin và nhiều use case nhất có thể vào bài viết tuy nhiên vì thời gian eo hẹp nên vẫn chưa thể cover hết được toàn bộ nội dung liên quan tới Nodejs. Cũng như bài viết hướng tới nhiều đối tượng khác nhau nên mình cố gắng sử dụng những ví dụ thực tế để giễ dàng hình dung hơn.
Bài viết hoàn toàn dựa trên kinh nghiệm thực tế của mình nên chắc chắn sẽ còn nhiều thiếu sót. Hy vọng nhận được nhiều góp ý của bạn trong tương lai.
Việc trả lời toàn bộ câu hỏi ở trên thì chắc mình phải viết 1 series mất 🤒. Cảm ơn bạn rất nhiều.
Có thể cung cấp cho minh tài liệu nào nói rằng nodejs app không sử dụng CPU (nếu app đó không cần DB). Vậy giả sử mình dùng microservice, mấy con service không dùng DB thì có cần CPU cho nó không? Theo tài liệu mà mình đọc được, người ta chỉ nói rằng trong trường sử dụng multiple CPUs thì nodejs sẽ chạy trên 1 single CPU thay vì chạy trên nhiều CPUs vì nó dùng single-thread.
Bệnh nhân là database và Y tá là NodeJS server? Vậy là Y tá sẽ đến nhà bệnh nhân hay bệnh nhân phải đến bệnh viện để gặp y tá?
Nhấn mạnh, NodeJS là 1 môi trường để chạy, nhưng lại rất nhiều cụm từ, data trả về từ DB và Node.JS xử lý.
Có dám chắc là các web app hoạt động theo kiểu, request sau phải chờ request trước không? Giờ thử chạy Promise.all trên frontend thử xem nó có chờ không?
Web app nào sử dụng cơ sở dữ liệu làm backend? Ví dụ dùm cái? Vậy web app nào thì không sử dụng cơ sở dữ liệu làm backend? wtf, lần đầu nghe nói việc cơ sở dữ liệu đển làm backend.
Thậm chí, web app và cơ sở dữ liệu chả liên quan mọe gì. Hay ông viết web mà web gọi thẳng đến cơ sở dữ liệu thì đỉnh của chóp. Best security practices.
NodeJS sử dụng single-thread, giở muốn dùng multi-thread thì sao? Có được không? (Nói không thử đi, quăng cái link cho mà đọc nè)
NodeJS không scale theo cách tăng CPUs thì cũng scale theo cách khác. Đâu phải cứ tăng CPU là tăng hiệu suất đâu, tăng cluster, process, chia nhỏ thành microservice,...?
30 bàn xử lý, có bàn ngôi chơi, đó là bản chất hệ thống, giờ hệ thộng multi-thread mà chỉ có 1 request thì mấy cái thread khác làm gì? Chạy qua dành việc??
Nghẽn vì DB không thể sử lý nhiều request 1 lúc như nodejs? Vậy thì mình dùng mấy cái DB noSQL thì có cần dùng NodeJS không? Thậm chí, mình cũng rất hiếm khi gặp phải case là nghẽn DB, mình mới chỉ nghe đến xử lý đồng thời nhiều request cùng thay đổi 1 dữ liệu trên relation Database thôi, mà cái đó chả liên quan mọe gì đến cái phần multiple request ở đây.
Database có thể sử lý nhiều request không? Có, nếu không có sao nó work với thằng NodeJS được? Còn nó xử lý được bao nhiêu thì đó là tùy vào cấu hình, factor, instance các thứ, liên quan mẹo gì đến NodeJS? Ông nói chuyện con gà ông đá qua con vịt vậy?
Nếu single-thread powerful đến vậy, vậy thì tại sao đến bây giờ vẫn còn nhiều trang web sử dụng multi-thread? Giờ khách hàng đang có 1 con app mà ngày xử ngày xưa vì ít người, nên nó là multi-thread, giờ khách hàng đông, thì có nên đập cái web đó chuyển sang nodejs không? Nếu không đập thì nó có xử lý được cả ngàn cái request không?
@pmdat91 tất nhiên là cái gì cũng sẽ có 2 mặt cả, cái số 1 thì nó sẽ làm cho việc get data trở nên phức tạp, nhất là khi hệ thống noti nó có liên quan đến nhiều loại object, ví dụ nó là tên người, tên group, tên page,... Chi phí khi read này sẽ lớn trừ khi bạn tạo dc 1 hệ thống tra cứu global ID key-value cực nhanh.
Cái số 2 thì sẽ hy sinh performance khi write, nhưng việc write thay đổi sẽ xảy ra ít hơn read nên mình chấp nhận. Thực tế thì hệ thống noti mình làm đang dùng cái số 2 này. Việc get data ra sẽ rất nhanh
Bác cho e hỏi tí về lỗi này đc k ạ . E chạy portable trên selenium thì nó bị lỗi k có điều khiển đc , mặc dù webdriver với portable version giống nhau , selenium bản 4.11 !!!
Khi người dùng đổi tên (là action xảy ra ít) thì sẽ phải update lại những cái notification cũ có xuất hiện tên của người dùng. Nên mình đã thêm 1 field nữa có đánh index để tiện lookup và update khi data có thay đổi
Bài viết rất thực tế và hữu ích. Cảm ơn bạn nhiều.
Tuy nhiên, mình gặp vấn đề trong việc Người dùng đổi tên. Thì câu "Monmen đã bình luận vào bài viết của Viblo" vẫn phải đổi Nội dung Text hiển thị cho người dùng thành "MonmenABC đã bình luận vào bài viết của Viblo" chẳng hạn, cũng không hoàn toàn là giống trong DB. Nhưng tôi nghĩ là chấp nhận được.
THẢO LUẬN
Cảm ơn những ý kiến góp ý của bạn rất nhiều. Mình cũng đã cố gắng truyền tải nhiều thông tin và nhiều use case nhất có thể vào bài viết tuy nhiên vì thời gian eo hẹp nên vẫn chưa thể cover hết được toàn bộ nội dung liên quan tới Nodejs. Cũng như bài viết hướng tới nhiều đối tượng khác nhau nên mình cố gắng sử dụng những ví dụ thực tế để giễ dàng hình dung hơn.
Bài viết hoàn toàn dựa trên kinh nghiệm thực tế của mình nên chắc chắn sẽ còn nhiều thiếu sót. Hy vọng nhận được nhiều góp ý của bạn trong tương lai.
Việc trả lời toàn bộ câu hỏi ở trên thì chắc mình phải viết 1 series mất 🤒. Cảm ơn bạn rất nhiều.
1233
Bài viết like sh*t
Có thể cung cấp cho minh tài liệu nào nói rằng nodejs app không sử dụng CPU (nếu app đó không cần DB). Vậy giả sử mình dùng microservice, mấy con service không dùng DB thì có cần CPU cho nó không? Theo tài liệu mà mình đọc được, người ta chỉ nói rằng trong trường sử dụng multiple CPUs thì nodejs sẽ chạy trên 1 single CPU thay vì chạy trên nhiều CPUs vì nó dùng single-thread.
Bệnh nhân là database và Y tá là NodeJS server? Vậy là Y tá sẽ đến nhà bệnh nhân hay bệnh nhân phải đến bệnh viện để gặp y tá?
Nhấn mạnh, NodeJS là 1 môi trường để chạy, nhưng lại rất nhiều cụm từ, data trả về từ DB và Node.JS xử lý.
Có dám chắc là các web app hoạt động theo kiểu, request sau phải chờ request trước không? Giờ thử chạy Promise.all trên frontend thử xem nó có chờ không?
Web app nào sử dụng cơ sở dữ liệu làm backend? Ví dụ dùm cái? Vậy web app nào thì không sử dụng cơ sở dữ liệu làm backend? wtf, lần đầu nghe nói việc cơ sở dữ liệu đển làm backend. Thậm chí, web app và cơ sở dữ liệu chả liên quan mọe gì. Hay ông viết web mà web gọi thẳng đến cơ sở dữ liệu thì đỉnh của chóp. Best security practices.
NodeJS sử dụng single-thread, giở muốn dùng multi-thread thì sao? Có được không? (Nói không thử đi, quăng cái link cho mà đọc nè)
NodeJS không scale theo cách tăng CPUs thì cũng scale theo cách khác. Đâu phải cứ tăng CPU là tăng hiệu suất đâu, tăng cluster, process, chia nhỏ thành microservice,...?
30 bàn xử lý, có bàn ngôi chơi, đó là bản chất hệ thống, giờ hệ thộng multi-thread mà chỉ có 1 request thì mấy cái thread khác làm gì? Chạy qua dành việc??
Nghẽn vì DB không thể sử lý nhiều request 1 lúc như nodejs? Vậy thì mình dùng mấy cái DB noSQL thì có cần dùng NodeJS không? Thậm chí, mình cũng rất hiếm khi gặp phải case là nghẽn DB, mình mới chỉ nghe đến xử lý đồng thời nhiều request cùng thay đổi 1 dữ liệu trên relation Database thôi, mà cái đó chả liên quan mọe gì đến cái phần multiple request ở đây. Database có thể sử lý nhiều request không? Có, nếu không có sao nó work với thằng NodeJS được? Còn nó xử lý được bao nhiêu thì đó là tùy vào cấu hình, factor, instance các thứ, liên quan mẹo gì đến NodeJS? Ông nói chuyện con gà ông đá qua con vịt vậy?
Nếu single-thread powerful đến vậy, vậy thì tại sao đến bây giờ vẫn còn nhiều trang web sử dụng multi-thread? Giờ khách hàng đang có 1 con app mà ngày xử ngày xưa vì ít người, nên nó là multi-thread, giờ khách hàng đông, thì có nên đập cái web đó chuyển sang nodejs không? Nếu không đập thì nó có xử lý được cả ngàn cái request không?
a = a+b; b = a-b; a = a-b là xong mà ?. Ad nói k dùng biến tạm nhưng đáp án của ad đang dùng biến tạm đó
@Honganh mình fix như cái comment trên mà ko dc b ạ
Ok mình đang viết phần 4 đây chờ đọc nhé
cảm ơn bạn
@pmdat91 tất nhiên là cái gì cũng sẽ có 2 mặt cả, cái số 1 thì nó sẽ làm cho việc get data trở nên phức tạp, nhất là khi hệ thống noti nó có liên quan đến nhiều loại object, ví dụ nó là tên người, tên group, tên page,... Chi phí khi read này sẽ lớn trừ khi bạn tạo dc 1 hệ thống tra cứu global ID key-value cực nhanh. Cái số 2 thì sẽ hy sinh performance khi write, nhưng việc write thay đổi sẽ xảy ra ít hơn read nên mình chấp nhận. Thực tế thì hệ thống noti mình làm đang dùng cái số 2 này. Việc get data ra sẽ rất nhanh
♥️♥️♥️♥️Bài viết khá hại não để hiểu. Rất cảm ơn bạn để chia sẻ. Tôi ra được 1 số solution cho vấn đề hiện tại từ bài viết này ♥️
Bác cho e hỏi tí về lỗi này đc k ạ . E chạy portable trên selenium thì nó bị lỗi k có điều khiển đc , mặc dù webdriver với portable version giống nhau , selenium bản 4.11 !!!
@tuelam0810 b có thể nói rõ hơn không, mình vẫn chưa hiểu ý bạn.
@monmen Với kinh nghiệm của Minh thì hệ thống thực tế chi phí 2 option sau cái nào lớn hơn nhỉ. Mình chưa có hệ thống thực tế, giờ mới đang xây dựng:
Theo tôi thì chi phí này còn phụ thuộc vào dữ liệu thực tế, hành vi nghiệp vụ sản phẩm và DB sử dụng. Không biết tôi nghĩ thế ổn không.
muốn deactive gameObject mình lấy ra thì chỉ cần .SetActive(false) anh nhỉ
Khi người dùng đổi tên (là action xảy ra ít) thì sẽ phải update lại những cái notification cũ có xuất hiện tên của người dùng. Nên mình đã thêm 1 field nữa có đánh index để tiện lookup và update khi data có thay đổi
🤚Bài viết hay quá ạ 🤚
@zeros bạn chọn lại tham số nhé
it's so amazing!
Bài viết rất thực tế và hữu ích. Cảm ơn bạn nhiều. Tuy nhiên, mình gặp vấn đề trong việc Người dùng đổi tên. Thì câu "Monmen đã bình luận vào bài viết của Viblo" vẫn phải đổi Nội dung Text hiển thị cho người dùng thành "MonmenABC đã bình luận vào bài viết của Viblo" chẳng hạn, cũng không hoàn toàn là giống trong DB. Nhưng tôi nghĩ là chấp nhận được.
Series này hay quá, rất hóng phần 4
bạn biết tại sao mình bị thế này ko ạ
Bài tiếp theo xem ở đâu bác