Rumah >pembangunan bahagian belakang >Golang >Bina gerbang API perkhidmatan mikro yang cekap berdasarkan go-zero

Bina gerbang API perkhidmatan mikro yang cekap berdasarkan go-zero

WBOY
WBOYasal
2023-06-23 10:13:401714semak imbas

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.

Apakah itu get laluan API?

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:

  • Menyediakan antara muka bersatu kepada dunia luar
  • Menyediakan penghalaan permintaan dalaman dan proksi antara muka

Sebagai corak seni bina, gerbang API juga mempunyai ciri-ciri berikut:

  • Bertanggungjawab untuk memajukan permintaan masuk luaran kepada perkhidmatan dalaman
  • Menjalankan permintaan mengikut keadaan yang berbeza Penghalaan, penapisan dan transformasi
  • Menyediakan perkhidmatan seperti pengesahan, keselamatan dan pengehadan semasa

rangka kerja go-zero

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:

  • Prestasi tinggi: Berdasarkan ciri keselarasan tinggi Golang dan penggunaan memori yang rendah, go-zero mengimplementasikan High. pemprosesan rangkaian prestasi dan penggunaan sumber.
  • Skalabiliti: go-zero menyokong pembangunan berlapis dan boleh mengasingkan perkhidmatan muatan tinggi ke dalam lapisan bebas untuk memastikan kestabilan dan kebolehskalaan.
  • Kebolehpercayaan tinggi: go-zero menggunakan kaedah ujian komprehensif untuk memastikan ketepatan fungsi sistem, dan menyepadukan reka bentuk ketersediaan tinggi seperti cuba semula, fius dan pengehadan semasa untuk meningkatkan kebolehpercayaan sistem.
  • Rantai alat yang kaya: go-zero menyediakan banyak alat untuk membantu kami membangunkan dan menggunakan perkhidmatan dengan cepat.

go-zero membina get laluan API

Seterusnya, kami akan memperkenalkan langkah go-zero untuk membina get laluan API:

Langkah 1: Tentukan antara muka

ini boleh dijana secara automatik oleh rangka kerja dan disepadukan ke dalam perkhidmatan untuk panggilan get laluan API.

Kod sampel adalah seperti berikut:

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. HandlersHandlersLangkah 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.

Pasang alat goctl:

Pemasangan alat goctl adalah sangat mudah Anda hanya perlu memasangnya melalui penamaan berikut:

rreee
  1. Buat 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),
        }
    }
  2. Selepas melaksanakan arahan ini, goctl akan menjana rangka kerja kod secara automatik untuk Gerbang API.
  3. Konfigurasikan penghalaan:

    Kami perlu menambah konfigurasi penghalaan yang berkaitan selepas mentakrifkan antara muka

    . Dalam go-zero, anda boleh menggunakan
  4. dan
  5. untuk konfigurasi penghalaan, dan anda juga boleh menggunakan

    ,

    dan kaedah lain untuk penapisan dan kawalan laluan.

    apiKod sampel adalah seperti berikut:Group

    $ curl -sSL https://git.io/godev | bash
    ProxyWithJwtAuthWithCircuitBreakerKita 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.
Selepas mentakrifkan API, anda boleh memulakan perkhidmatan get laluan API:

$ goctl api new gateway
apiSelepas berjaya memulakan, anda boleh mengakses antara muka yang disediakan oleh get laluan API. userServiceProxyRingkasan

Langkah-langkah untuk membina get laluan API perkhidmatan mikro yang cekap berdasarkan go-zero adalah seperti berikut:

Tentukan antara muka API

Tulis microservices

Konfigurasikan get laluan API
  • Mulakan perkhidmatan get laluan API
  • go-zero ialah rangka kerja mikro perkhidmatan yang sangat fleksibel, berprestasi tinggi dan boleh skala hanya Ia menyediakan rangka kerja Web, rangka kerja RPC dan rangka kerja perkhidmatan mikro, serta satu siri alatan persisian untuk membantu kami membina aplikasi perkhidmatan mikro yang cekap dengan cepat.
  • Melalui langkah di atas, kami boleh membina get laluan API perkhidmatan mikro yang cekap dan berkuasa dengan mudah, dengan itu menyediakan asas seni bina berskala tinggi dan berprestasi tinggi untuk aplikasi kami.

Atas 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!

Kenyataan:
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