Rumah >pembangunan bahagian belakang >Golang >Bina gerbang API perkhidmatan mikro yang cekap berdasarkan go-zero
Dalam beberapa tahun kebelakangan ini, aplikasi seni bina perkhidmatan mikro telah menjadi semakin meluas Ia berpusatkan perkhidmatan dan membahagikan aplikasi kepada modul berfungsi bebas dengan menyahgandingkan perkhidmatan, dengan itu meningkatkan kebolehpercayaan dan kebolehskalaan aplikasi. Walau bagaimanapun, dalam seni bina perkhidmatan mikro, disebabkan bilangan perkhidmatan yang banyak, komunikasi antara perkhidmatan tidak dapat dielakkan meningkatkan kerumitan. Pada ketika ini, gerbang API menjadi komponen penting. Dalam artikel ini, kami akan memperkenalkan kaedah go-zero untuk membina get laluan API perkhidmatan mikro yang cekap.
Gerbang API ialah pelayan yang mengendalikan trafik masuk, memajukan permintaan dan respons. Ia adalah lapisan tengah antara pelanggan dan pelayan. Dalam seni bina perkhidmatan mikro, get laluan API memainkan dua peranan berikut terutamanya:
Sebagai corak seni bina, gerbang API juga mempunyai ciri-ciri berikut:
go-zero ialah perkhidmatan mikro Rangka kerja web dan rpc bagi seni bina komited untuk menyediakan keupayaan pemprosesan serentak yang tinggi dan antara muka pengaturcaraan yang ringkas dan mudah digunakan. Ia dibina di atas perpustakaan standard Golang dan boleh mencapai pemprosesan permintaan rangkaian yang cekap berdasarkan keupayaan konkurensi dan kelebihan pengurusan memori bahasa Go.
Rangka kerja go-zero menyediakan rangka kerja Web, rangka kerja RPC, rangka kerja mikro dan satu siri alat persisian Komponen paling penting ialah rangka kerja mikro go-zero. Rangka kerja ini sangat fleksibel dan boleh disesuaikan mengikut keperluan perniagaan tertentu Ia juga mempunyai kelebihan berikut:
Seterusnya, kami akan memperkenalkan langkah go-zero untuk membina get laluan API:
ini boleh dijana secara automatik oleh rangka kerja dan disepadukan ke dalam perkhidmatan untuk panggilan get laluan API.
GET /api/user/{id} POST /api/user DELETE /api/user/{id}
Dalam kod di atas, kami mentakrifkan antara muka Perkhidmatan, yang mengandungi tiga kaedah, sepadan dengan tiga antara muka yang ditakrifkan sebelum ini. Pada masa yang sama, kita perlu melaksanakan antara muka HttpHandlers, yang boleh mengarahkan permintaan secara terus ke fungsi pemprosesan yang sepadan dengan melaksanakan selebihnya. Antara muka Pengendali. Handlers
Handlers
Langkah 3: Konfigurasikan get laluan API
Seterusnya, kita perlu mengkonfigurasi maklumat yang berkaitan dalam get laluan API, seperti penghalaan, dasar pengehadan semasa, penemuan perkhidmatan, dsb. go-zero menyediakan alat yang dipanggil goctl yang boleh membantu kami membuat dan mengurus perkhidmatan mikro dan get laluan API dengan cepat.
Pemasangan alat goctl adalah sangat mudah Anda hanya perlu memasangnya melalui penamaan berikut:
rreeeBuat get laluan API:
Anda boleh menggunakan arahan berikut untuk mencipta get laluan API:
package service import "github.com/tal-tech/go-zero/rest" type Request struct { Id int `json:"id"` } type Response struct { Data string `json:"data"` } type Service interface { GetUser(*Request) (*Response, error) AddUser(*Request) (*Response, error) DeleteUser(*Request) (*Response, error) } type UserService struct { } func NewUserService() *UserService { return &UserService{} } func (s *UserService) GetUser(req *Request) (*Response, error) { return &Response{ Data: "get user success", }, nil } func (s *UserService) AddUser(req *Request) (*Response, error) { return &Response{ Data: "add user success", }, nil } func (s *UserService) DeleteUser(req *Request) (*Response, error) { return &Response{ Data: "delete user success", }, nil } func (s *UserService) HttpHandlers() []rest.Handler { return []rest.Handler{ rest.Get("/api/user/:id", s.GetUser), rest.Post("/api/user", s.AddUser), rest.Delete("/api/user/:id", s.DeleteUser), } }
Konfigurasikan penghalaan:
Kami perlu menambah konfigurasi penghalaan yang berkaitan selepas mentakrifkan antara muka
. Dalam go-zero, anda boleh menggunakan,
dan kaedah lain untuk penapisan dan kawalan laluan.api
Kod sampel adalah seperti berikut:Group
$ curl -sSL https://git.io/godev | bash
Proxy
WithJwtAuth
WithCircuitBreaker
Kita dapat melihat bahawa dalam kod di atas, permintaan dihalakan ke fungsi pemprosesan yang ditakrifkan oleh , Dan gunakan
untuk memajukan permintaan lain yang tidak ditentukan kepada perkhidmatan yang ditentukan.$ goctl api new gateway
api
Selepas berjaya memulakan, anda boleh mengakses antara muka yang disediakan oleh get laluan API. userService
Proxy
Ringkasan
Langkah-langkah untuk membina get laluan API perkhidmatan mikro yang cekap berdasarkan go-zero adalah seperti berikut:
Tentukan antara muka APITulis microservicesKonfigurasikan get laluan APIAtas ialah kandungan terperinci Bina gerbang API perkhidmatan mikro yang cekap berdasarkan go-zero. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!