Rumah > pembangunan bahagian belakang > Golang > Golang membina sistem pintu masuk yang ringan

Golang membina sistem pintu masuk yang ringan

PHPz
Lepaskan: 2023-03-31 10:51:17
asal
1516 orang telah melayarinya

Dengan perkembangan Internet, seni bina perkhidmatan mikro telah menjadi pilihan lebih banyak perusahaan. Dalam seni bina perkhidmatan mikro, pintu masuk adalah bahagian yang sangat diperlukan. Sebagai bahagian penting dalam seni bina perkhidmatan mikro, gerbang bertanggungjawab untuk penghalaan permintaan dan pengimbangan beban, kawalan keselamatan dan penukaran protokol, serta boleh menjalankan pengurusan bersatu dan kawalan akses perkhidmatan bahagian belakang dengan berkesan.

Pada masa ini, terdapat banyak produk gerbang yang biasa digunakan di pasaran, seperti Kong, APISIX, dll. Walau bagaimanapun, produk gerbang ini mempunyai beberapa masalah seperti kos pembelajaran yang tinggi dan konfigurasi yang kompleks. Produk ini mungkin terlebih layak untuk beberapa senario mudah.

Sebagai bahasa pengaturcaraan yang mudah dan cekap, golang memberikan permainan penuh kepada kelebihannya dalam keselarasan dan penyepaduan yang tinggi, dan boleh digunakan untuk membina sistem gerbang yang ringan. Artikel ini akan menerangkan aspek berikut:

  • Analisis keperluan
  • Pemilihan teknikal
  • Reka bentuk seni bina
  • Langkah pelaksanaan
  1. Analisis Keperluan

Secara umumnya, sistem get laluan perlu melaksanakan fungsi berikut:

  • Permintaan penghalaan dan pengimbangan beban
  • Keselamatan kawalan (seperti pengesahan antara muka dan kawalan akses, dsb.)
  • Pengelogan
  • Pemajuan antara muka dan cuba semula

Kami menggunakan bahasa golang untuk melaksanakan fungsi di atas, Pastikan kecekapan sistem pintu masuk dan penggunaan maksimum sumber.

  1. Pemilihan teknologi

Kami akan menggunakan tindanan teknologi utama berikut:

  • golang
  • Rangka kerja Gin
  • Etcd
  • Redis
  • JWT
  1. Reka bentuk seni bina

Sistem get laluan ini menggunakan "reverse proxy + ETCD +Redis" model seni bina.

Seni bina tiga peringkat:

  • Pelayar, pelanggan dan lapisan permintaan lain.
  • Lapisan API (iaitu perkhidmatan hujung belakang)
  • Lapisan gerbang

Berbilang pelayan dan setiap pelayan mempunyai berbilang API Untuk akses serentak yang tinggi, Ia mesti dapat menyokong peningkatan dan penurunan nod API secara dinamik. Gunakan ETCD (kedai nilai kunci yang sangat tersedia) untuk penyelenggaraan keadaan dan penemuan nod API. Gunakan Redis sebagai cache data protobuf untuk API.

  1. Langkah pelaksanaan

4.1 Pasang golang, Gin dan kebergantungan yang berkaitan

Selepas pemasangan selesai, tambahkan kebergantungan yang perlu anda gunakan dalam govendor Fail .yaml. Seperti yang ditunjukkan di bawah:

dependencies:
  - github.com/gin-gonic/gin
  - github.com/coreos/etcd/clientv3
  - github.com/go-redis/redis
  - github.com/dgrijalva/jwt-go
Salin selepas log masuk

Gunakan arahan go untuk melaksanakan arahan berikut:

go get -u github.com/kardianos/govendor
govendor init
govendor add +external
govendor add github.com/gin-gonic/gin@v1.3.0
Salin selepas log masuk

4.2 Penggunaan asas gin

Menggunakan gin you boleh membina rangka kerja HTTP dengan mudah, Seperti yang ditunjukkan di bawah:

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()

    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })

    r.Run() // listen and serve on 0.0.0.0:8080
}
Salin selepas log masuk

4.3 Penggunaan ETCD dan Redis

ETCD ialah kedai nilai kunci yang sangat tersedia yang boleh digunakan untuk penemuan dan konfigurasi perkhidmatan perkongsian. Di golang, kami akan menggunakan perpustakaan clientv3 yang disediakan secara rasmi untuk beroperasi dsb.

Redis ialah pangkalan data nilai kunci berprestasi tinggi Kami akan menggunakan perpustakaan go-redis untuk menggunakan Redis dalam golang.

4.4 Penggunaan JWT

Untuk memastikan keselamatan antara muka, kami akan menggunakan JWT untuk pengesahan antara muka. JWT, JSON Web Token, ialah kaedah standard web untuk menghantar maklumat pengesahan identiti dan kebenaran Senario penggunaan utamanya ialah kebenaran dan pengesahan antara muka mesin ke mesin.

4.5 Pelaksanaan Gerbang

Untuk get laluan itu sendiri, fungsi utama termasuk penghalaan permintaan dan pengimbangan beban, kawalan keselamatan dan pengelogan.

Untuk penghalaan permintaan dan pengimbangan beban, kita boleh menggunakan rangka kerja ReverseProxy of the Gin untuk mencapainya. Penemuan status dan pendaftaran API perlu dilaksanakan melalui ETCD.

Sistem get laluan kami perlu menyokong berbilang nod API bahagian belakang dan melaksanakan pengimbangan beban. Algoritma pengimbangan beban boleh menggunakan kaedah pengundian, kaedah rawak, dsb. Di sini kami menggunakan kaedah pengundian (RoundRobin) untuk pemilihan nod.

Dari segi kawalan keselamatan, kami boleh lulus JWT dalam pengepala permintaan untuk mencapai pengesahan antara muka.

Akhir sekali, masukkan log dalam respons dan kembalikan hasil respons.

  1. Kesimpulan

Artikel ini memperkenalkan secara ringkas proses membina sistem gerbang mudah menggunakan bahasa golang. Sistem get laluan ini melaksanakan penghalaan permintaan dan pengimbangan beban dengan menggunakan rangka kerja GIN, melaksanakan penyelenggaraan status dan penemuan nod API melalui ETCD, menggunakan Redis sebagai cache data protobuf API, menggunakan JWT untuk pengesahan antara muka dan akhirnya menambah fungsi pengelogan. Sistem gerbang yang dibina menggunakan golang adalah ringan, cekap, mudah dipelajari dan digunakan, dan sangat sesuai untuk senario ringan.

Atas ialah kandungan terperinci Golang membina sistem pintu masuk yang ringan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan