Jadual Kandungan
Pengenalan Makefile" > Pengenalan Makefile
Rumah pembangunan bahagian belakang Golang Menganalisis pengimbangan beban gRPC Kubernetes (L4 lwn L7)

Menganalisis pengimbangan beban gRPC Kubernetes (L4 lwn L7)

Nov 16, 2021 pm 02:53 PM
grpc kubernetes

Artikel ini diperkenalkan oleh ruangan tutorial go language untuk memperkenalkan pengimbangan beban gRPC di Kubernetes. Saya harap ia dapat membantu rakan yang memerlukan.

Kebergantungan persekitaran pemasangan

  • docker-desktop >= 4.1.1
  • kubernetes >= 1.21.5
  • go >= 1.17
  • protobuf >= 3.17.3
  • istioctl >= 1.11.4

Muat turun dan pasang Desktop Docker dan mulakan kluster Kubernetes terbina dalam.

# 安装 Gobrew install go# 安装 Protobufbrew install protobuf# 安装 Istiobrew install istioctl
kubectl config use-context docker-desktop
istioctl install -y
Salin selepas log masuk

Alamat projek

github.com/jxlwqq/grpc-lb

Tarik kod:

git clone git@github.com:jxlwqq/grpc-lb.gitcd grpc-lb
Salin selepas log masuk
命令 说明
make init 安装 protoc-gen-go 和 protoc-gen-grpc
make protoc 基于 proto 文件,生成 *_pb.go 和 *_grpc.pb.go
make docker-build 构建 docker 镜像
make kube-deploy 在集群中部署服务
make kube-delete 删除服务
make istio-inject 注入 Istio 边车

Untuk logik tertentu, sila lihat fail Makefile.

L4 vs L7 pengimbangan beban

Lapisan empat yang dipanggil ialah pengimbangan beban berdasarkan port IP, manakala lapisan tujuh ialah pengimbangan beban berdasarkan maklumat lapisan aplikasi seperti URL; Kubernetes Pengimbangan beban Perkhidmatan terbina dalam adalah berdasarkan iptables/ipvs dan hanya menyokong L4. Dengan kata lain, Perkhidmatan menyokong protokol HTTP/1.1 tetapi tidak menyokong protokol HTTP/2.

Envoy (Istio) lebih serba boleh dan menyokong semua fungsi HTTP/2 yang diminta dan dibalas oleh gRPC sebagai penghalaan asas dan pengimbangan beban.

Seni Bina Projek

Projek ini menguji sokongan Perkhidmatan dan Utusan (Istio) untuk pengimbangan beban HTTP/RPC masing-masing.

  • cmd/server/main.go: Pelayan, menyediakan kedua-dua perkhidmatan HTTP dan RPC. Data tindak balas ialah nama Pod di mana bekas pelayan berada (berdasarkan API Ke Bawah).
  • cmd/client-http/main.go: Pelanggan HTTP, melalui kaedah HTTP, memanggil antara muka pelayan secara kitaran dan mencetak nilai pulangan.
  • cmd/client-grpc/main.go: klien gRPC, melalui mod RPC, menggelung untuk memanggil kaedah pelayan dari jauh dan mencetak nilai pulangan.

Prinsip Pengujian

Pelayan menggunakan 3 salinan dalam gugusan Kubernetes dalam bentuk Deployment Nama Pod bagi 3 salinan adalah berbeza, dan klien -http dan klien-grpc akan memanggil pelayan sekali setiap saat dan mencetak nilai pulangan. Jika ketiga-tiga nama Pod wujud dalam nilai pulangan, ini menunjukkan bahawa pengimbangan beban yang berkesan sedang dilakukan, sebaliknya, ini menunjukkan bahawa pengimbangan beban yang berkesan tidak dilakukan.

Perkhidmatan Ujian

Membina imej:

make docker-build # 构建镜像(构建好的镜像,不 push 到远程仓库中)
Salin selepas log masuk

Lihat imej:

docker images ls
Salin selepas log masuk

Kembali:

REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
grpc-lb/client-grpc   latest    95d32ead8d9b   12 seconds ago   16.6MB
grpc-lb/client-http   latest    dbf0341206f6   22 seconds ago   11.5MB
grpc-lb/server        latest    1ef346785b2a   29 seconds ago   18.2MB
Salin selepas log masuk

Kerahkan ke kluster:

make kube-deploy  # 在集群中部署服务
Salin selepas log masuk

Lihat Pod:

kubectl get pods
Salin selepas log masuk
Salin selepas log masuk

Kembali:

NAME                           READY   STATUS    RESTARTS   AGE
client-grpc-6c565594f4-tdf75   1/1     Running   0          2m48s
client-http-55d95c744d-f7nx4   1/1     Running   0          2m49s
server-7c4bfd74d-29c69         1/1     Running   0          2m51s
server-7c4bfd74d-4btvw         1/1     Running   0          2m51s
server-7c4bfd74d-fk8zf         1/1     Running   0          2m51s
Salin selepas log masuk

Lihat log klien-http Pod :

export CLIENT_HTTP_POD=$(kubectl get pod -l app=client-http -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_HTTP_POD}"
Salin selepas log masuk
Salin selepas log masuk

Pemulangan:

#1: server-7c4bfd74d-4btvw#2: server-7c4bfd74d-4btvw#3: server-7c4bfd74d-29c69#4: server-7c4bfd74d-fk8zf#5: server-7c4bfd74d-fk8zf#6: server-7c4bfd74d-29c69#7: server-7c4bfd74d-fk8zf#8: server-7c4bfd74d-4btvw#9: server-7c4bfd74d-fk8zf
Salin selepas log masuk

Lihat log Pod client-grpc:

export CLIENT_GRPC_POD=$(kubectl get pod -l app=client-grpc -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_GRPC_POD}"
Salin selepas log masuk
Salin selepas log masuk

Pemulangan:

#1: server-7c4bfd74d-fk8zf#2: server-7c4bfd74d-fk8zf#3: server-7c4bfd74d-fk8zf#4: server-7c4bfd74d-fk8zf#5: server-7c4bfd74d-fk8zf#6: server-7c4bfd74d-fk8zf#7: server-7c4bfd74d-fk8zf#8: server-7c4bfd74d-fk8zf#9: server-7c4bfd74d-fk8zf
Salin selepas log masuk

Anda boleh melihatnya Di luar kotak, permintaan HTTP melakukan muatan, manakala permintaan RPC melakukan muatan.

Utusan Pengujian(Istio)

Kami telah menggunakan Istio dalam kelompok, tetapi tiada ruang arahan untuk suntikan automatik, jadi kami melakukan suntikan manual di sini.

Suntikan manual:

make istio-inject # 注入 Istio 边车
Salin selepas log masuk

Lihat Pod:

kubectl get pods
Salin selepas log masuk
Salin selepas log masuk

Pulangan:

NAME                           READY   STATUS    RESTARTS   AGE
client-grpc-7864f57779-f6blx   2/2     Running   0          17s
client-http-f8964854c-jclkd    2/2     Running   0          21s
server-7846bd6bb4-bcfws        2/2     Running   0          27s
server-7846bd6bb4-fv29s        2/2     Running   0          40s
server-7846bd6bb4-hzqj6        2/2     Running   0          34s
Salin selepas log masuk

Lihat log Pod klien-http:

export CLIENT_HTTP_POD=$(kubectl get pod -l app=client-http -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_HTTP_POD}"
Salin selepas log masuk
Salin selepas log masuk

Pulangan:

#1: server-7846bd6bb4-hzqj6#2: server-7846bd6bb4-fv29s#3: server-7846bd6bb4-hzqj6#4: server-7846bd6bb4-hzqj6#5: server-7846bd6bb4-hzqj6#6: server-7846bd6bb4-hzqj6#7: server-7846bd6bb4-hzqj6#8: server-7846bd6bb4-bcfws#9: server-7846bd6bb4-fv29s
Salin selepas log masuk

Lihat log klien-grpc Pod:

export CLIENT_GRPC_POD=$(kubectl get pod -l app=client-grpc -o jsonpath={.items..metadata.name})kubectl logs "${CLIENT_GRPC_POD}"
Salin selepas log masuk
Salin selepas log masuk

