การใช้งาน GO ของ GRPC: ประสิทธิภาพสูง, โอเพ่นซอร์ส, เฟรมเวิร์ก RPC ทั่วไปที่ทำให้มือถือและ HTTP/2 ก่อน สำหรับข้อมูลเพิ่มเติมดูเอกสาร GO GRPC หรือข้ามไปยังจุดเริ่มต้นอย่างรวดเร็วโดยตรง
เพียงเพิ่มการนำเข้าต่อไปนี้ไปยังรหัสของคุณจากนั้น go [build|run|test] จะดึงการอ้างอิงที่จำเป็นโดยอัตโนมัติ:
import "google.golang.org/grpc"หมายเหตุ: หากคุณพยายามเข้าถึง
grpc-goจาก ประเทศจีน ให้ดูคำถามที่พบบ่อยด้านล่าง
โดเมน golang.org อาจถูกบล็อกจากบางประเทศ go get โดยปกติจะสร้างข้อผิดพลาดเช่นสิ่งต่อไปนี้เมื่อสิ่งนี้เกิดขึ้น:
$ go get -u google.golang.org/grpc
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)ในการสร้างรหัสไปมีหลายตัวเลือก:
ตั้งค่า VPN และเข้าถึง google.golang.org ผ่านสิ่งนั้น
ด้วยการสนับสนุนโมดูล GO: เป็นไปได้ที่จะใช้คุณสมบัติ replace ของ go mod เพื่อสร้างนามแฝงสำหรับแพ็คเกจ golang.org ในไดเรกทอรีโครงการของคุณ:
go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest
go mod tidy
go mod vendor
go build -mod=vendorอีกครั้งสิ่งนี้จะต้องทำสำหรับการพึ่งพาสกรรมกริยาทั้งหมดที่โฮสต์บน golang.org เช่นกัน สำหรับรายละเอียดโปรดดูที่ปัญหา Golang/Go #28652
โปรดอัปเดตเป็น GRPC-GO เวอร์ชันล่าสุดโดยใช้ go get google.golang.org/grpc
เครื่องบันทึกเริ่มต้นถูกควบคุมโดยตัวแปรสภาพแวดล้อม เปิดทุกอย่างเช่นนี้:
$ export GRPC_GO_LOG_VERBOSITY_LEVEL=99
$ export GRPC_GO_LOG_SEVERITY_LEVEL=info"code = Unavailable desc = transport is closing"ข้อผิดพลาดนี้หมายถึงการเชื่อมต่อที่ RPC ใช้ถูกปิดและมีสาเหตุที่เป็นไปได้มากมายรวมถึง:
มันอาจเป็นเรื่องยากที่จะดีบักสิ่งนี้เนื่องจากข้อผิดพลาดเกิดขึ้นทางฝั่งไคลเอ็นต์ แต่สาเหตุของการเชื่อมต่อที่ถูกปิดอยู่ทางฝั่งเซิร์ฟเวอร์ เปิดการบันทึก ทั้งไคลเอนต์และเซิร์ฟเวอร์ และดูว่ามีข้อผิดพลาดในการขนส่งหรือไม่