gRPC Client 启动流程

本文详细介绍了gRPC客户端的启动流程,包括使用Netty作为底层实现的Channel初始化、服务发现、负载均衡、拦截器配置等关键步骤,以及如何构建和配置ManagedChannel,为后续的请求提供基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gRPC Client 启动流程

gRPC 启动初始化的流程,使用 Netty 作为底层的实现

初始化 Channel

Channel 的初始化通过 ChannelBuilder 构建
这里通过 forTarget 设置了要解析的服务名称,会通过 NameResolver 解析,转换为具体的地址

ManagedChannel channel = ManagedChannelBuilder.forTarget("grpc-server")
                                              .usePlaintext()
                                              .build();
  • 构建 ManagedChannel 实例

io.grpc.internal.AbstractManagedChannelImplBuilder#build

调用 build 时,会根据 builder 中的属性,创建 ManagedChannelImpl 的实例

public ManagedChannel build() {
   
   
    return new ManagedChannelOrphanWrapper(new ManagedChannelImpl(
            this,
            // 构建 Transport 工厂
            buildTransportFactory(),
            new ExponentialBackoffPolicy.Provider(),
            // 线程池
            SharedResourcePool.forResource(GrpcUtil.SHARED_CHANNEL_EXECUTOR),
            // 计时器
            GrpcUtil.STOPWATCH_SUPPLIER,
            // 统计和追踪拦截器
            getEffectiveInterceptors(),
            // 时间提供器
            TimeProvider.SYSTEM_TIME_PROVIDER));
}

初始化 Channel 属性

  • io.grpc.internal.ManagedChannelImpl#ManagedChannelImpl

ManagedChannel 设置属性,初始化服务发现,负载均衡,拦截器等并创建真正的 Channel

ManagedChannelImpl(AbstractManagedChannelImplBuilder<?> builder,
        ClientTransportFactory clientTransportFactory,
        BackoffPolicy.Provider backoffPolicyProvider,
        ObjectPool<? extends Executor> balancerRpcExecutorPool,
        Supplier<Stopwatch> stopwatchSupplier,
        List
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值