Pulangan:

#1: server-7846bd6bb4-fv29s#2: server-7846bd6bb4-hzqj6#3: server-7846bd6bb4-fv29s#4: server-7846bd6bb4-bcfws#5: server-7846bd6bb4-fv29s#6: server-7846bd6bb4-hzqj6#7: server-7846bd6bb4-fv29s#8: server-7846bd6bb4-bcfws#9: server-7846bd6bb4-fv29s
Salin selepas log masuk

Anda boleh lihat , kedua-dua permintaan HTTP dan permintaan RPC sedang melaksanakan muatan.

Bersihkan

make kube-delete
istioctl experimental uninstall --purge
Salin selepas log masuk

Atas ialah kandungan terperinci Menganalisis pengimbangan beban gRPC Kubernetes (L4 lwn L7). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menggunakan gRPC untuk melaksanakan muat naik fail di Golang? Bagaimana untuk menggunakan gRPC untuk melaksanakan muat naik fail di Golang? Jun 03, 2024 pm 04:54 PM

Bagaimana untuk melaksanakan muat naik fail menggunakan gRPC? Buat definisi perkhidmatan sokongan, termasuk permintaan dan mesej respons. Pada klien, fail yang hendak dimuat naik dibuka dan dibahagikan kepada beberapa bahagian, kemudian distrim ke pelayan melalui aliran gRPC. Di bahagian pelayan, ketulan fail diterima dan disimpan ke dalam fail. Pelayan menghantar respons selepas muat naik fail selesai untuk menunjukkan sama ada muat naik berjaya.

Amalan terbaik untuk menggunakan gRPC untuk melaksanakan penghantaran data serentak di Golang Amalan terbaik untuk menggunakan gRPC untuk melaksanakan penghantaran data serentak di Golang Jul 18, 2023 pm 10:17 PM

Amalan terbaik untuk menggunakan gRPC untuk melaksanakan penghantaran data serentak di Golang Pengenalan: Dengan pembangunan pengkomputeran awan dan teknologi data besar, permintaan untuk penghantaran data menjadi semakin mendesak. Sebagai rangka kerja panggilan prosedur jauh berprestasi tinggi sumber terbuka Google, gRPC telah menjadi pilihan pertama banyak pembangun kerana kecekapan, fleksibiliti dan ciri merentas bahasanya. Artikel ini akan memperkenalkan amalan terbaik tentang cara menggunakan gRPC untuk melaksanakan penghantaran data serentak di Golang, termasuk pembinaan struktur projek, penggunaan kumpulan sambungan dan pengendalian ralat, dsb. 1. Membina struktur kejuruteraan pada permulaan

Amalan go-zero dan Kubernetes: membina seni bina perkhidmatan mikro dalam kontena dengan ketersediaan tinggi, prestasi tinggi dan berskala tinggi Amalan go-zero dan Kubernetes: membina seni bina perkhidmatan mikro dalam kontena dengan ketersediaan tinggi, prestasi tinggi dan berskala tinggi Jun 22, 2023 am 09:26 AM

Memandangkan skala Internet terus berkembang dan keperluan pengguna terus meningkat, kelebihan seni bina perkhidmatan mikro semakin mendapat perhatian. Selepas itu, seni bina perkhidmatan mikro kontena telah menjadi sangat penting, yang dapat memenuhi keperluan ketersediaan tinggi, prestasi tinggi, berskala tinggi dan aspek lain dengan lebih baik. Di bawah aliran ini, go-zero dan Kubernetes telah menjadi rangka kerja mikro perkhidmatan bekas paling popular. Artikel ini akan memperkenalkan cara menggunakan rangka kerja go-zero dan alatan orkestrasi kontena Kubernetes untuk membina ketersediaan tinggi, berprestasi tinggi

Penggunaan dan pengurusan pengeluaran menggunakan Docker dan Kubernetes dalam Beego Penggunaan dan pengurusan pengeluaran menggunakan Docker dan Kubernetes dalam Beego Jun 23, 2023 am 08:58 AM

