由于最近换了一份工作,新公司使用 RPC 框架使用的是 Google 开源的 RPC 框架 grpc。对于 grpc 之前只是听说过,在真实的项目当中并没有使用过。为了能够更好的使用 grpc (当遇到问题,能够快速发现并解决问题),所以准备写一个系列来研究 grpc 。gRPC是一个现代的开源高性能远程过程调用(RPC)框架,可以在任何环境中运行。它可以有效地连接数据中心内和跨数据中心的服务,支            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-21 21:51:36
                            
                                188阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            服务端代码一个简单的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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            最近在学习 rpc 相关的知识,如果让我去从头设计一个 rpc,我从使用者的角度出发,究竟需要去做一下什么工作?第一,RPC 本质上就是一个远程调用,那肯定就需要通过网络来传输数据。虽然传输协议可以有多种选择,但考虑到可靠性的话,我们一般默认采用 TCP 协议。为了屏蔽网络传输的复杂性,我们需要封装一个单独的数据传输模块用来收发二进制数据,这个单独模块我们可以叫做传输模块。第二,用户请求的时候是基            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-27 06:39:29
                            
                                97阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            gRPC 是啥A high performance, open-source universal RPC framework一款高性能的开源 RPC 框架。gRPC 的特点:简单的服务定义:使用 Protocol Buffers(做序列化的工具)来定义服务跨语言跨平台:可以自动生成不同语言对应的 Client Stubs 和 Server Stubs。如下图所示,服务端可以用 C++ 来实现,但是            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-23 13:45:40
                            
                                69阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录1、实践(1) IDEA安装插件(2) 新建.proto文件(3) pom引入依赖(4) 生成代码(5) 创建服务端(6) 创建客户端(7) 测试2、源码(1) protobuf(2) 重要类和接口 Java实现grpc1、实践(1) IDEA安装插件Protobuf Support(2) 新建.proto文件我这里命名为test.proto。 指定生成代码的包路径、接口服务等。 定义了            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-31 21:41:51
                            
                                67阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            gRPC是Google开源的新一代RPC框架,。正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3。虽然目前在工程化方面gRPC还非常不足,但它也值得我们好好研究它,学习他。1. 使用场景按照Google的说法,使用广泛,但主要使用场景还是在移动端:Efficiently connecting polyglot services in microservic            
                
         
            
            
            
            # GRPC Java 源码解析
## 引言
gRPC(Google Remote Procedure Call)是由Google开发的高性能、开源的通用RPC框架。它允许客户端和服务器之间的通信,支持多种语言,包括Java。本文将解析gRPC在Java中的实现原理,并通过一些代码示例来帮助理解。
## gRPC的架构
gRPC基于HTTP/2实现,其架构包含以下几个核心组件:
- **            
                
         
            
            
            
            # Java gRPC源码解析指南
