Lotou adalah kerangka kerja ringan untuk server game yang diimplementasikan di Golang. Ini memanfaatkan komunikasi antara node dengan mengabstraksi pertukaran pesan sehingga multi-node dan multi-layanan dapat dengan mudah dicapai.
Lotou terinspirasi oleh kerangka kerja Skynet yang ditulis oleh Cloudwu. Dalam kerangka kerja ini, semua layanan berkomunikasi satu sama lain dengan pesan. Fungsi yang disediakan oleh layanan tidak diekspos oleh panggilan API. Dalam versi saat ini, Module Core bertanggung jawab untuk mengarahkan pesan, dan setiap layanan memiliki pesan sendiri untuk menerima dan mengirim.
Inti memasok komunikasi antara layanan. Semua layanan terdaftar ke core , dan mengirim pesan ke orang lain dengan Core.Send.
binary mengkodekan data ke dalam aliran biner untuk komunikasi antara server dan klien. Penggunaan konvensi pengkodean ini agak seperti penggunaan JSON Marshalling.
GOB (bukan GOB di Lib Golang sendiri) GOB Encoding bertujuan untuk mempertahankan komunikasi node. Komunikasi layanan dapat berupa trans-node, sehingga pesan pengkodean ke dalam aliran biner diperlukan. Pergantian pesan di dalam node tidak perlu dikodekan untuk kinerja yang lebih baik.
Semua tipe primitif di Golang dapat dikodekan. Kombinasi parameter apa pun dengan mudah didukung selama pengirim dan penerima mematuhi tanda tangan yang sama
Struct yang ditentukan sendiri juga dapat didukung, tetapi struct harus didaftarkan secara lanjutan. Jika node yang berbeda perlu menggunakan struct yang sama, pendaftaran struktur tersebut harus didaftarkan dalam urutan yang tetap dan unik.
Saat ini, pertunjukan pengkodean untuk irisan dan peta tidak begitu baik. Untuk mengkodekan jenis []interface{} , masing -masing elemen yang dikodekan secara terpisah. Agar lebih spesifik, ketik info untuk setiap elemen semuanya marshalled. Jadi, jika ada elemen dari satu jenis yang sama, ketik info secara marshalled secara berlebihan.
Marshalling dari Gob (Lotou) dicapai dengan Reflect.
Modul log adalah untuk mencetak informasi debug dan kesalahan. Saat ini, log adalah mode yang disinkronkan, jika kita memiliki terlalu banyak log yang perlu diajukan, itu dapat memblokir logika utama. (Ini mungkin diubah menjadi mode asinkronisasi suatu hari nanti)
Jaringan mengimplementasikan rute antara node di TCP. Peran server dan client bekerja sebagai apa namanya. Detak jantung belum diimplementasikan. client membuat koneksi ke server pada pertama kalinya mengirim pesan.
Server multi-node didasarkan pada Topoloy. Ada dua jenis node di Lotou dan berbagai jenis node dikeluarkan ke jaringan yang sama. Di dalam jaringan tertentu hanya ada satu node utama dan node budak serveral. Layanan dapat dijalankan dalam semua jenis node dan ada dua jenis layanan: layanan lokal dan layanan global. Layanan lokal ada dalam simpul yang sama yang diketahui satu sama lain dengan nama. Layanan global adalah yang dijalankan oleh node yang berbeda dan mereka terpapar semua layanan dari semua node dengan terdaftar untuk menguasai.
Jika Anda tertarik untuk mengembangkan Lotou, jangan ragu untuk menghubungi saya melalui
QQ 157621271
Wechat id daijun_1234.
QQ Group juga tersedia 362112175. (Isi pesan verifikasi dengan Lotou )
Twitter @sydnash1
Nasihat dan Geeks selalu disambut.
Gunakan etcd sebagai Layanan Discover.
Gunakan nats sebagai Diliver Pesan Node.