Jadual Kandungan[Sembunyi][Tunjukkan]
WhatsApp ialah program pemesejan sosial yang membolehkan pengguna bertukar-tukar mesej antara satu sama lain.
Pernahkah anda memikirkan bagaimana WhatsApp berfungsi?
Apakah konsep yang menyokong penciptaan dan operasinya?
Artikel ini akan membincangkan asas-asas WhatsApp reka bentuk sistem.
Kami juga akan melalui seni bina umum WhatsApp, yang boleh digunakan untuk membina sebarang jenis perisian sembang.
Jadi, tanpa berlengah lagi, mari kita lihat reka bentuk sistem WhatsApp!
1. Keperluan Utama
WhatsApp ialah teknologi berskala tinggi yang digunakan oleh ramai orang di seluruh dunia. Akibatnya, ia harus direka bentuk dengan baik agar sentiasa boleh dipercayai dan berfungsi.
Akibatnya, menentukan keperluan kritikal sistem adalah kritikal.
Ini adalah keperluan minimum untuk messenger WhatsApp:
- Mampu memudahkan interaksi satu-satu.
- Mesej pengakuan dan terakhir dilihat kedua-duanya mungkin (Hantar, Dihantar dan Baca).
- Benarkan penyulitan hujung ke hujung dan sokongan media (imej/video).
Mari kita ketahui berapa kapasiti yang diperlukan oleh perkhidmatan yang diperlukan.
2. Menganggar Kapasiti
Objektif kami adalah untuk mencipta platform yang mampu mengendalikan sejumlah besar trafik. Andaikan 10 bilion SMS dihantar setiap hari. Kami mempunyai:
- Setiap hari, 10 bilion SMS dihantar oleh satu bilion orang.
- Pada trafik puncak (sesaat), 700,000 orang aktif (purata 6X)
- Semasa penggunaan puncak, 40 juta mesej dihantar sesaat.
- Purata panjang mesej ialah 160 aksara: 10B * 160 = 1.6TB data dijana setiap hari.
- Ambil sepuluh tahun perkhidmatan sebagai contoh: 10 * 1.6B * 365 PB
- Keseluruhan aplikasi akan terdiri daripada perkhidmatan mikro, setiap satunya akan melaksanakan tugas khusus. Anggapkan menghantar mesej mengambil masa 20 milisaat dan terdapat 100 sambungan serentak bagi setiap pelayan. Akibatnya, jangkaan bilangan pelayan sembang yang diperlukan = (mesej sembang sesaat Latensi)/ sambungan serentak setiap pelayan = 40M * 20ms / 100 = 8000 pelayan.
3. Seni bina peringkat tinggi
Sistem ini dibina atas dua perkhidmatan teras. Perkhidmatan sembang dan perkhidmatan sementara, contohnya. Perkhidmatan sembang mengendalikan semua trafik yang dijana oleh mesej dalam talian pengguna. Pada masa yang sama, perkhidmatan sementara mengendalikan trafik apabila pengguna berada di luar talian.
Jika pengguna dalam talian, perkhidmatan sembang bertanggungjawab untuk menyampaikan mesej.
Ia akan mengesahkan sama ada penerima mesej berada dalam talian atau tidak; jika penerima berada dalam talian, perkhidmatan ini akan menghantar mesej serta-merta; jika penerima tidak dalam talian, perkhidmatan sementara akan menghantar mesej kepada mereka apabila mereka kembali dalam talian.
Perkhidmatan sementara menyimpan kawasan storan yang berasingan untuk menyimpan data yang boleh diakses buat sementara waktu sehingga pengguna luar talian menyambung semula.
Mereka bentuk API Tahap Tinggi
Perkhidmatan ini mempunyai dua API berfungsi peringkat tinggi untuk menghantar dan membaca mesej. Sistem ini boleh dilaksanakan menggunakan seni bina REST.
Parameter untuk menghantar mesej
API ini akan digunakan untuk menghantar mesej antara dua pengguna.
Parameter perbualan
API ini digunakan untuk memaparkan sembang berulir. Anggap ini perkara pertama yang anda lihat apabila anda membuka WhatsApp. Kami hanya ingin mendapatkan beberapa mesej untuk seorang pengguna dalam satu pertanyaan API. Untuk mengendalikan ini, parameter kiraan mengimbangi dan mesej diperlukan.
Apakah fungsi ciri seperti terakhir dilihat, tanda tunggal dan tanda dua?
Peranan penting dalam penggunaan perkhidmatan ini ialah perkhidmatan pengakuan. Ciri ini dibangunkan kerana perkhidmatan ini terus menjana dan mengesahkan jawapan pengakuan.
- Tandakan tunggal: Apabila mesej daripada Pengguna A sampai kepada Pengguna B, pelayan menghantar satu tanda tanda yang mengakui bahawa mesej telah dihantar.
- Tandakan dua kali: Selepas mesej pelayan dihantar kepada Pengguna B melalui sambungan yang betul, Pengguna B akan mengakui penerimaan mesej kepada pelayan. Pelayan kemudiannya akan memberikan Pengguna A dengan satu lagi pengakuan. Akibatnya, tanda pendua akan muncul.
- Tanda biru: Pengguna B akan menghantar satu lagi pengakuan kepada pelayan selepas menyemak mesej. Pelayan kemudiannya akan menghantar kepada Pengguna A mesej pengakuan tambahan. Tanda biru akan muncul pada skrin Pengguna A selepas itu.
- Kali terakhir dilihat: Mekanisme degupan jantung bertanggungjawab sepenuhnya untuk ciri terakhir dilihat. Setiap 5 saat, degupan jantung dihantar ke pelayan, yang menjejaki status terakhir dilihat setiap pengguna dalam jadual yang boleh diakses dengan mudah oleh mana-mana pengguna lain.
4. Mereka bentuk ciri utama
Interaksi peribadi
Ini adalah bahagian penting dalam perkhidmatan Sembang. Pengguna hanya boleh menghantar mesej kepada pengguna lain menggunakan perkhidmatan ini. Mari kita lihat bagaimana ini berfungsi:
Anggap Jay mahu berkomunikasi dengan Aayush. Jay dipautkan ke pelayan sembang yang dengannya dia menerima mesej itu. Jay menerima pengesahan daripada pelayan sembang bahawa mesej itu telah dihantar. Pelayan sembang kini meminta maklumat daripada stor data tentang pelayan sembang yang Aayush disambungkan. Pelayan sembang Jay kini menghantar mesej ke pelayan sembang Aayush, dan Aayush menerima mesej melalui mekanisme tolak. Aayush kini menghantar pengakuan kepada pelayan sembang Jay, yang memberitahu Jay bahawa mesej itu telah dihantar. Jika Aayush membaca semula mesej itu, pengakuan baru bahawa mesej itu telah dibaca telah dihantar kepada Jay.
Status Aktiviti Pengguna
Kali terakhir seseorang itu aktif ialah ciri biasa penghantar segera.
Sistem untuk mengekalkan sambungan antara klien dan pelayan digambarkan dalam rajah ini. Soket web digunakan untuk mewujudkan sambungan dua arah antara pelayan dan klien. Sambungan ini menghantar degupan jantung, yang digunakan untuk memantau status aktiviti pengguna.
Privasi Hujung ke Hujung
Penyulitan hujung ke hujung ialah ciri utama yang memastikan bahawa hanya pengguna yang bercakap boleh membaca komunikasi. Kunci awam dikongsi di kalangan semua pengguna yang terlibat dalam komunikasi dan penting untuk mengekalkan penyulitan Hujung-ke-Hujung. Anggapkan bahawa terdapat dua pengguna pada saluran, Jay dan Aayush, yang berkomunikasi antara satu sama lain.
Jay mempunyai kunci awam Aayush, dan Aayush mempunyai kunci awam Jay serta kunci peribadi bukan kongsi mereka. Akibatnya, apabila Jay menghantar mesej, dia menyulitkannya dengan kunci awam Aayush, yang hanya boleh dinyahkodkan dengan kunci peribadi Aayush.
Begitu juga, Jay hanya akan dapat menyahkod komunikasi Aayush. Akibatnya, hanya Jay dan Aaysuh akan dapat melihat komunikasi antara satu sama lain, dan pelayan hanya akan berfungsi sebagai pintu masuk dalam keseluruhan proses.
5. Kesesakan
Setiap sistem terdedah kepada kerosakan. Untuk mengurus jumlah trafik yang begitu besar, perkhidmatan mesti kekal beroperasi dan bertolak ansur pada setiap masa untuk mengelakkan kesesakan. Oleh kerana perkhidmatan kami bergantung sepenuhnya pada pelayan Chat dan Transient, kami mesti menyelesaikan semua isu yang timbul daripada operasi mereka.
Kegagalan Pelayan Sembang: Ini adalah nadi sistem kami. Apabila pengguna berada dalam talian, ia bertanggungjawab untuk mengurus dan menghantar mesej. Akibatnya, sistem ini mengekalkan pautan dengan penggunanya.
Akibatnya, jika perkhidmatan ini gagal, keseluruhan seni bina akan menderita. Terdapat dua pendekatan untuk menguruskan kegagalan pelayan sembang. Satu kaedah adalah untuk mengalihkan sambungan TCP ke pelayan lain, manakala satu lagi adalah untuk membenarkan pengguna memulakan sambungan secara automatik sekiranya berlaku kehilangan sambungan.
Kegagalan Penyimpanan Sementara: Komponen lain yang terdedah kepada kegagalan yang akhirnya boleh merosakkan keseluruhan perkhidmatan ialah storan sementara. Mesej dalam perjalanan kepada pengguna luar talian hilang jika perkhidmatan ini gagal.
Kami boleh menghalang kehilangan mesej dengan mereplikasi storan sementara setiap pengguna. Akibatnya, replika boleh digunakan untuk memproses fungsi apabila pengguna kembali dalam talian. Jika pelayan asal boleh diakses, kedua-dua kejadian asal dan replika storan sementara pengguna digabungkan menjadi satu kedai.
6. Teknik pengoptimuman
Latency: Untuk menyampaikan pengalaman pelanggan yang lancar dan dipertingkatkan, perkhidmatan utusan mestilah dalam masa nyata. Akibatnya, kependaman mesti dikurangkan dengan menyimpan cache sebahagian daripada data yang sering diakses. Kami boleh cache status aktiviti pengguna dan perbualan terbaru dalam ingatan menggunakan cache yang diedarkan seperti Redis.
Ketersediaan: Kami memerlukan perkhidmatan kami tersedia pada kebanyakan masa. Sistem kami mestilah bertolak ansur dengan kesalahan, oleh itu kami boleh menyimpan beberapa salinan mesej sementara supaya sebarang mesej yang hilang boleh dipulihkan dengan cepat daripada penduanya. Akibatnya, ketersediaan sistem tidak boleh terjejas.
Kesimpulan
Sistem kami kini hanya menyokong beberapa keupayaan, tetapi kami boleh mengembangkannya dengan mudah untuk menambah sembang kumpulan untuk mengedarkan mesej kepada beberapa individu. Anda juga boleh menyediakan keupayaan panggilan video dan telefon. Sistem ini juga boleh dibangunkan supaya pengguna boleh menerbitkan kemas kini status atau naratif dan membaca antara satu sama lain.
Saya bekerja keras untuk memberikan anda gambaran keseluruhan peringkat tinggi tentang reka bentuk sistem WhatsApp. Saya harap anda menikmatinya dan akan menggunakannya dengan baik.
Sila tinggalkan balasan anda