前言系统分布式已经成为程序员的家常,将大型单体划分为相对简单的小模块,分散系统能力,提升系统扩展性、功能模块复用性等;各功能模块之间肯定会有很多数据共享和交互的应用场景,那就避免不了各模块之间的通信;目前用的比较多的方式是HTTP(Restful API)接口、消息队列等,而HTTP(Restful API)接口应该是目前应用比较广泛的,相对之前的webservice和WCF都显得比较轻量级,而且
转载 2024-05-06 12:58:49
196阅读
服务端代码一个简单的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是Google开源的新一代RPC框架,。正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3。虽然目前在工程化方面gRPC还非常不足,但它也值得我们好好研究它,学习他。1. 使用场景按照Google的说法,使用广泛,但主要使用场景还是在移动端:Efficiently connecting polyglot services in microservic
转载 1月前
369阅读
在进行grpc源码分析之前,我们首先需要了解grpc是什么以及其基本概念。gRPC是一个高性能、开源和通用的RPC框架,基于HTTP/2协议和Protocol Buffers(protobuf)实现。通过gRPC,我们可以定义服务接口和消息类型,从而实现跨语言、跨平台的高效通信。 接下来,我们将详细介绍如何进行grpc源码分析的步骤,并给出相应的代码示例: 步骤 | 操作 ---|--- 1
原创 2024-05-24 10:17:04
92阅读
 概述gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个
转载 2024-03-26 14:31:05
102阅读
第二章 RPC client源码分析rpc客户端的逻辑很简单,将一个个的调用请求序列化后原子的发送给服务器,有一个专门的gorutine等待服务器应答,这goroutine会将收到的每个应答分发给对应的请求,完成了一次rpc调用。client是基于单个socket连接来,靠channel来实现复用连接以及并发的。而临时的调用对象Call都是保存在Client的map中的,对每个
上篇文章中提到了阅读gRPC源码的几大困难,其中数据结构是基础中的基础。如果连这些数据结构的原理和作用都不了解的话,阅读起代码来肯定事倍功半。因此这篇文章对gRPC提供的数据结构进行讲解。 grpc_closure闭包闭包是一些编程语言中提供的功能,如python. closure就是闭包的英文名称.简单的理解,闭包函数将创建闭包时的上下文中的变量与自己绑定在一起,将变量的生存
Gin框架是golang的一个常用的web框架,最近一个项目中需要使用到它,所以对这个框架进行了学习。gin包非常短小精悍,不过主要包含的路由,中间件,日志都有了。我们可以追着代码思考下,这个框架是如何一步一步过来的。从http包说起基本上现在的golang的web库都是从http上搭建起来,golang的http包的核心如下:func ListenAndServe(addr string, ha
转载 2024-03-23 21:15:19
51阅读
最近在学习 rpc 相关的知识,如果让我去从头设计一个 rpc,我从使用者的角度出发,究竟需要去做一下什么工作?第一,RPC 本质上就是一个远程调用,那肯定就需要通过网络来传输数据。虽然传输协议可以有多种选择,但考虑到可靠性的话,我们一般默认采用 TCP 协议。为了屏蔽网络传输的复杂性,我们需要封装一个单独的数据传输模块用来收发二进制数据,这个单独模块我们可以叫做传输模块。第二,用户请求的时候是基
转载 2023-10-27 06:39:29
97阅读
通过一段时间阅读gRPC c++的源码,对其实现原理算是初窥门境了。在这里通过一系列循序渐进的文章把其中的经验和学习到东西分享出来,希望志同道合之人能够共同交流进步。 gRPC c++源码难吗?个人认为gRPC c++源码算是质量比较高的源码了,google工程师们的抽象和设计能力都能够在其中有所体现。可是阅读其源码还是有不少困难的,个人认为造成源码阅读困难的原因有以下几个:是用C++写
转载 2024-06-12 18:35:41
63阅读
# gRPC Java 源代码分析 ## 引言 gRPC是一种高性能、通用的开源RPC框架,由Google开发并开源,它支持多种编程语言,包括Java。本文将通过对gRPC Java源代码的分析,介绍gRPC的基本概念和使用方法,并展示一些示例代码。 ## 什么是gRPC gRPC是Google开源的一种高性能、通用的RPC(Remote Procedure Call)框架。RPC是一种用
原创 2023-12-24 05:14:30
217阅读
一.gRPC简介 gRPC和RPC区别在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。
转载 2024-03-18 09:33:29
413阅读
Arthas ByteKit 深度解读(1):基本原理介绍前言本文由整体到局部的思路展开分析Arthas ByteKit 字节码处理框架,结合类图和数据流图,介绍ByteKit字节码处理流程及核心对象。简介Arthas ByteKit 为新开发的字节码工具库,基于ASM提供更高层的字节码处理能力,面向诊断/APM领域,不是通用的字节码库。ByteKit期望能提供一套简洁的API,让开发人员可以比较
一、网络模型 1.1 普适性的rpc网络模型 上面的图是一个极简的网络模型图,当前大部分rpc的网络库都要经历上面的部分。 bind常规操作 listen描述符建立成功后会注册到epoll模型,等待链接接入 accept成功建立 accept描述符注册到epoll模型,等待请求 请求到来,描述符可读 ...
转载 2021-09-03 16:40:00
1984阅读
2评论
RPC 框架原理RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。RPC 框架的调用原理图如下所示:业界主流的 RPC 框架整体上分为三类:1.支持多语言的 RPC 框架,比较成熟的有 Googl
原创 2022-05-19 10:36:56
582阅读
# Fabric 1.0源代码笔记 之 -gRPC(Fabric中注册的gRPC Service)Peer节点中注册的gRPC Service,包括:* Events Service(事件服务):Chat* Admin Service(管理服务):
原创 2021-07-14 11:18:13
82阅读
# Fabric 1.0源代码笔记 之 -gRPC(Fabric中注册的gRPC Service)Peer节点中注册的gRPC Service,包括:* Even
原创 2022-04-19 17:27:15
183阅读
前言现代的软件服务大多数是分布式应用程序,通过暴露自己的 API 对内或对外提供了一系列的功能点。服务与服务之间有时是跨语言、跨平台通信的。为了解决这些复杂场景,市面上也涌现了有很多解决方案。比如构建 RESTful 服务,将服务能力转化为资源集合;也有面向函数调用的客户端-服务器模式:远程过程调用(Remote Procedure Calls)。今天要介绍的 gRPC 就是后者的演变,一个非常受
转载 2024-03-28 10:14:16
66阅读
        此篇中主要简单实现了,grpc的4种交互,包括普通请求,客户端流,服务端流,和双向流。其中服务端采用go语言实现,客户端将采用java实现。        在此篇中基本可以了解到protobuf的基本知识,以及多文件编译上的一些问题。以及在gr
转载 2024-03-20 10:18:16
112阅读
所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。grpc原理: 比如 A (client) 调用 B (server) 提供的remoteAdd方法: 首先,A与B之间建立一个TCP连接; 然后,A把需要调用的
转载 2024-02-18 08:16:38
65阅读
  • 1
  • 2
  • 3
  • 4
  • 5