คำถามติดแท็ก grpc

2
เหตุใดจึงจำเป็นและไม่ใส่ก็ได้ถูกลบใน Protocol Buffers 3
ฉันเพิ่งใช้gRPCกับproto3และฉันสังเกตเห็นว่าrequiredและoptionalถูกลบในไวยากรณ์ใหม่ ใครบ้างกรุณาอธิบายว่าทำไมลบ / จำเป็นต้องใช้จะถูกลบใน proto3 ข้อ จำกัด ประเภทนี้ดูเหมือนจะจำเป็นเพื่อให้คำจำกัดความแข็งแกร่ง ไวยากรณ์ proto2: message SearchRequest { required string query = 1; optional int32 page_number = 2; optional int32 result_per_page = 3; } ไวยากรณ์ proto3: syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; }

3
ฉันสามารถกำหนดการเรียก grpc ด้วยคำขอหรือการตอบกลับที่ว่างเปล่าได้หรือไม่
ไวยากรณ์ rpc ใน proto3 อนุญาตคำขอหรือการตอบกลับที่เป็นโมฆะหรือไม่ เช่นฉันต้องการสิ่งต่อไปนี้เทียบเท่า: rpc Logout; rpc Status returns (Status); rpc Log (LogData); หรือฉันควรสร้างประเภท null? message Null {}; rpc Logout (Null) returns (Null); rpc Status (Null) returns (Status); rpc Log (LogData) returns (Null);

3
protobuf กับ gRPC
ฉันพยายามทำความเข้าใจ protobuf และ gRPC และฉันจะใช้ทั้งสองอย่างได้อย่างไร คุณช่วยฉันเข้าใจสิ่งต่อไปนี้ได้ไหม: พิจารณาโมเดล OSIว่าอะไรอยู่ที่ไหนเช่น Protobuf อยู่ที่เลเยอร์ 4? เมื่อนึกถึงการถ่ายโอนข้อความว่า "โฟลว์" เป็นอย่างไร gRPC กำลังทำอะไรในสิ่งที่ protobuf คิดถึง? หากผู้ส่งใช้ protobuf เซิร์ฟเวอร์จะใช้ gRPC ได้หรือไม่หรือ gRPC จะเพิ่มสิ่งที่เฉพาะไคลเอ็นต์ gRPC เท่านั้นที่สามารถส่งมอบได้ หาก gRPC สามารถทำให้การสื่อสารแบบซิงโครนัสและอะซิงโครนัสเป็นไปได้ Protobuf มีไว้สำหรับการมาร์แชลดังนั้นจึงไม่มีส่วนเกี่ยวข้องกับสถานะ - จริงหรือเท็จ? ฉันสามารถใช้ gRPC ในแอปพลิเคชันส่วนหน้าที่สื่อสารแทน REST หรือ GraphQL ได้หรือไม่ ฉันรู้แล้ว - หรือสมมติว่าฉันทำ - ว่า: Protobuf โปรโตคอลไบนารีสำหรับการแลกเปลี่ยนข้อมูล ออกแบบโดย Google …

4
GRPC แตกต่างจาก REST อย่างไร?
ฉันกำลังอ่านคำอธิบายของ GRPCและแผนผังนี้เป็นที่สนใจ: เลเยอร์การขนส่งทำงานอย่างไร? ถ้ามันผ่านเครือข่าย ... ทำไมถึงเรียกว่า RPC? ที่สำคัญกว่านั้นสิ่งนี้แตกต่างจาก REST ที่ใช้ API สำหรับชั้นบริการอย่างไร (คลาสในไคลเอนต์ที่มีเมธอดที่สร้างคำขอ http)
98 rest  grpc 

2
gRPC (HTTP / 2) เร็วกว่า REST ด้วย HTTP / 2 หรือไม่
มีเป้าหมายที่จะแนะนำการขนส่งและโปรโตคอลชั้นโปรแกรมที่ดีในของมันแฝงและเครือข่ายผ่าน ปัจจุบันแอปพลิเคชันใช้RESTกับHTTP / 1.1และเราพบว่ามีเวลาแฝงสูง ฉันต้องการที่จะแก้ไขปัญหาความล่าช้านี้และผมเปิดให้ใช้อย่างใดอย่างgRPC (HTTP / 2)หรือREST / HTTP2 HTTP / 2: มัลติเพล็กซ์ การเชื่อมต่อ TCP เดียว ไบนารีแทนข้อความ การบีบอัดส่วนหัว ดันเซิร์ฟเวอร์ ฉันตระหนักถึงข้อดีทั้งหมดข้างต้น คำถามที่ 1:หากฉันใช้REST กับ HTTP / 2ฉันมั่นใจว่าฉันจะได้รับการปรับปรุงประสิทธิภาพอย่างมีนัยสำคัญเมื่อเทียบกับREST ที่มี HTTP / 1.1แต่จะเปรียบเทียบกับgRPC (HTTP / 2) ได้อย่างไร ฉันทราบด้วยว่า gRPC ใช้โปรโตบัฟเฟอร์ซึ่งเป็นเทคนิคการจัดลำดับไบนารีที่ดีที่สุดสำหรับการส่งข้อมูลที่มีโครงสร้างบนสาย โปรโตบัฟเฟอร์ยังช่วยในการพัฒนาวิธีการไม่เชื่อเรื่องพระเจ้าทางภาษา ฉันเห็นด้วยกับสิ่งนั้นและฉันสามารถใช้คุณสมบัติเดียวกันใน REST โดยใช้ graphQL แต่ข้อกังวลของฉันอยู่ที่การทำให้เป็นอนุกรม: คำถามที่ 2:เมื่อHTTP / 2ใช้คุณสมบัติไบนารีนี้การใช้โปรโตบัฟเฟอร์จะให้ประโยชน์เพิ่มเติมจาก HTTP / …

