Saya ingin tahu daftar aplikasi / situs web / solusi paling umum di mana Erlang digunakan, berhasil atau tidak .
Menjelaskan mengapa ini digunakan dalam solusi spesifik dan bukan bahasa pemrograman lain akan sangat dihargai juga.
Daftar studi kasus BAD Erlang (kasus di mana Erlang disalahgunakan) itu akan menarik, juga.
erlang
case-study
Roberto Aloi
sumber
sumber
Jawaban:
Dari Programming Erlang :
alt teks http://bks8.books.google.com/books?id=Qr_WuvfTSpEC&printsec=frontcover&img=1&zoom=5&sig=ACfU3U2F4YY4KqO0vCuZ4WEZjdE2yFFvvgg
Banyak perusahaan menggunakan Erlang dalam sistem produksinya:
• Amazon menggunakan Erlang untuk mengimplementasikan SimpleDB, menyediakan layanan basis data sebagai bagian dari Amazon Elastic Compute Cloud (EC2).
• Yahoo! menggunakannya dalam layanan bookmark sosialnya, Delicious, yang memiliki lebih dari 5 juta pengguna dan 150 juta URL yang ditandai.
• Facebook menggunakan Erlang untuk memberi daya pada backend layanan obrolannya, menangani lebih dari 100 juta pengguna aktif.
• WhatsApp menggunakan Erlang untuk menjalankan server pengiriman pesan, mencapai hingga 2 juta pengguna yang terhubung per server.
• T-Mobile menggunakan Erlang dalam sistem SMS dan otentikasi.
• Motorola menggunakan Erlang dalam produk pemrosesan panggilan di industri keamanan publik.
• Ericsson menggunakan Erlang di simpul pendukungnya, yang digunakan dalam jaringan seluler GPRS dan 3G di seluruh dunia.
Aplikasi Erlang open source paling populer meliputi:
• Pemodel subdivisi 3D , Wings 3D , digunakan untuk memodelkan dan tekstur jerat poligon.
• Sistem Ejabberd , yang menyediakan server aplikasi perpesanan instan (IM) berbasis Perpanjangan Perpesanan dan Kehadiran (XMPP).
• Basis data berorientasi dokumen “skema-kurang” CouchDB , memberikan skalabilitas di seluruh kluster multicore dan multiserver.
• Perpustakaan MochiWeb yang menyediakan dukungan untuk membangun server HTTP yang ringan. Ini digunakan untuk menyalakan layanan seperti MochiBot dan MochiAds, yang menyajikan konten yang dihasilkan secara dinamis kepada jutaan pemirsa setiap hari.
• RabbitMQ , implementasi protokol pengiriman AMQP. AMQP adalah standar yang muncul untuk perpesanan perusahaan berkinerja tinggi.
sumber
ejabberd adalah salah satu aplikasi erlang yang paling dikenal dan yang saya pelajari dengan erlang.
Saya pikir itu adalah salah satu proyek yang paling menarik untuk belajar erlang karena itu benar-benar membangun kekuatan erlang. (Namun beberapa orang akan berpendapat bahwa itu bukan OTP, tapi jangan khawatir masih ada harta karun kode hebat di dalam ...)
Mengapa
Server XMPP (seperti ejabberd) dapat dilihat sebagai router tingkat tinggi, merutekan pesan antara pengguna akhir. Tentu saja ada fitur lain, tetapi ini adalah aspek terpenting dari server pengiriman pesan instan. Itu harus merutekan banyak pesan secara bersamaan, dan menangani banyak koneksi TCP / IP.
Jadi kami memiliki 2 fitur:
Ini adalah contoh di mana erlang bersinar.
menangani banyak koneksi
Sangat mudah untuk membangun server TCP / IP scalable non-blocking dengan erlang. Bahkan, itu dirancang untuk menyelesaikan masalah ini. Dan mengingat itu dapat menelurkan ratusan ribu proses (dan bukan utas , ini adalah pendekatan berbagi-apa-apa, yang lebih sederhana untuk dirancang), ejabberd dirancang sebagai serangkaian proses erlang (yang dapat didistribusikan melalui beberapa server):
Semuanya bertukar pesan.
pesan rute diberi beberapa aspek pesan
Fitur lain yang sangat dicintai dari erlang adalah pencocokan pola . Ini digunakan di seluruh bahasa.
Misalnya, dalam hal berikut:
Itu 5 versi
access
fungsi yang berbeda. Erlang akan memilih versi yang paling tepat mengingat argumen yang diterima. (Config
adalah struktur tipe#config
yang memilikitype
atribut).Itu artinya sangat mudah dan jauh lebih jelas daripada merantai
if/else
atauswitch/case
membuat aturan bisnis.Untuk menyelesaikan
Menulis server scalable, itulah inti dari erlang. Semuanya dirancang agar mudah. Pada dua fitur sebelumnya, saya akan menambahkan:
mnesia
, basis data relasional terdistribusi (termasuk dalam basis distribusi)mochiweb
, di mana sebagian besar server http erlang dibangunejabberd
,couchdb
tetapi jugawebmachine
,riak
dan banyak perpustakaan yang sangat mudah untuk ditanamkan)Lebih sedikit LOC
Ada juga artikel ini dari Richard Jones. Dia menulis ulang aplikasi dari C ++ ke erlang: 75% lebih sedikit baris di erlang.
sumber
Daftar aplikasi paling umum untuk Erlang telah dibahas (CouchDb, ejabberd, RabbitMQ dll) tetapi saya ingin berkontribusi sebagai berikut.
Alasan mengapa digunakan dalam aplikasi ini berasal dari kekuatan inti Erlang: mengelola ketersediaan aplikasi .
Erlang dibangun dari bawah ke atas untuk lingkungan telco yang mensyaratkan bahwa sistem memenuhi setidaknya 5x9 ketersediaan (99,999% up-time tahunan). Angka ini tidak meninggalkan banyak ruang untuk downtime selama setahun! Untuk alasan ini terutama, Erlang dilengkapi dengan fitur-fitur berikut (tidak lengkap):
Skalabilitas horisontal (kemampuan untuk mendistribusikan pekerjaan melintasi batas alat berat dengan mudah melalui komunikasi intra & antar alat berat yang mulus). Basis data bawaan (Mnesia) juga didistribusikan secara alami.
Skalabilitas vertikal (kemampuan untuk mendistribusikan pekerjaan di seluruh sumber daya pemrosesan pada mesin yang sama): SMP ditangani secara asli.
Code Hot-Swapping : kemampuan untuk memperbarui / meningkatkan kode secara langsung selama operasi
Asynchronous : dunia nyata adalah async sehingga Erlang dibangun untuk menjelaskan sifat dasar ini. Satu fitur yang berkontribusi pada persyaratan ini: Proses "bebas" Erlang (> 32000 dapat berjalan secara bersamaan).
Pengawasan : banyak strategi berbeda untuk pengawasan proses dengan strategi restart, ambang batas dll. Membantu pemulihan dari kasus sudut / overloading lebih mudah sambil tetap mempertahankan jejak masalah untuk pemecahan masalah nanti, analisis post-mortem dll.
Manajemen Sumber Daya : strategi penjadwalan, pemantauan sumber daya dll. Perhatikan bahwa penjadwal proses default beroperasi dengan penskalaan O (1).
Live debugging : kemampuan untuk "login" ke live node di akan membantu kegiatan pemecahan masalah. Debugging dapat dilakukan secara langsung dengan akses penuh ke kondisi proses apa pun yang berjalan. Juga alat pelaporan kesalahan bawaan sangat berguna (tapi terkadang agak canggung untuk digunakan).
Tentu saja saya dapat berbicara tentang akar fungsionalnya tetapi aspek ini agak ortogonal dengan tujuan utama (ketersediaan tinggi). Komponen utama dari sifat fungsional yang berkontribusi murah hati pada sasaran adalah IMO: "tidak berbagi apa pun". Karakteristik ini membantu mengandung "efek samping" dan mengurangi kebutuhan akan mekanisme sinkronisasi yang mahal.
Saya kira semua karakteristik ini membantu memperluas kasus untuk menggunakan Erlang dalam aplikasi bisnis penting.
Satu hal yang tidak benar-benar pandai Erlang : memproses blok data yang besar.
sumber
Erlang berasal dari Ericsson, dan digunakan dalam beberapa sistem telekomunikasi mereka.
Di luar telekomunikasi, CouchDb (database berorientasi dokumen) mungkin merupakan aplikasi Erlang paling terkenal sejauh ini.
Kenapa Erlang? Dari ikhtisar (layak dibaca secara lengkap):
sumber
Kami membangun pertukaran taruhan (alias pasar prediksi) menggunakan Erlang. Kami memilih Erlang daripada beberapa bahasa keuangan yang lebih tradisional (C ++, Java dll) karena konkurensi bawaan. Pasar berfungsi sangat mirip dengan pertukaran telepon. CTO kami memberi ceramah tentang penggunaan Erlang kami pada pembicaraan CTO .
Kami juga menggunakan CouchDB dan RabbitMQ sebagai bagian dari tumpukan kami.
sumber
Saya menemukan ini sedang dalam proses menulis laporan: Erlang di Acoustic Ray Tracing .
Ini adalah laporan pengalaman tentang upaya kelompok riset untuk menggunakan Erlang untuk Acoustic Ray Tracing. Mereka menemukan bahwa walaupun lebih mudah untuk menulis program, kurang buggy, dll. Ini mengalami penurunan lebih buruk, dan melakukan 10x lebih lambat daripada program C yang sebanding. Jadi satu tempat di mana itu mungkin tidak cocok adalah skenario intensif CPU.
Namun perlu dicatat, bahwa orang-orang menulis makalah berada dalam tahap pertama belajar Erlang, dan mungkin tidak tahu prosedur pengembangan yang tepat untuk CPU Erlang intensif.
sumber
Rupanya, Yahoo menggunakan Erlang untuk membuat sesuatu yang disebutnya Harvester. Artikel tentang itu di sini: http://www.ddj.com/architect/220600332
sumber
Apa gunanya erlang?
http://beebole.com/en/blog/erlang/why-erlang/
http://www.aquabu.com/2008/2/15/erlang-pragmatic-studio-day-3-notes
http://www.reddit.com/r/programming/comments/9q0lr/erlang_and_highfrequency_trading/ (jawaban jerf)
Sangat penting untuk menyadari bahwa 4 bagian Erlang: bahasa itu sendiri, standar VM (BEAM, hipe) libs (plus modul pada github, CEAN, dll.) Dan lingkungan pengembangan terus diperbarui / diperluas / ditingkatkan. Sebagai contoh, saya ingat membaca bahwa kinerja floating point meningkat ketika penulis Wings3d menyadari itu perlu ditingkatkan (saya tidak dapat menemukan sumber untuk ini). Dan orang ini baru saja menulis tentang itu:
http://marian-dan.com/wordpress/?p=324
Beberapa tahun yang lalu, publisitas Wide Finder Tim Bray dan semua orang mulai melakukan kerangka kerja aplikasi web dan server HTTP memimpin (setidaknya sebagian) untuk meningkatkan penanganan regex dan biner. Dan ada semua pekerjaan yang mengintegrasikan HiPE dan SMP, proyek dialyzer, beberapa pengujian unit dan membangun libs bermunculan, ..
Jadi sweet spot-nya berkembang, Yang sulit adalah bahwa dokumen resmi tidak bisa mengikuti dengan baik, dan milis dan volume blogosphere erlang tumbuh dengan cepat
sumber
Kami menggunakan Erlang untuk memberikan kekuatan otot back-end untuk berbasis browser benar-benar real-time multi-player permainan kami Pixza . Kami tidak menggunakan Flash atau plugin pihak ketiga lainnya, meskipun gim ini multi-pemain waktu-nyata. Kami menggunakan teknik JS dan COMET murni sebagai gantinya. Dan Erlang mendukung "ketepatan waktu yang sebenarnya" dari Pixza.
sumber
Saya bekerja untuk wooga, sebuah perusahaan game sosial dan kami menggunakan Erlang untuk beberapa backend game kami (pada dasarnya http apis untuk jutaan pengguna harian) dan layanan tambahan seperti penyedia pemberitahuan push, pembayaran dll.
Saya pikir itu benar-benar bersinar dalam tugas-tugas yang berhubungan dengan jaringan dan itu membuatnya agak lurus ke depan untuk struktur dan mengimplementasikan layanan jaringan yang sederhana dan kompleks di dalamnya. Distribusi, toleransi kesalahan dan kinerja mudah dicapai karena Erlang telah memiliki beberapa bahan utama yang terpasang di dalamnya dan telah digunakan untuk waktu yang lama dalam infrastruktur produksi yang kritis. Jadi tidak seperti "hal teknologi pinggul baru 0,0.2 alpha".
Saya tahu bahwa perusahaan game lain juga menggunakan Erlang. Anda harus dapat menemukan presentasi di slideshare tentang hal itu.
sumber
Erlang menarik kekuatannya dari menjadi bahasa fungsional tanpa memori bersama. Karenanya IMO, Erlang tidak akan cocok untuk aplikasi yang membutuhkan manipulasi memori di tempat. Pengeditan gambar misalnya.
sumber