Dalam golang, perkhidmatan mikro (atau seni bina perkhidmatan mikro) ialah gaya seni bina perisian (teknologi) yang menyokong pembahagian satu aplikasi kepada satu set perkhidmatan kecil, dan perkhidmatan itu menyelaras dan bekerjasama antara satu sama lain pengguna. Setiap perkhidmatan berjalan dalam proses bebasnya sendiri, dan perkhidmatan berkomunikasi antara satu sama lain menggunakan mekanisme komunikasi yang ringan (biasanya API RESTful berdasarkan HTTP setiap perkhidmatan dibina di sekitar perniagaan tertentu dan boleh digunakan secara bebas kepada persekitaran pengeluaran, seperti pengeluaran); persekitaran, dsb.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Apakah itu perkhidmatan mikro
Seni Bina Perkhidmatan Mikro ialah gaya seni bina perisian, seni bina berorientasikan perkhidmatan (SOA) Satu variasi gaya yang menyokong membahagikan aplikasi tunggal kepada satu set perkhidmatan kecil yang menyelaras dan bekerjasama antara satu sama lain untuk memberikan nilai muktamad kepada pengguna. Setiap perkhidmatan berjalan dalam proses bebasnya sendiri, dan perkhidmatan berkomunikasi antara satu sama lain menggunakan mekanisme komunikasi yang ringan (biasanya API RESTful berdasarkan HTTP). Setiap perkhidmatan dibina berdasarkan perniagaan tertentu dan boleh digunakan secara bebas ke persekitaran pengeluaran, persekitaran seperti pengeluaran, dsb. Di samping itu, mekanisme pengurusan perkhidmatan yang bersatu dan berpusat harus dielakkan sebanyak mungkin Untuk perkhidmatan tertentu, bahasa dan alat yang sesuai harus dipilih untuk membinanya berdasarkan konteks.
Perkhidmatan mikro (atau seni bina perkhidmatan mikro) ialah pendekatan seni bina asli awan di mana satu aplikasi terdiri daripada banyak komponen atau perkhidmatan yang lebih kecil yang digandingkan secara longgar dan boleh digunakan secara bebas. Perkhidmatan ini biasanya
mempunyai tindanan sendiri, termasuk pangkalan data dan model data
berinteraksi antara satu sama lain melalui gabungan API REST, acara; aliran, dan broker mesej Komunikasi;
Walaupun banyak perbincangan tentang perkhidmatan mikro berkisar pada definisi dan ciri seni bina, nilainya boleh difahami secara lebih umum melalui faedah perniagaan dan organisasi yang agak mudah:
memudahkan untuk mengemas kini kod anda.
Pasukan boleh menggunakan tindanan yang berbeza untuk komponen yang berbeza.
Komponen boleh diskalakan secara berasingan antara satu sama lain, mengurangkan pembaziran dan kos yang berkaitan dengan keperluan untuk menskalakan keseluruhan aplikasi kerana satu ciri mungkin menghadapi beban yang berlebihan.
Seni bina ini membantu kami menghuraikan keseluruhan aplikasi dalam bahagian, modul kecil, menjadikannya lebih mudah untuk memahami, membangun dan menguji setiap perkhidmatan sebagai Perkhidmatan bebas yang jelas menunjukkan tujuannya . Tambahan pula, ia membantu mengekalkan ketekalan seni bina projek (terdapat sedikit perbezaan antara seni bina yang direka bentuk asal dan seni bina yang dibangunkan sebenar). Ia juga boleh menggunakan dan mengembangkan perkhidmatan dengan menubuhkan pasukan bebas yang berbeza, supaya setiap pasukan boleh berkembang secara selari. Kod pemfaktoran semula adalah lebih mudah dalam seni bina ini. Ia juga menyokong proses penghantaran dan penggunaan berterusan (CI/CD).
Mengapa menggunakan go untuk membina perkhidmatan mikro?
Sebelum mendalami isu ini. Pertama, izinkan saya bercakap tentang kelebihan Golang. Walaupun Golang merupakan bahasa baharu, ia mempunyai banyak kelebihan berbanding bahasa lain. Program yang ditulis dalam Golang lebih mantap. Mereka mampu menahan beban berat yang dibina oleh program menggunakan perkhidmatan yang sedang berjalan. Golang lebih sesuai untuk sistem berbilang pemproses dan aplikasi web. Selain itu, ia mudah disepadukan dengan GitHub untuk mengurus pakej kod terdesentralisasi. Penggunaan seni bina perkhidmatan mikro kebanyakannya dicerminkan apabila program perlu berskala. Jika terdapat bahasa yang mematuhi piawaian sepenuhnya, ia adalah bahasa Golang. Sebabnya ialah ia mewarisi daripada keluarga C bahasa pengaturcaraan, dan komponen yang ditulis dalam Golang lebih mudah digabungkan dengan komponen yang ditulis dalam bahasa lain dalam keluarga yang sama. Walaupun Go berasal dari keluarga C, ia lebih cekap daripada C/C++. Ia mempunyai sintaks yang lebih mudah, agak seperti Python. Sintaksnya stabil dan tidak banyak berubah sejak keluaran awam pertamanya, yang bermaksud ia serasi ke belakang. Ini memberikan golang kelebihan berbanding bahasa lain. Selain itu, prestasi Golang jauh lebih tinggi daripada python dan java. Icing pada kek ialah ia semudah C/C++ sambil mudah dibaca dan difahami, menjadikannya pilihan yang sangat baik untuk membangunkan aplikasi perkhidmatan mikro.
Rangka kerja seni bina perkhidmatan mikro di Golang
Di bawah, kami membincangkan rangka kerja yang boleh digunakan untuk seni bina perkhidmatan mikro. Terdapat rangka kerja berikut:
Go MicroGo Micro ialah rangka kerja RPC paling popular yang saya temui setakat ini. Ia adalah rangka kerja RPC boleh pasang. Go Micro menyediakan kami fungsi berikut:
Penemuan perkhidmatan: Program ini mendaftar secara automatik ke sistem penemuan perkhidmatan
Pengimbangan beban: Ia menyediakan pelanggan Pengimbangan beban hujung ke hujung, yang membantu mengimbangi permintaan antara contoh perkhidmatan
Komunikasi segerak: Menyediakan lapisan pengangkutan Permintaan/Respons
Komunikasi tak segerak: Mempunyai fungsi penerbitan dan langganan terbina dalam
Pengekodan mesej: Anda boleh menggunakan Jenis Kandungan dalam pengepala untuk mengekod dan menyahkod
Pelanggan/pelayan RPC: gunakan fungsi di atas dan menyediakan antara muka yang diperlukan untuk membina perkhidmatan mikro
Seni bina Go Micro terdiri daripada tiga lapisan. Tahap pertama abstraksi ialah lapisan perkhidmatan. Lapisan kedua ialah lapisan model pelanggan-pelayan. Pelayan terdiri daripada blok untuk perkhidmatan menulis, manakala klien menyediakan kami antara muka yang tujuan utamanya adalah untuk membuat permintaan kepada perkhidmatan yang ditulis dalam model pelayan.
Lapisan ketiga mempunyai jenis pemalam berikut:
Broker: Menyediakan antara muka untuk broker mesej (broker mesej) dalam komunikasi tak segerak
Codec: digunakan untuk menyulitkan atau menyahsulit mesej
Registry: menyediakan fungsi carian perkhidmatan
Pemilih: membina beban pada daftar Seimbang
Pengangkutan: Pengangkutan ialah antara muka komunikasi untuk permintaan/tindak balas segerak antara perkhidmatan
Ia juga menyediakan perkhidmatan yang dipanggil Fungsi Sidecar . Sidecar membolehkan anda menyepadukan perkhidmatan yang ditulis dalam bahasa selain daripada Go. Ia juga menyediakan kami pengekodan/penyahkodan gRPC, pendaftaran perkhidmatan dan pengendalian permintaan HTTP
GO Kit
Go Kit ialah kit alat pengaturcaraan untuk membina perkhidmatan mikro. Tidak seperti Go Micro, ia adalah perpustakaan yang boleh diimport sebagai pakej binari. Peraturan Go Kit adalah mudah. Seperti berikut:
Tiada pembolehubah global
Karangan deklaratif
Kebergantungan eksplisit
Antara Muka sebagai Kontrak (Kontrak Antara Muka)
Reka Bentuk Dipacu Domain (DDD)
Go Kit menyediakan perkara berikut Pakej kod:
Pengesahan: BasicAuth dan JWT
Protokol pengangkutan: HTTP, gRPC, dsb.
Pengelogan: Antara muka pengelogan berstruktur dalam perkhidmatan
Metrik: CloudWatch, Statsd, Graphite, dsb.
Menjejaki pengesanan teragih : Zipkin dan Opentracing
Penemuan perkhidmatan: Consul, Etcd, Eureka, dsb.
Circuitbreaker: Pelaksanaan Hystrix dalam bahasa Go
Seni bina perkhidmatan Go Kit adalah seperti berikut
Gizmo
Gizmo ialah kit alat perkhidmatan mikro daripada The New York Times. Ia menyediakan pakej yang membawa daemon pelayan dan daemon pubsub bersama-sama. Ia mendedahkan pakej berikut:
Pelayan: Menyediakan dua pelaksanaan pelayan: SimpleServer (HTTP) dan RPCServer (gRPC)
Server/kit : Pakej kod percubaan berdasarkan Go Kit
Konfigurasi konfigurasi: Mengandungi fungsi konfigurasi daripada fail JSON, gumpalan JSON dalam Konsul k/v atau pembolehubah persekitaran
Pubsub: Menyediakan antara muka biasa untuk menerbitkan dan menggunakan data daripada baris gilir
Pubsub/pubsubtest: Mengandungi pelaksanaan ujian antara muka penerbit dan pelanggan
Web: Fungsi luaran untuk menghuraikan jenis daripada pertanyaan permintaan dan muatan
Pakej Pubsub menyediakan antara muka untuk mengendalikan baris gilir berikut:
pubsub/ aws: untuk Amazon SNS/SQS
pubsub/gcp: untuk Google Pubsub
pubsub/ kafka: untuk topik Kafka
pubsub/http: pengguna HTTP push
Jadi, pada pendapat saya, Gizmo berada di antara Go Micro dan Go Kit antara. Ia bukan kotak hitam lengkap seperti Go Micro. Pada masa yang sama, ia tidak seprimitif Go Kit. Ia menyediakan komponen pembinaan peringkat lebih tinggi seperti konfigurasi dan pakej pubsub
Kite
Kite ialah rangka kerja untuk membangunkan perkhidmatan mikro dalam Go. Ia mendedahkan pakej kod sisi klien dan pelayan RPC. Perkhidmatan yang dibuat akan didaftarkan secara automatik dengan sistem penemuan perkhidmatan Kontrol. Kontrol ditulis dalam Kite dan ia sendiri merupakan perkhidmatan Kite. Ini bermakna perkhidmatan mikro Kite berfungsi dengan baik dalam persekitaran mereka sendiri. Jika anda perlu menyambungkan perkhidmatan mikro Layang-layang anda ke sistem penemuan perkhidmatan lain, penyesuaian diperlukan. Ini adalah salah satu sebab penting mengapa saya memilih Kite daripada senarai dan memutuskan untuk tidak memperkenalkan rangka kerja ini
[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Apakah perkhidmatan mikro dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!