gRPC C++ 源码剖析(一)----------入门

通过一段时间阅读gRPC c++的源码,对其实现原理算是初窥门境了。

在这里通过一系列循序渐进的文章把其中的经验和学习到东西分享出来,希望志同道合之人能够共同交流进步。

 

gRPC c++源码难吗?

个人认为gRPC c++源码算是质量比较高的源码了,google工程师们的抽象和设计能力都能够在其中有所体现。

可是阅读其源码还是有不少困难的,个人认为造成源码阅读困难的原因有以下几个:

  1. 是用C++写的

出于性能和灵活性的考虑,gRPC的核心代码是用C++写的,其中有部分代码还是C的。最新的gRPC代码已经将大部分C代码用C++重写了。

如果对C++语言不熟悉的话,就很容易被gRPC所使用的很多C++语言特性所迷惑,而不得其要旨。比如模板,智能指针,继承多态等等。

 

2.很多高级的抽象

gRPC的源码为了简化异步代码的编写,同时为了更好的代码复用。设计了许多高级的数据结构。如grpc_closure,grpc_closure_scheduler,ExecCtx,grpc_combiner,grpc_completion_queue等。如果不能很好地理解这些高级数据结构的作用和原理,阅读起代码来也会事倍功半。

 

3.大量的设计模式

为了提供跨平台能力,grpc核心代码采用了bridge设计模式,因此可以看到各种vtable,这也为阅读源代码增加了困难。

 

4.异步编程

grpc核心库采用reactor设计模式,如grpc_closure就是为了方便异步编程而设计的数据结构。

 

5.高性能

出于性能考虑,gRPC还使用了无锁队列这种高级数据结构,不熟悉其原理的读者可能会陷入各种原子操作的细节中。

 

 

阅读gRPC源码有哪些收获?

其实上面阅读源码的困难也就是收获,如何高效地在C中进行异步编程,如何使用设计模式,如何编写高性能代码,如何使用C++的高级特性等等。

 

说了这么多,是不是已经跃跃欲试了呢?让我们从下节开始吧!

grpc-server-spring-boot-starter是一个基于Spring Boot框架的gRPC服务器的启动器。gRPC(Google Remote Procedure Call)是一种高性能的远程过程调用框架,它使用Protocol Buffers作为接口定义语言,并支持多种编程语言。 grpc-server-spring-boot-starter提供了一系列简化配置和集成的功能,使得在Spring Boot应用中启动和配置gRPC服务器变得更加容易。它提供了自动装配的功能,可以根据应用的配置自动创建和启动gRPC服务器。用户只需要在配置文件中设置相应的参数,如服务器的端口号、TLS证书等,即可完成服务器的启动配置。 在使用grpc-server-spring-boot-starter时,用户可以方便地定义服务接口和实现类。通过使用gRPC的接口定义语言(protobuf)定义接口,并生成对应的Java代码。然后,用户只需要在实现类中实现相应的接口方法即可。 在服务器启动后,grpc-server-spring-boot-starter会根据定义的接口和实现类,自动创建相应的gRPC服务,并将其注册到服务器中。当客户端发起远程调用时,服务器会根据接口定义和方法参数,将请求转发给对应的实现类,并返回执行结果给客户端。 grpc-server-spring-boot-starter还支持对gRPC服务器进行拦截器的配置。拦截器可以在请求和响应的过程中拦截和修改消息,用于实现日志记录、鉴权、性能监控等功能。 总之,grpc-server-spring-boot-starter简化了在Spring Boot应用中使用gRPC的配置和集成过程,使得开发者可以更加便捷地构建和部署gRPC服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

self-motivation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值