grpc-java 源码阅读环境搭建

grpc 源码阅读之 balancer Balancer gRPC balancer 背景 接着上篇《gRPC 插件式编程之Resolver》,gRPC 将 target 解析为 resolver.Target 后,通过 resolver.Builder.Build 方法调用 resolver.ClientConn.UpdateState(State) error 方法,该方法做了哪些事情呢,我们本篇接着看源码往下走。 UpdateState UpdateState 的调用会调用 grpc.ClientConn.updateResolverSta 阅读详情

IDEA 版本 2018.3,grpc-java 版本 Tag-v1.31.1 ,gradle-5.6.1

前期准备

grpc-java tag 下载路径:https://github.com/grpc/grpc-java/tags

gradle 配置为国内镜像:https://blog.youkuaiyun.com/lj402159806/article/details/78422953

代码构建

导入代码,这里通过本地已有的 gradle 进行导入,grpc-java Tag-v1.31.1 默认的 gradle 版本为 6.5.1,故这里尝试用 6.5.1 进行编译。

在这里插入图片描述

很快会碰到第一个问题,由于 grpc-java 也是支持 Android,会引入 Android 的插件依赖

在这里插入图片描述

这一部分,卡了很久,尝试通过配置 Android SDK 依赖,或者修改 gradle 版本,均未解决,也可能是由于相关资源被墙了,暂未能解决,但由于本次目的是查看 grpc-java 的源码,主要用于后端开发,Android 部分先行忽略,选择删除跟 Android 相关的代码:

在这里插入图片描述

同时将 Android 插件引入部分进行注释:

settings.gradle,注释掉 com.android.application 跟 com.android.library

pluginManagement {
    plugins {
//        id "com.android.application" version "3.5.0"
//        id "com.android.library" version "3.5.0"
        id "com.github.johnrengelman.shadow" version "2.0.4"
        id "com.github.kt3k.coveralls" version "2.0.1"
        id "com.google.osdetector" version "1.4.0"
        id "com.google.protobuf" version "0.8.12"
        id "digital.wup.android-maven-publish" version "3.6.2"
        id "me.champeau.gradle.japicmp" version "0.2.5"
        id "me.champeau.gradle.jmh" version "0.5.0"
        id "net.ltgt.errorprone" version "0.8.1"
        id "ru.vyarus.animalsniffer" version "1.5.0"
    }

build.gradle,注释掉 com.android.application 跟 com.android.library

plugins {
//    id "com.android.application" apply false // Necessary for Android plugin to find its classes
//    id "com.android.library" apply false
    id "com.google.osdetector" apply false
    id "me.champeau.gradle.japicmp" apply false
    id "net.ltgt.errorprone" apply false
}

完成后,再进行编译,会卡在:

java.lang.NoClassDefFoundError: org/gradle/api/internal/plugins/DefaultConvention
	at org.jetbrains.plugins.gradle.tooling.builder.ProjectExtensionsDataBuilderImpl.buildAll(ProjectExtensionsDataBuilderImpl.groovy:50)
	at org.jetbrains.plugins.gradle.tooling.internal.ExtraModelBuilder.buildAll(ExtraModelBuilder.java:67)
	at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:105)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:134)

在这里插入图片描述

这个是由于 gradle 与 IDEA 的兼容问题,需要对 gradle 版本进行调整

参考:https://blog.youkuaiyun.com/C704058712/article/details/107916061

IDEA 2018.03 支持 gradle 5.6.1,进行回退:

Settings -> Build, Execution, Deployment -> Build Tools -> Gradle ,通过修改 Gradle home 完成:

在这里插入图片描述

同时,gradle-wrapper.properties 也需要进行修改

在这里插入图片描述

修改为:

distributionUrl=https\://services.gradle.org/distributions/gradle-gradle-5.6.4-all.zip

之后,重新进行构建即可,如果是第一次构建,花费的时间会较长

总结:对 grpc-java 源码阅读环境搭建,其中 Android 的部分是被跳过,后续将继续研究此部分代码如何进行编译