9
เหตุใดฉันจึงได้รับข้อผิดพลาด GRPC นี้“ คำเตือน: EmulatorService.cpp: 448: ไม่พบใบรับรองไฟล์” เมื่อฉันเริ่มโปรแกรมจำลอง
สวัสดีทุกคนฉันใช้ Java และ Android Studio มาสองสามเดือนแล้วมีคนช่วยฉันแก้ไขข้อผิดพลาดนี้ได้ไหม มันเกิดขึ้นทุกครั้งที่ตัวจำลองเริ่มทำงาน ขอบคุณ Emulator: เริ่มเซิร์ฟเวอร์ GRPC ที่ 127.0.0.1:8554 ตัวจำลอง: ตัวจำลอง: คำเตือน: EmulatorService.cpp: 448: ไม่สามารถหาไฟล์ใบรับรอง: C: \ Users \ Sawye.android \ emulator-grpc.cer จะถูกปิดใช้งาน
30 grpc 

1
ฉันจะสร้างไฟล์ .proto หรือใช้ 'Code First gRPC' จากคลาส C # ได้อย่างไร
ฉันต้องการใช้ gRPC กับ. NET core 3 ในแอปพลิเคชันเว็บหลัก asp.net ฉันจะสร้างไฟล์ .proto ที่จำเป็นจากวัตถุคลาส C # และโมเดลที่มีอยู่ได้อย่างไร ฉันไม่ต้องการเขียนไฟล์ .proto อีกครั้งซึ่งทำมิเรอร์โค้ดที่มีอยู่ฉันต้องการให้ไฟล์. proto นั้นสร้างขึ้นโดยอัตโนมัติจากคลาสและวัตถุโมเดล ฉันเรียกวิธีนี้เพื่อลงทะเบียนระดับบริการของฉัน builder.MapGrpcService<MyGrpcService>(); public class MyGrpcService { public Task<string> ServiceMethod(ModelObject model, ServerCallContext context) { return Task.FromResult("It Worked"); } } ModelObjectมี[DataContract]และ[DataMember]มีคุณสมบัติการสั่งซื้อ เป็นไปได้ไหม ทุกตัวอย่างที่ฉันเห็นออนไลน์เริ่มต้นด้วย.protoไฟล์ ฉันได้กำหนดวิธีการบริการที่ต้องการในMyGrpcServiceชั้นเรียนแล้ว แต่นี่อาจจะย้อนกลับไปที่สิ่งที่เป็นวิธีมาตรฐานในการทำสิ่งต่าง ๆ ... สิ่งที่ต้องการการ remoting .NET แบบเก่านั้นเหมาะอย่างยิ่งที่คุณสามารถขออินเทอร์เฟซจากจุดปลายทางระยะไกลและใช้gRPCเพื่อสื่อสารไปมาอย่างน่าอัศจรรย์แต่บางทีมันอาจดูง่ายเกินไป

3
GRPC: สร้างไคลเอนต์ความเร็วสูงใน Java / Scala
ฉันมีบริการที่โอนข้อความในอัตราที่ค่อนข้างสูง ขณะนี้มีให้บริการโดย akka-tcp และสร้างข้อความ 3.5M ต่อนาที ฉันตัดสินใจที่จะลอง grpc โชคไม่ดีที่มันส่งผลให้ปริมาณงานน้อยลง: ~ 500k ข้อความต่อนาทียิ่งน้อยลง คุณช่วยแนะนำวิธีเพิ่มประสิทธิภาพได้ไหม การตั้งค่าของฉัน ฮาร์ดแวร์ : 32 แกน 24Gb กอง รุ่น grpc: 1.25.0 รูปแบบข้อความและจุดสิ้นสุด ข้อความนั้นเป็นฐานสองหยด สตรีม 100K - 1M และข้อความอื่น ๆ อีกมากมายในคำขอเดียวกัน (แบบอะซิงโครนัส) เซิร์ฟเวอร์ไม่ตอบสนองกับสิ่งใดลูกค้าใช้ผู้สังเกตการณ์แบบไม่มี op service MyService { rpc send (stream MyMessage) returns (stream DummyResponse); } message MyMessage { int64 …
9 java  scala  grpc 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.