文章目录工作流程工作模式http模式服务器模式 本篇文章旨在通过学习rpc包和github上的一个rpc小项目,熟悉和学习golang中各个包的使用 工作流程通过阅读官方文档,了解了rpc的基本工作模式第一步,建立一个用于远程调用的包,存放仅供远程调用使用的方法和类型-第二步,实例化包的对象,并在rpc中注册该包,以便之后的调用第三步,建立一个服务端,接收客户端的请求,使用编码器解析请求后,根
转载
2024-06-24 05:57:27
14阅读
摘要在上一篇文章中,我们聊了聊gRPC是怎么管理一条从Client到Server的连接的。我们聊到了gRPC拥有Resolver,用来解析地址;拥有Balancer,用来做负载均衡。在这一篇文章中,我们将从代码的角度来分析gRPC是怎么设计Resolver和Balancer的,并会从头到尾的梳理一遍连接是怎么建立的。1 DialContextDialContext是客户端建立连接的入口函数,我们看
每日一谚: In Go, interfaces are usually one or two (or zero) methods.go中文网
原创
2021-12-10 10:56:39
3998阅读
每日一谚: In Go, interfaces are usually one or two (or zero) methods.go中文网每日资讯--2021-12-07 一、Go语言中文网Go playground 再增强Go:详解布隆过滤器原理与实现二、亚军进化史Go技术日报(2021-12-02/03)——GoLand 2021.3 正式发布
原创
2022-01-11 09:46:39
46阅读
目录一、压缩
1.Server端所有方法压缩
2.Server单独方法压缩
3.Client请求内容压缩
二、使用JSON通信
1.方法描述使用JSON编译
2.JSON编译具体过程
三、手动流量控制
1.Consuming Side
2.Producing Side
四、系列文章本文继续整理gRPC的使用,走查解读官方给出的压缩示例、使用J
转载
2024-04-14 17:06:30
0阅读
控制并发有两种经典的方式,
转载
2022-10-13 10:02:47
53阅读
Context通常被译作上下文,它是一个比较抽象的概念。在讨论链式调用技术时也经常会提到上下文。一般理解为程序单元的一个运行状态、现场、快照,而翻译中上下又很好地诠释了其本质,上下则是存在上下层的传递,上会把内容传递给下。在Go语言中,程序单元也就指的是Goroutine。 在Go语言中控制并发有两
转载
2018-08-18 11:48:00
110阅读
2评论
1、什么是Context Context通常被译作上下文,它是一个比较抽象的概念。在公司技术讨论时也经常会提到上下文。一般理解为程序单元的一个运行状态、现场、快照,而翻译中上下又很好地诠释了其本质,上下上下则是存在上下层的传递,上会把内容传递给下。在Go语言中,程序单元也就指的是Goroutine。
转载
2020-02-07 14:36:00
116阅读
2评论
错误现象描述:在使用c++的客户端向golang的服务端发送远程调用时,显示:/home/zry/gRPC/grpc-v1.45.2/examples/cpp/DeviceData/greeter_client.cc83
12: unknown service DeviceData.DeviceDataService
Greeter 接收到: RPC 失败这里的unknown service De
项目中需要用到grpc作为通信框架,但是在我们项目组中没有一个人对这个grpc有深入的理解。只知道用了GRPC后,调用远程函数就像调用本地函数一样方便,能够像处理同步编程一样处理异步编程。至于,他是怎么实现的,以及网络数据格式是怎样的,他是怎样处理数据流的,需要像TCP一样处理粘包吗,等等一系问题,我们都一无所知。如果就这样使用了这套框架,可能会给项目带来潜在的风险,甚至由于这些风险可能会导致项目
转载
2024-03-07 11:44:35
77阅读
一、概念我们知道协程是独立执行的,他们之间没有通信。协程间必须通过通信协调/同步他们的工作。1、协程间通过通道(channel)来通信协程可以使用共享变量来通信,但是在Go中并不提倡这样做,因为这种方式给所有的共享内存的多线程都带来了困难。而Go是通过一种特殊的类型,通道(channel),一个可以用于发送类型化数据的管道,由其负责协程之间的通信,从而避开所有由共享内存导致的陷阱;这种通过通道进行
转载
2024-06-01 19:43:31
49阅读
golang中Context的使用场景context在Go1.7之后就进入标准库中了。它主要的用处如果用一句话来说,是在于控制goroutine的生命周期。当一个计算任务被goroutine承接了之后,由于某种原因(超时,或者强制退出)我们希望中止这个goroutine的计算任务,那么就用得到这个Context了。关于Context的四种结构,CancelContext,TimeoutContex
转载
2024-08-06 09:27:42
118阅读
本文主要介绍了 gPRC中 的拦截器(Interceptor)和具体使用实例。1. 概述gRPC 系列相关代码见 GithubgRPC 提供了 Interceptor 功能,包括客户端拦截器和服务端拦截器。可以在接收到请求或者发起请求之前优先对请求中的数据做一些处理后再转交给指定的服务处理并响应,很适合在这里处理验证、日志等流程。gRPC-go 在 v1.28.0版本增加了多 intercepto
转载
2024-04-30 20:56:28
43阅读
QA:grpc的服务端多线程处理实现方式?或者grpc对底层的每个请求处理本身就是多线程?--------------------------------
原创
2023-05-03 03:19:44
91阅读
目录
go grpc入门1.1 GRPC技术栈2.1 Hello gRPC2.1.1 protobuf grpc插件2.1.2 生成代码2.1.3 gRPC服务端2.1.4 gRPC客户端3.1 gRPC流3.1.1 生成Streaming RPC3.1.2 服务端3.1.3 客户端4.1 gRPC认证4.1.1 Request Response认证4.1.1.1 原理4.1
转载
2024-04-20 22:21:31
155阅读
go语言grpc之client端源码分析一实现grpc.DialClientConn结构体parsedTargetcsMgrblockingpickerbalancerWrapperconns 前面分析了grpc在服务端的源码,这里来分析一下grpc在客户端的源码。相比在服务端的实现,客户端的实现因为多了一些负载均衡的处理,因此逻辑上面会绕一些,接下来在说完之后,然后结合go-zero的使用加
转载
2024-02-12 14:42:55
62阅读
一、gRPC是什么?gRPC,其实就是RPC框架的一种,前面带了一个g,代表是RPC中的大哥,龙头老大的意思,另外g也有global的意思,意思是全球化比较fashion,是一个高性能、开源和通用的 RPC 框架,面向服务端和移动端,基于 HTTP/2 设计。RPC框架是什么?RPC 框架说白了就是让你可以像调用本地方法一样调用远程服务提供的方法,而不需要关心底层的通信细节。简单地说就让远程服务调
转载
2024-06-21 16:37:37
262阅读
概述 context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routine树。每个Context应该视为只读的,通过WithCancel、With
转载
2024-04-20 15:34:33
52阅读
gRPC 是一个高性能、通用的开源RPC框架,其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。本文作者深入研究了 gRPC 协议,对协议本身作出解构。gRPC 是基于 HTTP/2 协议的,要深刻理解 gRPC,理解下 HTTP/2 是必要的,这
转载
2024-04-12 05:24:16
0阅读
Type Context 与done Channel 机制类似实现取消机制, 一层封装, 解决问题 类似于done Channel, 取消goroutinue 传递取消的原因: 超时或者任务完成 优雅地组成取消机制的调度树(所有Ctx只能向下触发取消机制) type Context interfac ...
转载
2021-09-01 15:18:00
100阅读
2评论