gRPC是现代分布式系统中的一项重要技术,尤其在Java环境中表现出色。它提供了高效的网络通信机制,使得微服务架构中的服务间调用变得更加便捷和高效。在这篇博文中,我将详细记录我们在项目中使用gRPC的过程,包括从初始的技术痛点,到演进、架构设计、性能优化、故障回顾,最后总结出可复用的方法论。
## 背景定位
随着业务的快速增长,我们最初的架构设计逐渐显露出一些技术痛点。首先,由于使用HTTP/            
                
         
            
            
            
              Grpc是googe开发的,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。新公司的项目服务之间的调用使用的Grpc来实现服务间的调用,这边一开始接到的工作内容是基于Nginx实现Grpc服务端的负载均衡。Nginx的1.13及以上版本是支持grpc的反向代理和负载均衡的。但是公司的nginx服务器的版本是1.10的,所以没办法直接使用grpc的代理。只能使用更底层的tcp层的负载            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-23 21:05:19
                            
                                215阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 官方文档地址 https://grpc.io/ 中文文档地址 gRPC 是什么?(转自官方文档) 在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-14 14:25:50
                            
                                126阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1 前言之前在《Protobuf入门与使用示例,高性能的序列化框架》这篇文章中,我们介绍了Protobuf的概念,以前如何在Java中通过Protobuf序列化和反序列化对象。Protobuf的一个重要应用场景就是gPRC,它是一个开源的、高性能的远程过程调用(RPC,Remote Procedure Call)框架。gPRC支持多种语言,如Java、C++、Python等。本文通过一步步,从pr            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 01:20:14
                            
                                1237阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            .protorpc methodRequestStream(stream HelloRequest) returns (HelloReply){}服务端@Component