## 1. 事情流程
```mermaid
journey
    title 开发者教小白如何实现"java gRPC源码解析"
    section 确定理解gRPC的基本概念:
      - 开发者介绍gRPC的基本概念和用途
      - 小白学习gRPC的基本概念
    section 获取gRPC源码并进行解析:
      - 开发者说            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-04-21 04:37:41
                            
                                52阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一. 前言  在Java集合框架里面,各种集合的操作很大程度上都离不开Comparable和Comparator,虽然它们与集合没有显示的关系,但是它们只有在集合里面的时候才能发挥最大的威力。下面是开始我们的分析。二. 源码/**
   This interface imposes a total ordering on the objects of each class that
   impl            
                
         
            
            
            
            Java8 Comparator interface接口原理示例源码分析 文章目录Java8 Comparator interface接口原理示例源码分析由来示例中文源码 由来Java 8中的Comparator接口引入了一些新特性和方法来提供更灵活和方便的比较操作。以下是Java 8中Comparator接口的新特性和方法总结:默认方法(Default Methods):Java 8在接口中引入            
                
         
            
            
            
            目录第一步:创建工程1、引入依赖2、引入插件3、工程结构第二步:编写helloword.proto第三步:使用插件生成代码第四步:将文件拷贝到相应的包中第五步:使用生成的代码,编写客户端和服务端1、 服务端代码2、 客户端代码3、运行本小节主要介绍Java中的gRPC快速开始示例。要求jdk版本1.7+.# git地址
git clone -b v1.40.0 https://github.com            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-22 11:33:58
                            
                                174阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             前言:柔光效果可以把一张照片美白化,影楼应该用的比较多。柔光效果用在自己软件中,看GIMP的代码,开始感觉牵扯的比较多,另外找了几个,比如tinyimage,imagestone等。效果也不错,不过看到处理图像大量使用了gdi+,stl,感觉不太合适。再回去认真看GIMP代码,最终成功移植到vc和iOS下。 效果:        采用的是美图秀秀软件下面的一张图,如            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-01 08:56:52
                            
                                13阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在学习grpc源码之前,我们首先需要了解grpc是什么以及它的一些基本原理。gRPC是一种高性能、开源的远程过程调用(RPC)框架,它基于HTTP/2协议,采用Protocol Buffers作为接口定义语言(IDL)。通过使用grpc,我们可以轻松地在不同语言和平台上实现跨网络的服务通信。
接下来,我们将通过以下步骤来学习grpc源码:
| 步骤 | 操作 |
| ------ | ----            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-05-08 11:05:59
                            
                                95阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            GRPC Java源码解析引言1 服务端1.1 逻辑架构1.1.1 概述1.1.2 服务管理(Server Pack)1.1.3 服务注册(Registry Pack)1.1.4 传输逻辑(Transport Pack)1.1.5 网络处理(Handler Pack(io.grpc.netty))1.1.5.1 netty领域1.1.6 网络流(Stream Pack)1.1.7 方法调用(Ca            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 01:23:18
                            
                                115阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            需要具备的知识点       1. Java的网络通信Socket和IO,忘记的赶紧去百度一个基于Socket的聊天的Demo,就差不多了。为什么要学习Socket和IO呢?因为很大部分RPC框架底层就是基于Socke进行通信的,所以他是必不可少的知识点;                   
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-27 09:26:01
                            
                                62阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            目录一 服务发现基础概念1.1  基础概念1.2服务发现的两种模式二 grpc中的服务发现1.1 grpc客户端发起调用1.2  grpc reslover调用流程三 总结 relover调用时序图: 一 服务发现基础概念为什么需要服务发现 在微服务架构中,在生产环境中服务提供方都是以集群的方式对外提供服务,集群中服务的IP随时都可能发生变化,如服务重启,发布,扩缩容            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-27 22:30:30
                            
                                265阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            项目中需要用到grpc作为通信框架,但是在我们项目组中没有一个人对这个grpc有深入的理解。只知道用了GRPC后,调用远程函数就像调用本地函数一样方便,能够像处理同步编程一样处理异步编程。至于,他是怎么实现的,以及网络数据格式是怎样的,他是怎样处理数据流的,需要像TCP一样处理粘包吗,等等一系问题,我们都一无所知。如果就这样使用了这套框架,可能会给项目带来潜在的风险,甚至由于这些风险可能会导致项目            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-07 11:44:35
                            
                                77阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            通过一段时间阅读gRPC c++的源码,对其实现原理算是初窥门境了。在这里通过一系列循序渐进的文章把其中的经验和学习到东西分享出来,希望志同道合之人能够共同交流进步。 gRPC c++源码难吗?个人认为gRPC c++源码算是质量比较高的源码了,google工程师们的抽象和设计能力都能够在其中有所体现。可是阅读其源码还是有不少困难的,个人认为造成源码阅读困难的原因有以下几个:是用C++写            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-12 18:35:41
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在进行grpc源码分析之前,我们首先需要了解grpc是什么以及其基本概念。gRPC是一个高性能、开源和通用的RPC框架,基于HTTP/2协议和Protocol Buffers(protobuf)实现。通过gRPC,我们可以定义服务接口和消息类型,从而实现跨语言、跨平台的高效通信。
接下来,我们将详细介绍如何进行grpc源码分析的步骤,并给出相应的代码示例:
步骤 | 操作
---|---
1            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-05-24 10:17:04
                            
                                92阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            今天聊一下gRPC的服务发现和负载均衡原理相关的话题,不同于Nginx、Lvs或者F5这些服务端的负载均衡策略,gRPC采用的是客户端实现的负载均衡。什么意思呢,对于使用服务端负载均衡的系统,客户端会首先访问负载均衡的域名/IP,再由负载均衡按照策略分发请求到后端具体某个服务节点上。而对于客户端的负载均衡则是,客户端从可用的后端服务节点列表中根据自己的负载均衡策略选择一个节点直连后端服务器。Etc            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-22 21:14:25
                            
                                55阅读
                            
                                                                             
                 
                
                                
                    