Saya ingin tahu tentang arsitektur yang berbeda real-time aplikasi messenger. Mereka menggunakan protokol generik/arsitektur?
WhatsApp Arsitektur Facebook Dibeli Untuk $19 Miliar menjelaskan arsitektur yang terlibat dalam desain dari whatsapp.
Berikut ini adalah penjelasan umum dari link
WhatsApp server hampir sepenuhnya diimplementasikan dalam Erlang.
sistem Server yang melakukan backend pesan routing yang dilakukan dalam Erlang.
prestasi Besar adalah bahwa jumlah pengguna aktif dikelola dengan benar-benar server kecil tapak. Tim konsensus adalah bahwa hal itu sebagian besar karena Erlang.
- Menarik untuk dicatat Facebook Chat ditulis dalam Erlang pada tahun 2009, tetapi mereka pergi jauh dari itu karena itu sulit untuk menemukan programmer yang berkualitas.
- WhatsApp server telah dimulai dari ejabberd
- Ejabberd terkenal open source server Jabber yang ditulis dalam Erlang.
- Awalnya dipilih karena sifatnya yang terbuka, ulasan besar oleh pengembang, kemudahan memulai dan janji Erlang jangka panjang kesesuaian untuk sistem komunikasi.
- beberapa tahun berikutnya dihabiskan dengan menulis ulang dan memodifikasi beberapa bagian dari ejabberd, termasuk beralih dari XMPP untuk protokol yang dikembangkan secara internal, restrukturisasi basis kode dan mendesain ulang beberapa komponen inti, dan membuat banyak modifikasi penting untuk Erlang VM untuk mengoptimalkan kinerja server.
- Untuk menangani 50 miliar pesan per hari yang fokus pada pembuatan sistem yang handal yang bekerja. Monetisasi adalah sesuatu untuk melihat nanti, itu jauh jauh ke jalan.
- Sebuah alat ukur utama dari sistem kesehatan adalah pesan antrian panjang. Pesan antrian panjang dari semua proses pada node terus dipantau dan peringatan yang dikirim keluar jika mereka menumpuk backlog melampaui ambang batas yang telah ditetapkan. Jika satu atau lebih proses jatuh di belakang yang disiagakan di, yang memberikan pointer ke sebelah hambatan untuk menyerang.
- pesan Multimedia yang dikirim dengan meng-upload gambar, audio atau video untuk dikirim ke server HTTP dan kemudian mengirim link ke konten bersama dengan Base64 encoded thumbnail (jika berlaku).
- Beberapa kode yang biasanya mendorong setiap hari. Seringkali, hal ini beberapa kali sehari, meskipun secara umum puncak lalu lintas kali dihindari. Erlang membantu menjadi agresif dalam mendapatkan perbaikan dan fitur ke dalam produksi. Hot-loading cara update yang dapat mendorong tanpa restart atau lalu lintas pergeseran. Kesalahan biasanya dapat dibatalkan dengan sangat cepat, lagi panas-loading. Sistem cenderung jauh lebih loosely-coupled yang membuatnya sangat mudah untuk roll perubahan secara bertahap.
- protokol Apa yang digunakan dalam aplikasi Whatsapp? SSL socket ke server WhatsApp outdoor. Semua pesan yang antri di server sampai klien tersambung kembali untuk mengambil pesan. Keberhasilan pengambilan pesan dikirim kembali ke server whatsapp yang meneruskan status ini kembali ke pengirim asli (yang akan melihat itu sebagai "tanda centang" ikon di sebelah pesan). Pesan yang dihapus dari server memori segera setelah klien telah menerima pesan
- Bagaimana melakukan proses registrasi kerja secara internal di Whatsapp? WhatsApp digunakan untuk membuat username/password yang berbasis pada telepon nomor IMEI. Ini telah berubah baru-baru ini. WhatsApp sekarang menggunakan general permintaan dari aplikasi untuk mengirim unik 5 digit PIN. WhatsApp akan mengirimkan SMS yang ditunjukkan nomor telepon (ini berarti WhatsApp klien tidak lagi perlu dijalankan pada telepon yang sama). Berdasarkan nomor pin aplikasi kemudian meminta kunci unik dari WhatsApp. Kunci ini digunakan sebagai "password" untuk semua panggilan masa depan. (ini "tetap" kunci disimpan pada perangkat). Ini juga berarti bahwa mendaftarkan perangkat baru akan membatalkan kunci pada perangkat lama.
WhatsApp telah dipilih Erlang bahasa yang dibangun untuk menulis scalable aplikasi yang dirancang untuk menahan kesalahan. Erlang menggunakan abstraksi disebut Aktor model untuk itu's concurrency - http://en.wikipedia.org/wiki/Actor_(programming_language) Bukannya lebih tradisional shared memory pendekatan, aktor berkomunikasi dengan cara saling mengirimkan pesan. Aktor seperti benang yang dirancang untuk menjadi ringan. Aktor dapat pada mesin yang sama atau pada mesin yang berbeda dan pesan lewat abstraksi bekerja untuk keduanya. Implementasi sederhana dari WhatsApp bisa: Masing-masing pengguna/perangkat diwakili sebagai seorang aktor. Aktor ini bertanggung jawab untuk menangani inbox pengguna, cara mendapat serial ke disk, pesan-pesan yang dikirim pengguna dan pesan-pesan yang diterima pengguna. Let's berasumsi bahwa Alice dan Bob adalah teman-teman di WhatsApp. Jadi ada Alice aktor dan Bob aktor.
Let's jejak serangkaian pesan yang mengalir bolak-balik:
Alice memutuskan untuk pesan Bob. Alice's telepon menetapkan koneksi ke server WhatsApp dan hal ini didirikan bahwa hubungan ini pasti dari Alice's telepon. Alice sekarang mengirimkan melalui TCP pesan berikut: "Untuk Bob: Sebuah monster raksasa yang menyerang Jembatan Golden Gate". Salah satu WhatsApp front end server deserializes pesan ini dan memberikan pesan ini kepada aktor bernama Alice.
Alice aktor memutuskan untuk cerita bersambung ini dan menyimpannya dalam sebuah file yang disebut "Alice's Mengirim Pesan", yang disimpan pada replikasi file sistem untuk mencegah kehilangan data akibat tak terduga rakasa mengamuk. Alice aktor kemudian memutuskan untuk meneruskan pesan ini kepada Bob aktor lewat pesan "Msg1 dari Alice: rakasa raksasa menyerang Jembatan Golden Gate". Alice aktor dapat coba lagi dengan eksponensial back-off sampai Bob aktor mengakui menerima pesan.
Bob aktor akhirnya menerima pesan dari (2) dan memutuskan untuk menyimpan pesan ini dalam sebuah file yang disebut "Bob's Inbox". Setelah itu telah tersimpan pesan ini tahan lama Bob aktor akan mengakui menerima pesan dengan mengirimkan Alice aktor pesan itu's sendiri mengatakan "saya menerima Msg1". Alice aktor sekarang dapat menghentikannya's coba lagi usaha. Bob aktor kemudian memeriksa untuk melihat apakah Bob's telepon yang memiliki sambungan aktif ke server. Itu tidak jadi Bob aktor aliran pesan ini ke perangkat melalui TCP.
Bob melihat pesan ini dan menjawab dengan "Untuk Alice: Let's membuat robot raksasa untuk melawan mereka". Sekarang ini diterima oleh Bob aktor seperti yang diuraikan di Langkah 1. Bob aktor kemudian mengulangi Langkah 2 dan 3 untuk memastikan Alice akhirnya menerima ide yang akan menyelamatkan umat manusia.
WhatsApp benar-benar menggunakan protokol XMPP bukannya jauh lebih unggul protokol yang aku diuraikan di atas, tetapi anda mendapatkan titik.
Untuk pengetahuan saya, Ejabberd (http://www.ejabberd.im/) adalah orang tua, ini adalah XMPP server yang menyediakan cukup baik fitur open source, Whatsapp menggunakan beberapa versi modifikasi ini, facebook messaging juga menggunakan versi modifikasi ini. Beberapa aplikasi chatting seperti Samsung's ChatOn, Nimbuzz messenger semua menggunakan ejabberd yang berbasis dan Erlang solusi juga memiliki versi modifikasi ini ejabberd yang mereka klaim untuk menjadi sangat terukur dan teruji dengan baik dengan lebih banyak perbaikan kinerja dan berganti nama sebagai MongooseIM.
Ejabberd server yang memiliki sebagian besar fitur dilaksanakan bila dibandingkan dengan yang lainnya. Karena itu adalah membangun Erlang itu adalah sangat scalable horizontal.