Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Temukan kontainer di armada kontainer
Pada armada Amazon GameLift Servers kontainer, setiap instance dapat menjalankan beberapa kontainer. Misalnya, Anda dapat menjalankan beberapa replika grup kontainer server game Anda. Anda juga dapat menjalankan grup kontainer per instans yang menyediakan layanan bersama di seluruh instance.
Server penemuan kontainer memungkinkan proses server game Anda untuk menemukan wadah lain yang berjalan pada instance yang sama. Container kemudian dapat berkomunikasi satu sama lain di seluruh definisi grup kontainer melalui jaringan lokal instance.
Server penemuan adalah layanan HTTP ringan. Amazon GameLift Serversmenjalankannya secara lokal pada setiap instance armada kontainer. Layanan ini menyediakan informasi jaringan berikut untuk setiap wadah yang berjalan pada instance tersebut:
Nama wadah yang Anda tentukan dalam definisi grup kontainer.
Pengidentifikasi unik wadah.
Alamat IP lokal kontainer pada instance.
Jenis grup kontainer, baik
GAME_SERVER(replika grup kontainer server game) atauPER_INSTANCE(grup kontainer per instans).
catatan
Server penemuan kontainer hanya tersedia pada armada kontainer terkelola.
Ambil informasi jaringan kontainer
Anda dapat mengambil informasi jaringan kontainer dengan dua cara: dari proses server game dengan SDK Amazon GameLift Servers server, atau dari wadah apa pun dengan memanggil server penemuan langsung melalui HTTP.
Ambil informasi kontainer menggunakan SDK server
Jika proses server game Anda menggunakan SDK Amazon GameLift Servers server, panggil ListContainersNetworkInfo() tindakan untuk mengambil informasi jaringan kontainer. SDK server menemukan server penemuan dan membuat permintaan untuk Anda. Tindakan mengembalikan informasi jaringan untuk setiap wadah yang berjalan pada instance yang sama. Pada tipe komputasi lainnya, tindakan mengembalikan kesalahan tipe komputasi yang tidak didukung.
ListContainersNetworkInfo()tersedia dalam SDK server versi 5.5 atau yang lebih baru untuk bahasa berikut:
Tindakan ini juga tersedia di Amazon GameLift Servers plugin untuk Unreal Engine dan Unity.
Ambil informasi kontainer dengan memanggil server penemuan secara langsung
Beberapa kontainer tidak menggunakan SDK server, seperti wadah per instans. Kontainer ini memanggil server penemuan langsung melalui HTTP. Amazon GameLift Serverspra-mengatur variabel GAMELIFT_CONTAINER_DISCOVERY_SERVER_ENDPOINT_V1 lingkungan dalam wadah ini. Variabel ini menyimpan alamat server penemuan, termasuk jalur versi API, dan ditetapkan di server game dan definisi grup kontainer per instans.
Untuk mengambil informasi jaringan kontainer, kirim GET permintaan HTTP ke titik akhir ini. Contoh berikut menggunakan curl:
curl "$GAMELIFT_CONTAINER_DISCOVERY_SERVER_ENDPOINT_V1"
Server penemuan mengembalikan array JSON dengan satu entri untuk setiap wadah yang berjalan pada instance:
[ { "containerName": "game-server", "ipAddress": "172.17.0.3", "containerId": "b896159563df43736e5e93ad0547a24fa572648d55b70c70747642afca398b18", "containerGroupType": "GAME_SERVER" }, { "containerName": "per-instance", "ipAddress": "172.17.0.4", "containerId": "3c239ae037aec28bb42212ffa2b9e02524c0c4c361db9bc31dd4c5aecc0b7943", "containerGroupType": "PER_INSTANCE" } ]
Batas tarif permintaan
Server penemuan membatasi setiap wadah pada instance hingga 10 permintaan per detik. Ini membatasi permintaan yang melebihi batas ini dan mengembalikan kesalahan. Untuk tetap berada dalam batas ini, kueri server penemuan sekali saat startup. Sebagai alternatif, kueri hanya ketika Anda perlu menyegarkan tampilan instance Anda. Cache hasil di wadah Anda dan gunakan kembali nilai-nilai yang di-cache daripada menanyakan server penemuan secara berulang.
Segarkan cache Anda secara berkala agar tetap terkini. Alamat IP lokal kontainer dapat berubah jika wadah macet atau keluar (misalnya, ketika sesi permainannya berakhir).
Contoh: mengumpulkan metrik dari wadah server game
Penggunaan umum dari server penemuan adalah mengirim telemetri antar kontainer pada instance yang sama tanpa meninggalkan jaringan lokal instance. Pertimbangkan armada yang menjalankan beberapa wadah server game (GAME_SERVER) dan satu wadah per instans (PER_INSTANCE). Wadah per instans menjalankan pengumpul metrik yang dibagikan oleh semua server game di instans.
Anda dapat mengimplementasikan pengumpulan metrik dengan model push atau model tarik:
-
Push (metrik emisi) - Saat startup, setiap wadah server game memanggil
ListContainersNetworkInfo(). Wadah menemukan entri dengan tipe grupPER_INSTANCEkontainer. Kemudian membaca alamat IP lokal dari entri itu. Server game mengirimkan metriknya langsung ke kolektor per instans melalui jaringan lokal instans. -
Tarik (pengikisan metrik) - Pendekatan sebaliknya juga berfungsi. Kontainer per instans tidak menggunakan SDK server, sehingga memanggil titik akhir server penemuan secara langsung. Ini menemukan alamat IP dari semua
GAME_SERVERkontainer pada instance. Kemudian mengikis titik akhir metrik yang diekspos setiap wadah server game melalui jaringan lokal.
Dalam kedua kasus tersebut, komunikasi tetap berada di jaringan lokal instans. Setiap kontainer menanyakan server penemuan hanya sesekali daripada secara berulang.