Dengan perkembangan pesat Internet, semakin banyak perusahaan telah mula memindahkan aplikasi mereka ke platform awan. Docker dan Kubernetes telah menjadi dua alat yang sangat popular dan berkuasa untuk penggunaan dan pengurusan aplikasi pada platform awan. Beego ialah rangka kerja Web yang dibangunkan menggunakan Golang Ia menyediakan fungsi yang kaya seperti penghalaan HTTP, lapisan MVC, pengelogan, pengurusan konfigurasi dan pengurusan Sesi. Dalam artikel ini kami akan membincangkan cara menggunakan Docker dan Kub

Cara menggunakan gRPC dalam PHP untuk mengendalikan API konkurensi tinggi Cara menggunakan gRPC dalam PHP untuk mengendalikan API konkurensi tinggi Jun 17, 2023 pm 04:46 PM

Dalam aplikasi rangkaian moden, pengendalian konkurensi tinggi adalah isu yang sangat penting. Dalam proses ini, menggunakan gRPC boleh menjadi cara terbaik untuk mencapai komunikasi pelanggan-pelayan yang cekap melalui panggilan prosedur jauh (RPC). Dalam aplikasi PHP, kami boleh menggunakan gRPC untuk mengendalikan permintaan API serentak yang tinggi. Artikel ini akan memperkenalkan cara menggunakan gRPC untuk mengendalikan API konkurensi tinggi dalam PHP. Apakah gRPC? gRPC ialah rangka kerja RPC berprestasi tinggi yang dibangunkan oleh Google. ia

Cara menggunakan Java untuk membangunkan aplikasi orkestrasi kontena berdasarkan Spring Cloud Kubernetes Cara menggunakan Java untuk membangunkan aplikasi orkestrasi kontena berdasarkan Spring Cloud Kubernetes Sep 20, 2023 am 11:15 AM

Cara menggunakan Java untuk membangunkan aplikasi orkestrasi kontena berdasarkan Spring Cloud Kubernetes Dengan pembangunan dan aplikasi meluas teknologi kontena, alat orkestrasi kontena telah menjadi bahagian yang amat diperlukan dalam pembangun. Sebagai salah satu alat orkestrasi kontena yang paling popular, Kubernetes telah menjadi standard industri. Dalam konteks ini, menggabungkan Spring Cloud dan Kubernetes, kami boleh membangunkan aplikasi dengan mudah berdasarkan orkestrasi kontena. Artikel ini akan memperkenalkan secara terperinci

Amalan terbaik untuk menggunakan gRPC untuk melaksanakan penyulitan data di Golang Amalan terbaik untuk menggunakan gRPC untuk melaksanakan penyulitan data di Golang Jul 19, 2023 pm 03:17 PM

Amalan terbaik untuk menggunakan gRPC untuk melaksanakan penyulitan data di Golang Pengenalan: Pada era hari ini apabila keselamatan maklumat sangat dihargai, melindungi keselamatan data menjadi semakin penting. Dalam sistem teragih, cara memastikan keselamatan data semasa penghantaran rangkaian adalah isu yang mesti diberi perhatian. gRPC ialah rangka kerja panggilan prosedur jauh merentas bahasa berprestasi tinggi yang menyediakan keselamatan data yang lebih tinggi dengan menggunakan ProtocolBuffers untuk siri dan penghantaran data, serta menyokong penghantaran disulitkan TLS/SSL.

Cara membina aplikasi kontena yang boleh dipercayai dengan React dan Kubernetes Cara membina aplikasi kontena yang boleh dipercayai dengan React dan Kubernetes Sep 26, 2023 am 09:07 AM

Cara membina aplikasi kontena yang boleh dipercayai menggunakan React dan Kubernetes Dengan perkembangan pesat teknologi asli awan, aplikasi kontena telah menjadi trend hangat dalam pembangunan perisian hari ini. Sebagai rangka kerja bahagian hadapan yang popular, fleksibiliti dan kecekapan React menjadikannya pilihan pertama bagi kebanyakan pembangun. Artikel ini akan memperkenalkan cara membina aplikasi kontena yang boleh dipercayai menggunakan React dan Kubernetes, serta menyediakan beberapa contoh kod khusus. Mencipta aplikasi React Mula-mula, kita perlu mencipta React asas

See all articles