


Menganalisis pengimbangan beban gRPC Kubernetes (L4 lwn L7)
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
Alamat projek
github.com/jxlwqq/grpc-lb
Tarik kod:
git clone git@github.com:jxlwqq/grpc-lb.gitcd grpc-lb
Pengenalan Makefile
命令 | 说明 |
---|---|
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 到远程仓库中)
Lihat imej:
docker images ls
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
Kerahkan ke kluster:
make kube-deploy # 在集群中部署服务
Lihat Pod:
kubectl get pods
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
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}"
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
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}"
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
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 边车
Lihat Pod:
kubectl get pods
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
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}"
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
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}"
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
Anda boleh lihat , kedua-dua permintaan HTTP dan permintaan RPC sedang melaksanakan muatan.
Bersihkan
make kube-delete istioctl experimental uninstall --purge
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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

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

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

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