Saya sangat menyukai alat ini dalam hal tingkat konkurensi yang dapat ditangani.
Erlang / OTP terlihat seperti solusi yang jauh lebih stabil tetapi membutuhkan lebih banyak pembelajaran dan banyak menyelami paradigma bahasa fungsional. Dan sepertinya Erlang / OTP membuatnya jauh lebih baik dalam hal CPU multi-core (perbaiki saya jika saya salah).
Tapi mana yang harus saya pilih? Mana yang lebih baik dalam perspektif jangka pendek dan panjang?
Tujuan saya adalah mempelajari alat yang membuat penskalaan proyek Web saya di bawah beban tinggi lebih mudah daripada bahasa tradisional.
concurrency
erlang
multicore
node.js
pengguna80805
sumber
sumber
Jawaban:
Saya akan mencoba Erlang. Meskipun ini akan menjadi kurva belajar yang lebih curam, Anda akan mendapatkan lebih banyak darinya karena Anda akan mempelajari bahasa pemrograman fungsional. Selain itu, karena Erlang secara khusus dirancang untuk membuat sistem yang andal dan sangat serentak, Anda akan belajar banyak tentang cara membuat layanan yang sangat skalabel pada saat yang bersamaan.
sumber
Saya tidak dapat berbicara untuk Erlang, tetapi beberapa hal yang belum disebutkan tentang node:
Lihat video di blog yahoo oleh Ryan Dahl, orang yang sebenarnya menulis node. Saya pikir itu akan membantu memberi Anda ide yang lebih baik di mana node berada, dan ke mana arahnya.
Perlu diingat bahwa node masih dalam tahap pengembangan akhir, dan telah mengalami beberapa perubahan — perubahan yang telah merusak kode sebelumnya. Namun, seharusnya itu pada titik di mana Anda dapat mengharapkan API untuk tidak berubah terlalu banyak. Jadi jika Anda mencari sesuatu yang menyenangkan, saya akan mengatakan node adalah pilihan yang bagus.
sumber
Saya seorang programmer Erlang lama, dan pertanyaan ini mendorong saya untuk melihat node.js. Ini terlihat sangat bagus.
Tampaknya Anda perlu menelurkan banyak proses untuk memanfaatkan banyak inti. Saya tidak dapat melihat apa pun tentang pengaturan afinitas prosesor. Anda dapat menggunakan set tugas di linux, tetapi mungkin harus diparameterisasi dan diatur dalam program.
Saya juga memperhatikan bahwa dukungan platform mungkin sedikit lebih lemah. Secara khusus, sepertinya Anda perlu menjalankan Cygwin untuk dukungan Windows.
Terlihat bagus.
Sunting
Node.js sekarang memiliki dukungan asli untuk Windows.
sumber
Saya melihat dua alternatif yang sama dengan Anda, gotts, untuk banyak proyek.
Sejauh ini, pisau cukur terbaik yang saya temukan untuk memutuskan di antara mereka untuk proyek tertentu adalah apakah saya perlu menggunakan Javascript. Satu sistem yang ada yang ingin saya migrasikan sudah ditulis dalam Javascript, jadi versi berikutnya kemungkinan besar dilakukan di node.js. Proyek lain akan dilakukan di beberapa kerangka web Erlang karena tidak ada basis kode yang akan dimigrasi.
Pertimbangan lain adalah bahwa Erlang menskalakan jauh melampaui hanya beberapa inti, itu dapat menskalakan ke seluruh pusat data. Saya tidak melihat mekanisme bawaan di node.js yang memungkinkan saya mengirim pesan proses JS lain tanpa peduli mesin mana yang aktif, tetapi itu dibangun langsung ke Erlang di level terendah. Jika masalah Anda tidak cukup besar untuk membutuhkan banyak mesin atau jika tidak memerlukan banyak proses kerja sama, keuntungan ini sepertinya tidak menjadi masalah, jadi Anda harus mengabaikannya.
Erlang memang kolam yang dalam untuk menyelam. Saya sarankan untuk menulis program fungsional mandiri terlebih dahulu sebelum Anda mulai membuat aplikasi web. Langkah pertama yang lebih mudah, karena Anda merasa nyaman dengan Javascript, adalah mencoba pemrograman JS dengan gaya yang lebih fungsional. Jika Anda menggunakan jQuery atau Prototype, Anda telah memulai jalur ini. Cobalah beralih antara pemrograman fungsional murni di Erlang atau salah satu kerabatnya (Haskell, F #, Scala ...) dan JS fungsional.
Setelah Anda merasa nyaman dengan pemrograman fungsional, carilah salah satu dari sekian banyak kerangka kerja web Erlang; Anda mungkin sebaiknya tidak menulis aplikasi Anda langsung ke sesuatu yang levelnya rendah seperti
inets
pada tahap akhir ini. Lihatlah sesuatu seperti Nitrogen , misalnya.sumber
Sementara saya pribadi memilih Erlang, saya akui bahwa saya sedikit bias terhadap JavaScript. Saran saya adalah Anda mengevaluasi beberapa poin:
Erlang memiliki konkurensi yang benar-benar disetel & sistem terdistribusi paralel transparan jaringan. Bergantung pada apa sebenarnya proyeknya, ketersediaan implementasi yang matang dari sistem semacam itu mungkin lebih penting daripada masalah apa pun terkait pembelajaran bahasa baru. Ada juga dua bahasa lain yang bekerja pada VM Erlang yang dapat Anda gunakan, Reia mirip Ruby / Python dan Erlang Beraroma Lisp .
Namun pilihan lain adalah menggunakan keduanya, terutama dengan Erlang yang digunakan sebagai semacam "hub". Saya tidak yakin apakah Node.js memiliki sistem Antarmuka Fungsi Asing, tetapi jika demikian, Erlang memiliki pustaka C untuk proses eksternal untuk berinteraksi dengan sistem seperti proses Erlang lainnya.
sumber
Sepertinya Erlang berkinerja lebih baik untuk penyebaran di server yang relatif rendah (512MB 4-core 2.4GHz AMD VM). Ini dari pengalaman SyncPad dalam membandingkan implementasi Erlang vs Node.js dari aplikasi server papan tulis virtual mereka.
sumber
Ada satu bahasa lagi di VM yang sama yaitu erlang -> Elixir
Ini alternatif yang sangat menarik untuk Erlang, lihat yang ini.
Juga memiliki kerangka web yang berkembang pesat berdasarkan itu-> Kerangka Phoenix
sumber
whatsapp tidak akan pernah bisa mencapai tingkat skalabilitas dan keandalan tanpa erlang https://www.youtube.com/watch?v=c12cYAUTXXs
sumber
Saya lebih memilih Erlang daripada Node. Jika Anda menginginkan konkurensi, Node dapat diganti dengan Erlang atau Golang karena prosesnya yang ringan.
Erlang tidak mudah dipelajari sehingga membutuhkan banyak usaha tetapi komunitasnya aktif sehingga bisa mendapatkan bantuan dari itu, ini hanya alasan mengapa orang lebih memilih Node.
sumber