Dubbo源码阅读(1)搭建Dubbo源码阅读环境 Dubbo源码阅读(1)搭建Dubbo源码阅读环境 一直想阅读一些开源框架的源码,但是由于上学期事情太多而一直没有时间阅读。现在放寒假了,终于有足够的时间来阅读源码了,就先从Dubbo开始吧——毕竟这个寒假是有写一个自己的RPC框架的打算的,从阅读RPC框架的源码开始也是一个不错的选择。 虽然我对Dubbo实在是说不上喜欢——明明定位是一个RPC框架却有服务注册与发现、监控等服务治理的功能,在使用时有时会发现一些莫名其妙的默认行为,根据RPC Benchmark(https://github.com/ha 阅读详情

相关推荐

gRPC初探

概览在gRPC的官方文档中这样描述grpc的特点:第一点:强大的接口描述语言(Powerful IDL) Protocol Buffers是一个强大的二进制序列化工具集和语言,你可以使用Protocol Buffers定义你的接口。 第二点:支持十种语言的类库 为各种语言编写的服务自动生成相应语言的客户端和服务端存根(也就是接口) 第三点:基于HTTP2协议 基于HTTP2标准设计,带了许

lyjshen的专栏 1万+

GRPC C++源码阅读(12)—-无锁队列的实现

转载自:http://www.anger6.com/?p=582 grpc c++库为了达到高性能,采用了许多先进的编程技术(虽然会违背我们的直觉,甚至影响我们流畅地阅读其代码。这也是为什么我要分析其源码的原因,funny! isn’t it?)。如异步非阻塞,线程池,无锁队列,I/O多路复用等。 这篇文章来分析下无锁队列的实现。 先来看一下无锁数据结构的概念。 一个数据结构能被称为是无锁...

maimang1001的专栏 597

构建gRPC v1.37.0源码及编译流程

在现代软件开发中,微服务架构由于其灵活性、可扩展性以及组件化设计的优势而被广泛采用。随着分布式系统和服务之间的通信需求日益增长,一个高效、跨语言的远程过程调用(RPC)框架成为了构建微服务的关键。gRPC,一个由Google发起的开源高性能RPC框架,正好满足了这些需求。gRPC基于HTTP/2协议传输,使用Protocol Buffers作为接口描述语言,并支持多种编程语言。其设计目标是提供一种简单、高效、可靠的方式,让开发者能够实现客户端和服务端之间的透明通信。

weixin_35750953的博客 769

GRPC Java源码解析

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 方法调用(C...

fs3296的博客 5175

gRPC官方文档中文版doc带目录以及示例源码(Java)

idea可以直接导入,文档是doc版的,带目录,示例源码为官方自带的,mvn clean之后,target中由proto文件生成的代码会清除,所以需要执行mvn install 后maven插件会根据proto文件自动生成java代码。可以直接运行。grpc版本:0.14.0

grpc-java源码环境构建.doc

grpc-java源码环境构建.doc

06 | RPC实战:剖析gRPC源码,动手实现一个完整的RPC

这是我们基础篇的最后一讲,我们采用剖析 gRPC 源码的方式来学习如何实现一个完整的 RPC。当然整个 gRPC 的代码量可比这多得多,但今天的主要目就是想让你把前面所学的序列化、协议等方面的知识落实到具体代码上,所以我们这儿只分析了 gRPC 收发请求两个过程。实现了这两个过程,我们就可以完成一个点对点的 RPC 功能,但在实际使用的时候,我们的服务提供方通常都是以一个集群的方式对外提供服务的,所以在 gRPC 里面你还可以看到负载均衡、服务发现等功能。

qq_37756660的博客 985

《中国图书馆图书分类法》(第五版)详表(中图分类号查询表)

中文法分类

记录我目之所及的世界 4万+

grpc客户端连接源码解读

最近在做grpc连接池的优化,正巧之前只是粗略地读了一些grpc的源码,借这个机会把相关grpc的源码认真读一读,更深入地理解grpc客户端连接的参数,帮助优化grpc连接池。

shanxiaoshuai的博客 2571

CAN:CANape使用Function处理数据

CANape中的function and script习惯称之为脚本(实际为函数和脚本)。这里介绍function,可以实现简单信号a和信号b乘法,比如计算功率(转速与扭矩乘)。该功能前期有专业人员做支援,当时问其编制方法,其回答是看帮助文件。现在没有支援自己动手。 功能描述:电压信号阶梯增加,每次保持1.5s,测量后0.5s位移平均值(假设信号步长10ms,需要取样50个点,但该脚本中点的数目为10个)。图示如下: 刚开始看了软件Function definition→Library function,

Morven 1万+

别再为跨页读写发愁了!STM32F407模拟I2C驱动24C256/512的避坑指南

本文详细解析了STM32F407模拟I2C驱动24C256/512的跨页写入问题,揭示了24C系列存储器'写满一页不会自动翻页'的关键机制,并提供了经过验证的分页写入算法和优化方案。通过GPIO时序优化、地址计算和错误处理等技巧,帮助开发者解决数据错乱、覆盖等常见问题,实现稳定可靠的EEPROM读写操作。

weixin_42631411的博客 376

Sentinel源码解析之源码阅读环境搭建

原创不易,转载请注明出处 文章目录前言1.sentinel介绍2.源码环境搭建总结 前言 从本篇开始我们将更新关于sentinel源码解析的文章,本篇主要是介绍下sentinel是什么,以及sentinel的主要功能,然后搭建源码阅读环境 1.sentinel介绍 对于sentinel的介绍,我们这里先引入官方的说法 分布式系统的流量防卫兵 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 然后.

猿上生活 1471

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 227

源码面前没有秘密,推荐 9 个带你阅读源码的开源项目

我最初是在 GitHub 找到了别人上传的旧版(0.11)注释源码,一通搜索下发现了原作者赵炯老师的网站。第一版发布于 2003 年,最新更新于 2021 年,维护了 18 年。这个阅读 Linux 源码的项目,虽然没有上传到 GitHub 但是内容、注释的源码、配套工具全部开源。C++

2401_87167707的博客 1311

【Mode】Mode expansion monitors

对于宽带仿真,因为被支持的模式可能是波长的函数,因此,推荐在波长范围内增加频率的采样点数量去计算支持的波导模式分布或者光纤模式分布。对于宽带仿真,如果在被计算模式上的频率点的数量与通过 frequency-domain monitors 被测量的频率点的数量不匹配,这种情况是正常的。Mode expansion monitors 对于仿真偏振转换器是十分有用的,比如,在偏振转换器中,当你想要提取从输入模式到输出模式的转换效率,或者提取一个装置的 S 参数。给出了进入到被选择模式中的合透射率,

u011699626的博客 2759

使用STM32H7点亮RGB屏幕

希望本文能对你有所帮助!RGB屏幕是一种具有红、绿、蓝三种颜色通道的显示设备,通过控制每个通道的亮度,可以显示出丰富多彩的图像和动画。要使用STM32H7控制RGB屏幕,我们需要连接适当的引脚,并编写适当的代码来控制每个颜色通道的亮度。在主循环中,我们先点亮红色通道,然后延迟一段时间,接着点亮绿色通道,再延迟一段时间,最后点亮蓝色通道,并再次延迟。需要注意的是,示例代码中的延迟循环使用了一个简单的计数器实现,但实际应用中可能需要更精确的延迟方式,例如使用定时器中断或操作系统提供的延迟函数。

QoyOle的博客 923

2024年Java最新gRPC学习之五:gRPC-Gateway实战,浦发银行Java开发笔试题

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

2401_84689601的博客 978

uboot引导vxworks--t2080调试记录

开发环境: t2080rdb, uboot2015, vxworks7.01. 《VxWorks_7_fsl_t2t4_BSP_Supplement_Guide__SR0620.pdf》描述: 实际上默认创建的vip,profile选项为none时,vip内核配置中是包含了INCLUDE_END选项的。所以在创建vip的时候最好就添加上PROFILE_DEVELOPMENT。 2. 内核参数bootargs是一些网络参数设置=> pri bootargs bootargs=memac(1,0)b109304

珂珂可爱多 2637

Protobuf和GRPC实现远程服务调用(二)

一、Protobuf介绍 二、Protobuf的基本语法 三、GPRC

zhongliwen1981的专栏 1462

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TensorFlow Serving Java gRPC Kafka Streams 开源项目教程

TensorFlow Serving Java gRPC Kafka Streams 开源项目教程 本教程旨在指导您理解并使用 kaiwaehner/tensorflow-serving-java-grpc-kafka-streams 这一开源项目。该项目结合了TensorFlow Serving、gRPC、以及Kafka Streams,实现了模型预测的流处理能力。以下是关于项目关键组件的详细介...

gitblog_00649的博客 799

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

gRPC Android Helloworld 实战指南:从 NDK 环境搭建到 C++/Java 混合 RPC 示例

gRPC 官方在 Android 平台上的 HelloWorld 示例演示了如何在 Android 应用中**同时内置 gRPC 客户端与 gRPC 服务器**:界面(Java)与 RPC 逻辑(C++)通过 JNI 桥接,服务器监听于设备本机端口。通过本指南,读者将掌握 Android SDK/NDK 环境配置要点、借助 CMake 在 Android 上编译 gRPC 与 protobuf 依

gitblog_00249的博客 89

nacos源码阅读思路

nacos源码阅读思路

Darlight的博客 551

手把手带你分析 (net.devh.boot.grpc 包下面的)服务端 Grpc 自动装配、服务注册的源码(Java版)

昨天写过一篇关于如何使用 Grpc 的博客,出于好奇想知道 @GrpcService、@GrpcClient、@GrpcGlobalServerInterceptor、@GrpcGlobalClientInterceptor这些注解是如何生效的,以及服务注册的流程是怎样的,就简单过了一遍源码,帮助大家梳理一下流程吧。

风团团 1775
上一篇: Dubbo 负载均衡算法
下一篇: grpc-java springboot 同步异步调用 demo
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值