Rumah >pembangunan bahagian belakang >Golang >Apakah perkhidmatan mikro dalam golang

Apakah perkhidmatan mikro dalam golang

青灯夜游
青灯夜游asal
2023-01-03 10:11:544430semak imbas

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.

Apakah perkhidmatan mikro dalam golang

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.

  • Mengapa kami menggunakan perkhidmatan mikro?

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 Micro

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

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