public class Greeter extends GreeterGrpc.GreeterImplBase implements InitializingBean {
 /**
     * StreamObserver            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-07 17:18:54
                            
                                190阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、环境准备安装protocbuf下载地址选择对应的版本下载安装,这里我选择3.17.2选择对应的压缩包解压 配置环境变量 变量名 :PROTOCBUF_HOME 变量值:D:\protoc-3.19.1-win64找到系统变量中的path变量,选中后点击编辑,新增:%PROTOBUF_HOME%\bin安装protocbuf插件从idea官网下载插件二、gRPC项目构建项目结构创建maven父工            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 01:32:55
                            
                                151阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            GRPC基本使用GRPC介绍 GRPC使用protocol buffer进行接口定义和底层信息交换。客户端可以直接调用服务端的方法,就像调用本地方法一样。在服务端实现这个接口并且运行一个grpc服务来处理客户端的IO调用。客户端有一个存根(stub),它提供与服务端相同的方法。官网grpc介绍:https://grpc.io/docs/what-is-grpc/introduction/安装先决条            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-02 22:29:16
                            
                                92阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            gRPC介绍gRPC 基于 /2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。gRPC有四中服务方法:Unary RPCs,一元RPC。客户端发送一个请求到服务端,服务端响应一个请求。rpc getUser (User) returns (User) {}Server streaming RPCs            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-06-20 17:20:00
                            
                                594阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ## Java gRPC使用指南
### 1. 概述
在本文中,我将向你介绍如何使用Java gRPC进行开发。gRPC是一种高性能、开源的远程过程调用(RPC)框架,它基于Google的Protocol Buffers(protobuf)和HTTP/2协议。使用gRPC,你可以定义服务和消息,然后自动生成相应的Java代码来进行通信。下面是整个过程的流程图:
```mermaid
pie            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-11-18 14:25:25
                            
                                45阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本文通过一个简单的示例,了解如何在Go中使用gRPC。1、前期准备前提运行 $ go version查看go语言版本,gRPC要求go 语言最低版本为1.5安装gRPC使用命令行安装  * 使用以下命令安装gRPC: $ go get google.golang.org/grpc安装proto3  1)安装用于生成gRPC服务代码的protoc编译器。最简单的方法是从这里下载protoc-<            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-20 07:04:00
                            
                                22阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # gRPC使用Java
gRPC是一种高性能、开源的远程过程调用(RPC)框架,由Google开发。它使用Protocol Buffers(简称ProtoBuf)作为接口定义语言(IDL),支持多种编程语言。本文将介绍如何使用Java编写gRPC应用程序。
## 简介
gRPC基于HTTP/2协议,使用ProtoBuf进行序列化和反序列化,提供了高效、强大的跨语言远程调用能力。它的主要特点            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-12-17 08:36:34
                            
                                49阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Java使用gRPC
## 简介
gRPC是Google开源的一种高性能、通用的开源RPC框架。它基于Protocol Buffers(简称protobuf)序列化协议,并支持多种编程语言,如Java、C++、Python等。gRPC提供了强大的功能和灵活的接口,可以用于构建分布式系统、微服务架构等。
本文将介绍如何在Java中使用gRPC框架来构建一个简单的RPC服务和客户端,并提供代            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-01-03 03:56:26
                            
                                57阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            gRPC SkyLBgRPC 作为一款高性能、通用的 RPC 框架,相比传统的RPC框架有着自己天然的优势:protobuf二进制消息,性能好/效率高(空间和时间效率都很不错);proto文件生成目标代码,简单易用;序列化反序列化直接对应程序中的数据类,不需要解析后在进行映射(XML,JSON都是这种方式);支持向前兼容(新加字段采用默认值)和向后兼容(忽略新加字段),简化升级;支持多种语言(可以            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-20 19:22:54
                            
                                55阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本文使用gRPC框架Java语言版本构建一个helloworld项目。涉及到的内容有: ① 通过.proto文件生成Java代码的方法。 ② 以及服务端和客户端代码使用示例。 本文先不讲解代码细节,只用来帮助自己构造一个Java版本的gRPC项目。后续系列文章再说,最后把代码放到github上。一、环境准备1.1 安装protocbuf首先需要安装protocbuf 3.x版本。本文中,我以3.1            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-17 22:19:40
                            
                                182阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            @[toc]目录一、环境准备二、gRPC项目构建创建proto文件生成Java类创建模块local-server(gRPC服务端)创建模块local-client(gRPC客户端)调用效果一、环境准备 安装protocbuf 下载地址https://github.com/protocolbuffers/protobuf/releases选择对应的版本下载安装,这里我选择21.1 选择对应的压缩包解            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-20 22:22:45
                            
                                148阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言HSF是一个分布式的远程服务调用框架,其实我更喜欢把分布式几个字去掉,因为HSF本身并不是一个单独的服务(指一个进程),他是附属在你的应用里的一个组件,一个RPC组件(远程过程调用——Remote Procedure Call,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发分布式应用更加容易),当然H            
                
         
            
            
            
            grpc里的客户端可以像调用本地对象一样,直接调用另一台机器上服务端的应用一、什么是gRPC在服务端实现一个接口,定义一个服务,指定能被远程调用的方法,并运行一个gRPC服务来处理客户端调用用proto files创建gRPC服务,用protocol buffers消息类型定义方法参数和返回类型。1. 支持的语言:Go、python、ruby、C++、Java、node.js、C#、PHP、And            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-18 09:22:22
                            
                                64阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            依赖文件:protoc-v3-20.1.exe grpc_cpp_plugin.exe // 生成cpp中间文件protoc-gen-grpc-web.exe // 生成js中间文件grpcwebproxy-v0.13.0-win64 1.4.0.exe // 负责代理的端口映射新建测试工程文件夹grpcweb-cpp并下载grpc-web工程 ( git clone https://gitcod            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-12 01:30:47
                            
                                127阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一,grpc简介: GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x +。GRPC与thrift、avro-rpc等其实在总体原理上并没有太大的区别,简而言之GRPC并没有太多突破性的创新。    对于开发者而言:    1)需要使用protobuf定义接口,即.proto文            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-05 23:45:51
                            
                                183阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言经常看到说gRPC怎么好的文章,实际工作中也没有体验过,这次看了一下它的HelloWorld程序,记录一下这个过程。 RPC是Remote Produce Call 的缩写, 就是远程调用,调用远程的代码像本地一样。Java里面比较有名的RPC框架Dubbo,但它只支持Java。 gRPC 是google开源的RPC框架,使用HTTP2, 支持很多种语言:Java,GO,.Net Core,C            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-23 23:15:07
                            
                                53阅读
                            
                                                                             
                 
                
                                
                    