
微服务
文章平均质量分 94
Gopher-毛
通信专业本科,23年毕业。目前全身心转码,go 服务器开发工程师。所以基本不会再更新和回答通信相关的任何内容,望海涵,江山代有才人出,肯定有很多比我更优秀的人,望大家寻找新的通信大佬博主。我说:如果有不可能,那就去创造!
展开
-
【go微服务】protobuf中oneof、WrapValue和FieldMask的使用
假设我的博客系统支持为读者朋友们发送博客更新的通知信息,系统支持通过邮件和短信两个方式发送通知。但每一次只允许使用一种方式发送通知。在这个场景下我们就可以使用oneof字段来定义通知的方式——notice_way。// 通知读者的消息}}类似这种场景推荐使用中定义的WrapValue,本质上就是使用自定义message代替基本类型。// ...//}//}// ...在这个示例中,我们就可以使用Int64Value代替int64,修改后的protobuf文件如下。}原创 2022-12-02 16:56:12 · 2519 阅读 · 2 评论 -
【go微服务】Protocol Buffers V3中文语法指南
首先让我们看一个非常简单的例子。假设你想要定义一个搜索请求消息格式,其中每个搜索请求都包含一个查询词字符串、你感兴趣的查询结果所在的特定页码数和每一页应展示的结果数。下面是用于定义这个消息类型的.proto文件。}文件的第一行指定使用proto3语法: 如果不这样写,protocol buffer编译器将假定你使用proto2。这个声明必须是文件的第一个非空非注释行。消息定义指定了三个字段(名称/值对) ,每个字段表示希望包含在此类消息中的每一段数据。每个字段都有一个名称和一个类型。原创 2022-11-25 16:23:59 · 995 阅读 · 0 评论 -
【go微服务】gRPC
像许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以通过参数和返回类型远程调用的方法。默认情况下,gRPC 使用作为接口定义语言(IDL)来描述服务接口和有效负载消息的结构。可以根据需要使用其他的IDL代替。例如,下面使用 protocol buffers 定义了一个服务。}}}在gRPC中你可以定义四种类型的服务方法。普通 rpc,客户端向服务器发送一个请求,然后得到一个响应,就像普通的函数调用一样。服务器流式 rpc,其中客户端向服务器发送请求,并获得一个流来读取一系列消息。原创 2022-11-11 12:28:07 · 1638 阅读 · 1 评论 -
【go微服务】RPC的原理与Go RPC
RPC(Remote Procedure Call),即远程过程调用。它允许像调用本地服务一样调用远程服务。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。首先与RPC(远程过程调用)相对应的是本地调用。原创 2022-11-11 12:09:45 · 3348 阅读 · 1 评论 -
【微服务】http与RPC
纯裸TCP是能收发数据,但它是个无边界的数据流,上层需要定义消息格式用于定义消息边界。于是就有了各种协议,HTTP和各类RPC协议就是在TCP之上定义的应用层协议。RPC本质上不算是协议,而是一种调用方式,而像gRPC和thrift这样的具体实现,才是协议,它们是实现了RPC调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时RPC有很多种实现方式,不一定非得基于TCP协议。从发展历史来说,**HTTP主要用于b/s架构,而RPC更多用于c/s架构。性能HTTP2.0在。......原创 2022-07-24 11:27:41 · 652 阅读 · 2 评论