首页 > 其他分享 >这一次,带你玩转gRPC框架

这一次,带你玩转gRPC框架

时间:2023-06-04 13:34:21浏览次数:51  
标签:框架 gRPC 技术 RPC 专栏 玩转 Go

前言

大家好,先做一下自我介绍

我叫Barry Yan,目前是一名互联网公司的研发工程师,同时也是后端技术领域的狂热爱好者和技术博主,在GitHub、CSDN社区、51CTO博客社区、阿里云技术社区、掘金技术社区和InfoQ写作社区等都有自己的博客,原创200余篇。虽然刚刚大学本科毕业不到一年,但是算上实习经历的话大概有一年多的工作经验了,并且接触了一些不同的的编程语言和技术栈,对Java语言和相关技术栈如Spring、Tomcat、Netty、Zookeeper,Go语言和相关技术栈如Docker、gRPC、Gin、etcd都可以说比较熟悉。

为什么要写这个专栏。

在Go语言的相关学习中,发现确实如一些网友所说,Go相比Java,语言生态方面还是有一定的弱势的,因此相关技术栈的学习资料、对解决问题的经验分享等内容在互联网上相比Java都不是特别的多,而我本人则是更偏向于做一个内容生产者,写出优质的内容丰富社区,并且能让更多的人去了解,同时也能丰富自己,让自己对这一门技术理解的更加深刻,所以就想在业余休息的时间,从Go语言开发中非常常见的gRPC框架入手,完成一套属于自己的专栏!这个选择是经过深思熟虑的,我相信自己在创作专栏的过程中能够有一些不同的成长,能够让读者朋友有实实在在的收获,让社区多一些更好的内容。

我们为什么要学习gRPC?

当今的无论是传统软件领域还是互联网领域,各种新技术层出不穷,覆盖的用户量规模也越来越广泛,随之而来的是架构思想的不断转变,从单体架构到SOA,到微服务再到"无服务",分布式技术越发常见且重要,而自从单体架构之后的分布式架构,都会设计到服务之间的信息传输,而信息传输的方式主要是通过网络,更详细一点是TCP网络协议,但是应用之间很少会直接使用TCP协议进行传输,而是选择更上层的网络协议,比如HTTP、Socket、RPC等等,因为越往上层就意味着封装了更多的抽象,便于开发人员对其进行使用,而PRC相关的框架,无论是在性能上还是便捷性上都是服务到服务之前进行信息传输的最优选项,而gRPC框架则是所有RPC框架中各方面最为突出的框架之一。

gRPC是Google发布的基于HTTP2.0协议的高性能开源RPC框架,是一种可拓展、松耦合且类型安全的解决方案,与传统的基于HTTP的通信相比,它能进行更有效的进程间通信,特别是现在流行的微服务架构和云原生技术里,在很多框架里都能看到它的身影存在,并且提供了多种编程语言的支持。本篇专栏,从最简单的Hello World程序开始,从认识到应用,从编写程序到剖析源码,从全局到细节,和大家一起去掌握gRPC。

学习专栏前最好要具备一些基础知识

  • Go、Java语言的编程基础
  • 计算机网络知识
  • Git工具的使用

专栏目录

在这里插入图片描述

专栏除了开篇词和结束语以外总共分为四个部分,分别是基础篇实践篇高级篇扩展篇

基础篇

在基础篇的文章中,我会从计算机网络中的TCP协议开始,讲述RPC协议和相关框架实现的演进过程,分析RPC为什么一定会出现,并且了解gRPC是怎样的RPC框架和gRPC的一些特性,从宏观的角度去了解gRPC框架在具体使用中的通信过程,能够让我们了解gRPC的基本概念和适用的场景。

实践篇

了解gRPC框架的基本情况之后,我们从实践出发,对gRPC进行进一步的使用,并且引入etcd服务注册中心,了解gRPC在分布式微服务领域的应用,还要从获取连接、负载均衡、异步处理、并发、安全、可用性等多个方面去了解gRPC的部分原理和源码,学习完这一篇之后相信大家就可以在项目中灵活的使用gRPC框架,并且能够处理大部分的问题。

高级篇

在这一篇中,我会尝试带你深入gRPC原理和几个性能优化的要点,回归网络去了解HTTP2.0,以及不常用但是也很重要的UnknownService机制,最后尝试去实现我们自己的RPC框架,在这一篇的学习中,我们可以对gRPC进行更加深入的掌握,在项目中的使用和优化能够游刃有余。

扩展篇

扩展篇的几篇文章,能够为我们带来实践经验、源码、思考和相关联组件的多方位知识,了解和实践不同语言的项目中使用gRPC,分享一下gRPC源码中的一些优雅设计和一些在实际使用过程中所遇到的一些问题和解决方式,讨论gRPC有哪些优势和不足,这些往往能够提升我们深度思考的能力。

