gRPC是Google开源的新一代RPC框架,。正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3。虽然目前在工程化方面gRPC还非常不足,但它也值得我们好好研究它,学习他。1. 使用场景按照Google的说法,使用广泛,但主要使用场景还是在移动端:Efficiently connecting polyglot services in microservic            
                
         
            
            
            
            服务端代码一个简单的rpc server示例如下:package main
import (
	"log"
	"net"
	"net/http"
	"net/rpc"
	"github.com/monoxy/rpc/common"
)
func main() {
	server := rpc.NewServer()
	server.Register(new(common.Embed))
	l            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-12 14:17:09
                            
                                127阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            上篇文章中提到了阅读gRPC源码的几大困难,其中数据结构是基础中的基础。如果连这些数据结构的原理和作用都不了解的话,阅读起代码来肯定事倍功半。因此这篇文章对gRPC提供的数据结构进行讲解。 grpc_closure闭包闭包是一些编程语言中提供的功能,如python. closure就是闭包的英文名称.简单的理解,闭包函数将创建闭包时的上下文中的变量与自己绑定在一起,将变量的生存            
                
         
            
            
            
            最近在学习 rpc 相关的知识,如果让我去从头设计一个 rpc,我从使用者的角度出发,究竟需要去做一下什么工作?第一,RPC 本质上就是一个远程调用,那肯定就需要通过网络来传输数据。虽然传输协议可以有多种选择,但考虑到可靠性的话,我们一般默认采用 TCP 协议。为了屏蔽网络传输的复杂性,我们需要封装一个单独的数据传输模块用来收发二进制数据,这个单独模块我们可以叫做传输模块。第二,用户请求的时候是基            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-27 06:39:29
                            
                                97阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             概述gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-26 14:31:05
                            
                                102阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            项目中需要用到grpc作为通信框架,但是在我们项目组中没有一个人对这个grpc有深入的理解。只知道用了GRPC后,调用远程函数就像调用本地函数一样方便,能够像处理同步编程一样处理异步编程。至于,他是怎么实现的,以及网络数据格式是怎样的,他是怎样处理数据流的,需要像TCP一样处理粘包吗,等等一系问题,我们都一无所知。如果就这样使用了这套框架,可能会给项目带来潜在的风险,甚至由于这些风险可能会导致项目            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-07 11:44:35
                            
                                77阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            go语言grpc之client端源码分析一实现grpc.DialClientConn结构体parsedTargetcsMgrblockingpickerbalancerWrapperconns  前面分析了grpc在服务端的源码,这里来分析一下grpc在客户端的源码。相比在服务端的实现,客户端的实现因为多了一些负载均衡的处理,因此逻辑上面会绕一些,接下来在说完之后,然后结合go-zero的使用加            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-12 14:42:55
                            
                                62阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在进行grpc源码分析之前,我们首先需要了解grpc是什么以及其基本概念。gRPC是一个高性能、开源和通用的RPC框架,基于HTTP/2协议和Protocol Buffers(protobuf)实现。通过gRPC,我们可以定义服务接口和消息类型,从而实现跨语言、跨平台的高效通信。
接下来,我们将详细介绍如何进行grpc源码分析的步骤,并给出相应的代码示例:
步骤 | 操作
---|---
1            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-05-24 10:17:04
                            
                                92阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Gin框架是golang的一个常用的web框架,最近一个项目中需要使用到它,所以对这个框架进行了学习。gin包非常短小精悍,不过主要包含的路由,中间件,日志都有了。我们可以追着代码思考下,这个框架是如何一步一步过来的。从http包说起基本上现在的golang的web库都是从http上搭建起来,golang的http包的核心如下:func ListenAndServe(addr string, ha            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-23 21:15:19
                            
                                51阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            每日一谚: 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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            第二章 RPC client源码分析rpc客户端的逻辑很简单,将一个个的调用请求序列化后原子的发送给服务器,有一个专门的gorutine等待服务器应答,这goroutine会将收到的每个应答分发给对应的请求,完成了一次rpc调用。client是基于单个socket连接来,靠channel来实现复用连接以及并发的。而临时的调用对象Call都是保存在Client的map中的,对每个            
                
         
            
            
            
            通过一段时间阅读gRPC c++的源码,对其实现原理算是初窥门境了。在这里通过一系列循序渐进的文章把其中的经验和学习到东西分享出来,希望志同道合之人能够共同交流进步。 gRPC c++源码难吗?个人认为gRPC c++源码算是质量比较高的源码了,google工程师们的抽象和设计能力都能够在其中有所体现。可是阅读其源码还是有不少困难的,个人认为造成源码阅读困难的原因有以下几个:是用C++写            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-12 18:35:41
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            子协程主要工作就是处理HTTP2 Frame,当收到Header Frame后则根据Header头中携带            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-04-22 07:03:54
                            
                                293阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             文章目录工作流程工作模式http模式服务器模式  本篇文章旨在通过学习rpc包和github上的一个rpc小项目,熟悉和学习golang中各个包的使用 工作流程通过阅读官方文档,了解了rpc的基本工作模式第一步,建立一个用于远程调用的包,存放仅供远程调用使用的方法和类型-第二步,实例化包的对象,并在rpc中注册该包,以便之后的调用第三步,建立一个服务端,接收客户端的请求,使用编码器解析请求后,根            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-24 05:57:27
                            
                                14阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            本文主要介绍了 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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、gRPC是什么?gRPC,其实就是RPC框架的一种,前面带了一个g,代表是RPC中的大哥,龙头老大的意思,另外g也有global的意思,意思是全球化比较fashion,是一个高性能、开源和通用的 RPC 框架,面向服务端和移动端,基于 HTTP/2 设计。RPC框架是什么?RPC 框架说白了就是让你可以像调用本地方法一样调用远程服务提供的方法,而不需要关心底层的通信细节。简单地说就让远程服务调            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-21 16:37:37
                            
                                262阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            目录 
     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阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言单例模式是最简单的一个模式,指的是全局只有一个实例,并且它负责创建自己的对象。单例模式不仅有利于减少内存开支,还有减少系统性能开销、防止多个实例产生冲突等优点。 因为单例模式保证了实例的全局唯一性,而且只被初始化一次,所以比较适合全局共享一个实例,且只需要被初始化一次的场景,例如数据库实例、全局配置、全局任务池等。两个方式单例模式又分为饿汉方式和懒汉方式。饿汉方式饿汉方式指全局的单例实例在包被