首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    gRPC11# 超时问题定位

    刚出现的前几例由于没有触发线程dump一直定位不到哪里的问题。 RPC框架中服务端线程池默认使用线程超过80%会触发线程dump,方便观察运行状态。...服务端队列监控:队列显示瞬间增加很多任务 磁盘IO和CPU都有上升 线程dump情况,通信线程调用到了SynchronizationContext,底层的work通信线程怎么调用到了获取节点的业务方法去了...三、问题根因 RPC框架中代码中有使用SynchronizationContext,此处与gRPC共用。...问题原因:再回到上面的线程栈,业务节点发现事件和gRPC底层通信共用了SynchronizationContext造成阻塞,和线程错乱执行。...问题解决:不再和gRPC共用SynchronizationContext,如果使用单独实例化一个即可。该问题通过测试同学通过故障注入的方式得以复现。

    68030

    grpc python 和Java实现

    Grpc实战教程: 说一下目的:实现Python变成的服务端,Java作为客户端,实现二者的通信,实现的功能:传递过来的字符串全部转换为大写 一、安装(Java和Python) 1、  Python安装...)      安装 python grpc 的 protobuf 编译工具,执行:pipinstall grpcio-tools 2、  Java安装grpc 3、  参考:https://github.com.../grpc/grpc-java,添加对应的jar包和插件,我的测试是在idea下maven工程下进行的,只需在pom文件中,添加对应的依赖和插件即可。...将建立的data.proto文件到proto文件夹中,然后打开pom文件,按照https://github.com/grpc/grpc-java,添加对应的jar包和插件即可。...此时在target/generated-sources/protobuf下会生成grpc-java文件,生成的服务端代码就在此文件中,将生成的类剪切(是剪切,当然复制完成删除也可以,避免报错)拷贝工程中对应的

    1.7K20

    java版gRPC实战之五:双向流

    本篇概览 本文是《java版gRPC实战》系列的第五篇,目标是掌握双向流类型的服务,即请求参数是流的形式,响应的内容也是流的形式; 先来看看官方资料对双向流式RPC的介绍:是双方使用读写流去发送一个消息序列...com.bolingcavalry.grpctutorials.lib.ProductOrder; import com.bolingcavalry.grpctutorials.lib.StockServiceGrpc; import io.grpc.stub.StreamObserver...value.getNumber(); int code; String message; // 假设单数的都有库存不足的问题...StreamObserver,新增getExtra方法可以返回String对象,详细的用法稍后会看到: package com.bolingcavalry.grpctutorials; import io.grpc.stub.StreamObserver...com.bolingcavalry.grpctutorials.lib.ProductOrder; import com.bolingcavalry.grpctutorials.lib.StockServiceGrpc; import io.grpc.stub.StreamObserver

    1.8K00

    java版gRPC实战之五:双向流

    《java版gRPC实战》全系列链接 用proto生成代码 服务发布和调用 服务端流 客户端流 双向流 客户端动态获取服务端地址 基于eureka的注册发现 本篇概览 本文是《java版gRPC实战》系列的第五篇...com.bolingcavalry.grpctutorials.lib.ProductOrder; import com.bolingcavalry.grpctutorials.lib.StockServiceGrpc; import io.grpc.stub.StreamObserver...value.getNumber(); int code; String message; // 假设单数的都有库存不足的问题...StreamObserver,新增getExtra方法可以返回String对象,详细的用法稍后会看到: package com.bolingcavalry.grpctutorials; import io.grpc.stub.StreamObserver...com.bolingcavalry.grpctutorials.lib.ProductOrder; import com.bolingcavalry.grpctutorials.lib.StockServiceGrpc; import io.grpc.stub.StreamObserver

    1.4K31

    .Net Core 3.0 gRPC部署问题解决

    今天我们看的就是在3.0中使用gRPC并遇到的问题。gRPC现在可以非常方便简洁的在.Net Core中使用了,今天我也是尝试了一下,但是不幸了是遇到了一些阻碍。我们一起看看是啥问题吧。...gRPC介绍   gRPC 是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,采用ProtoBuf 定义的IDL。   ...部署问题   按照在ASP.NET Core 3.0中使用gRPC的文章中的教程一步一步的创建项目,编写代码。一套流程走下来那是行云流水。编写完之后在本地就开始进行测试。先跑起来服务端。在跑客户端。...其中有两点需要注意的是因为在3.0中使用的gRPC是基于Http2.0的。...证书的问题也就是在开发环境时出现解决,在正式生产环境中我们还是需要使用有效证书的。 ----

    1.6K30

    浅谈K8S下gRPC负载均衡问题

    一般来说,在 K8S 下部署服务是很简单的事儿,但是如果部署的是一个 gRPC 服务的话,那么稍不留神就可能掉坑里,个中缘由,且听我慢慢道来。...缺省情况下会被分配一个地址(也就是 ClusterIP),客户端的请求会发送给它,然后再通过负载均衡转发给后端某个 pod: ClusterIP 如果是 HTTP/1.1 之类的服务,那么 ClusterIP 完全没有问题...;但是如果是 gRPC 服务,那么 ClusterIP 会导致负载失衡,究其原因,是因为 gRPC 是基于 HTTP/2 的,多个请求在一个 TCP 连接上多路复用,一旦 ClusterIP 和某个 pod...为什么 HTTP/1.1 的复用没问题,而 HTTP/2 的复用就有问题?...了解了 K8S 下 gRPC 负载均衡问题的来龙去脉,我们不难得出如下解决方案: 在 Proxy 中实现负载均衡:采用 Envoy 做代理,和每台后端服务器保持长连接,当客户端请求到达时,代理服务器依照规则转发请求给后端服务器

    2.5K30
    领券