最后

《玩转gRPC框架》这篇专栏可以说是我技术成长之路上的第一个专栏,在写作的同时也是在学习,作为一名技术人,面对写作这件事我认为最重要的就是热爱,而我也在保持热爱。在业余的时间里能够保持一个自己的爱好并坚持下去,对我们每一名技术人的成长也都是非常有帮助的。或许相比一线经验丰富的前辈来讲,我对gRPC这项技术的掌握并不是十分到位,对它的分析和理解也不是十分的深刻,写出的博客也可能不是十分的行云流水,但是我仍然热爱,仍然想做,仍然能够去做,并且能在自己的能力范围之内做到最好,就没有什么可怀疑的了。

最后,我想谨以此专栏由衷的感谢在我成长过程中遇到的每一位老师的教导与帮助,同时也感谢每一位读者的支持!

专栏的订阅地址https://blog.csdn.net/mr_yanmingxin/category_12172887.html

标签:框架,gRPC,技术,RPC,专栏,玩转,Go
From: https://blog.51cto.com/u_15654567/6410460

相关文章

  • HTTP、WebSocket、gRPC 或 WebRTC:哪种通信协议最适合您的应用程序?
    在为您的应用程序选择通信协议时,有很多不同的选择。在本文中,我们将了解四种流行的解决方案:HTTP、WebSocket、gRPC和WebRTC。我们将通过调查其背后的技术、它的最佳用途及其优缺点来探索每个协议。我们的通信方式在不断改进:变得更快、更方便、更可靠。我们的通信方式已经从使用信鸽......
  • ArchUnit 架构测试框架
    很多时候我们觉得架构比较复杂,或者架构比较玄幻,同时对于自己设计的架构方案心里总是没有底ArchUnit是一个不错的选择可以像单元测试一样,测试我们的架构是否合理(包含了包以及类的依赖,分层,循环依赖。。。。)说明对于希望检查自己方案架构问题的,可以尝试下ArchUnit工具参考资料https:......
  • gnmi 基于grpc 的网络管理接口
    网络自动化是这几年对于网络管理比较重要的话题,openconfig就是一个开放组织,gnmi是基于grpc提供的网络管理接口,对于需要开发网络自动化的应用是值得参考使用的参考资料https://github.com/openconfig/gnmihttp://www.openconfig.net/......
  • 基于SqlSugar的开发框架循序渐进介绍(30)-- 整合客户关系管理系统模块功能
    以前在随笔《Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示 》的几篇随笔中介绍过基于WInform开发框架开发的CRM系统,系统的功能主要也是围绕着客户相关信息来进行管理的,经过一些客户的定制应用,以及框架各种功能的完善,系统也已经很完善了,不过不同的CRM侧重......
  • golang 学习之 etcd protobuffer grpc gorm 服务注册发现 go-micro
    1.etcd使用步骤1)下载:https://github.com/etcd-io/etcd/releases/2)配置环境变量3)编辑local-cluster-profile文件:(利用goreman启动方式,生产环境参考官方文档)etcd1:etcd--nameinfra1--listen-client-urlshttp://127.0.0.1:2379--advertise-client-urlshttp://127.0.0.1......
  • 【Unity】 HTFramework框架(四十四)【进阶篇】指令系统
    索引指令系统简单使用定义InstructionAgent编辑指令代码执行指令代码指令代码语法基本语法指令关键字注释支持的值类型标识符命名规范进阶使用运行时检视面板指令系统指令系统为Unity动态修补程序、热更新等提供了另一种补充方案,我们可以将任意一段指令代码即时编译并执行(请放心,......
  • 最小编译器和 UI 框架「GitHub 热点速览」
    如果有一个关键词来概述本周的GitHub热门项目的话,大概就是van和sectorc都用到的smallest。只不过一个是前端的响应式框架,一个是搞编译的C编译器。它们除了轻量化这个共同特点之外,还有好用,足以满足你的日常编程所需。说到编程,EasySpider便是一个免去敲代码工作量,用看得见......
  • tink google 加密安全实践的框架
    tink是google多年加密实践的框架,提供了安全的加密处理方法,可以简化不少我们的加密处理参考使用publicstaticvoidmain(String[]args)throwsGeneralSecurityException,IOException{AeadConfig.register();//1.Generatethekeymateri......
  • go语言中protobuf以及grpc的使用
    首先定义数据结构,保存为.proto文件syntax="proto3";packagetutorial;//Theprotocolcompilergeneratesaclassfromthefollowing.protofilewith//methodsforwritingandreadingthemessagefields.Theclassiscalled//"Person"andisin......
  • Celery框架
    Celery框架1.什么是celerycelery是一个简答,灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度.这里面提到了一个概念:分布式系统一个系统应用(网站),会有相关组件(web服务器,web应用,数据库,消息中间件),将它们架构在不同......