Dengan perkembangan pesat Internet, pembangunan perisian telah menjadi semakin kompleks. Untuk menghadapi cabaran ini, seni bina perisian juga terus berkembang, daripada aplikasi tunggal awal kepada seni bina perkhidmatan mikro. Dengan populariti seni bina perkhidmatan mikro, semakin ramai pembangun mula menggunakan gRPC sebagai protokol komunikasi antara perkhidmatan mikro. go-zero ialah rangka kerja perkhidmatan mikro berdasarkan gRPC. Artikel ini akan memperkenalkan corak reka bentuk seni bina go-zero dan amalan terbaik.
1. seni bina rangka kerja go-zero
Rajah 1: seni bina rangka kerja go-zero
Seperti yang ditunjukkan dalam Rajah 1, rangka kerja go-zero dibahagikan kepada 4 lapisan, bermula dari bawah Naik adalah lapisan capaian data, lapisan logik perniagaan, lapisan API dan lapisan rangkaian.
(1) Lapisan akses data
Lapisan akses data bertanggungjawab untuk berinteraksi dengan pangkalan data, termasuk objek akses data DAO dan antara muka lapisan akses data dbr. DAO terutamanya merangkum operasi SQL yang mudah, manakala dbr merangkum operasi ORM. Tujuan reka bentuk lapisan ini adalah untuk merangkum butiran pangkalan data supaya kod perniagaan lapisan atas tidak perlu mengambil berat tentang pelaksanaan khusus pangkalan data.
(2) Lapisan logik perniagaan
Lapisan logik perniagaan bertanggungjawab terutamanya untuk pelaksanaan logik perniagaan. Ia termasuk dua bahagian: perkhidmatan dan model. Perkhidmatan ialah pelaksanaan khusus bagi logik perniagaan, dan model ialah takrifan struktur data yang diperlukan oleh logik perniagaan. Lapisan ini direka bentuk untuk memisahkan logik perniagaan daripada logik akses data dan menjadikan logik perniagaan telus kepada lapisan akses data.
(3) Lapisan API
Lapisan API bertanggungjawab untuk mendedahkan logik perniagaan sebagai antara muka API. Lapisan ini menggunakan protokol protobuf untuk komunikasi dan menyokong pengesahan JWT. Reka bentuk lapisan ini mempertimbangkan sepenuhnya keperluan untuk menyediakan antara muka API yang cekap, boleh dipercayai dan berskala untuk perkhidmatan mikro.
(4) Lapisan rangkaian
Lapisan rangkaian bertanggungjawab untuk memproses I/O rangkaian, termasuk HTTP, TCP dan WebSocket, dsb., dan menyokong pemprosesan tak segerak. Lapisan ini direka bentuk untuk menggunakan sepenuhnya kelebihan gRPC dalam kecekapan komunikasi rangkaian sambil menyokong pelbagai protokol untuk menyesuaikan diri dengan lebih baik kepada pelbagai senario.
2. Amalan terbaik go-zero
(1) Menggunakan redis
Untuk kebanyakan aplikasi Internet, redis ialah alat penting. Rangka kerja go-zero menyediakan satu set lengkap perpustakaan redis, termasuk klien redis dan kumpulan redis, yang boleh membantu pembangun menggunakan redis dengan mudah dan meningkatkan ketersediaan dan prestasi sistem dengan menetapkan pemisahan redis, pemisahan baca-tulis dan strategi lain.
(2) Gunakan rabbitmq sebagai perisian tengah mesej
Perisian tengah mesej memainkan peranan penting dalam seni bina perkhidmatan mikro. Rangka kerja go-zero menyediakan set lengkap perpustakaan rabbitmq (go-zero/queue), yang boleh membantu pembangun menggunakan rabbitmq dengan mudah dan meningkatkan ketersediaan dan prestasi sistem dengan menetapkan parameter seperti dasar HA dan kebolehpercayaan mesej.
(3) Gunakan konsul untuk penemuan perkhidmatan dan pengurusan konfigurasi
Penemuan perkhidmatan dan pengurusan konfigurasi adalah sebahagian daripada seni bina perkhidmatan mikro. Rangka kerja go-zero menyediakan perpustakaan konsul, yang boleh membantu pembangun menggunakan konsul dengan mudah dan meningkatkan ketersediaan dan prestasi sistem dengan menetapkan dasar seperti penemuan perkhidmatan, pengimbangan beban dan pengurusan konfigurasi.
(4) Gunakan docker untuk penggunaan
Docker ialah salah satu penyelesaian kontena yang paling popular pada masa ini. Anda boleh menggunakan docker untuk membungkus aplikasi go-zero ke dalam imej, dan kemudian menggunakan alat orkestrasi kontena (seperti kubernetes) untuk penggunaan dan pengurusan. Ini boleh meningkatkan kecekapan penggunaan, memendekkan masa penggunaan dan menyesuaikan diri dengan perubahan dalam trafik melalui penskalaan automatik.
3. Ringkasan
Artikel ini terutamanya memperkenalkan corak reka bentuk dan amalan terbaik rangka kerja go-zero. Rangka kerja go-zero mengguna pakai susunan teknologi terkemuka industri, termasuk gRPC, protobuf, redis, rabbitmq dan consul, dsb., dan menyediakan rangka kerja lengkap untuk membantu pembangun membina seni bina perkhidmatan mikro dengan cepat dan cekap. Pada masa yang sama, artikel ini memperkenalkan amalan terbaik untuk naik taraf dan pengoptimuman sistem menggunakan teknologi seperti redis, rabbitmq, consul dan docker, untuk membantu pembangun menghadapi cabaran aplikasi Internet dengan lebih baik.
Atas ialah kandungan terperinci corak reka bentuk seni bina go-zero dan amalan terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!