00开篇词:带你玩转gRPC框架

news2024/11/27 6:30:44

前言

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

我叫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这项技术的掌握并不是十分到位,对它的分析和理解也不是十分的深刻,写出的博客也可能不是十分的行云流水,但是我仍然热爱,仍然想做,仍然能够去做,并且能在自己的能力范围之内做到最好,就没有什么可怀疑的了。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解1242:网线主管(二分答案经典习题)

题目1242:网线主管时间限制: 1000 ms 内存限制: 65536 KB提交数: 23180 通过数: 5566【题目描述】仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一…

【SVM原理推导】核SVM为什么能分类非线性问题?

核SVM为什么能分类非线性问题?要解决这个问题,首先应该先深入理解SVM的原理与本质。(涉及SVM的问题是很常见的,因为SVM可以算是传统机器学习领域非常成功的算法之一了,现在仍有许多research运用SVM解决问题。) 一、支持向量机(SVM) 1. 基本介绍与提出背景 支持向量机…

【C++】lambda 表达式 | 包装器

​🌠 作者:阿亮joy. 🎆专栏:《吃透西嘎嘎》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉lambda表…

解决宏碁非凡S3 安装Win11时无法找到驱动器问题

1 问题描述 机型:宏碁非凡S3 2022款CPU:i5 1240P安装系统:Win11 专业版问题描述:安装系统时,在选择驱动器界面无法找到驱动器,如下图所示 2 解决流程 查了一下网上的解决办法,进入BIOS把VMD C…

非极大值抑制(Non-Maximum Suppression)

文章目录一、什么是非极大值抑制二、为什么要用非极大值抑制三、 如何使用非极大值抑制四、代码段一、什么是非极大值抑制 非极大值抑制,简称为NMS算法,英文为Non-Maximum Suppression。其思想是搜素局部最大值,抑制非极大值。NMS算法在不同…

JavaEE7-Bean的作用域

目录 1.作用域定义 2.Bean的6种作用域 2.1.singleton:单例作用域(默认作用域) 2.2.prototype:原型作用域(多例作用域) 2.3.request:请求作用域 2.4.session:会话作用域 2.5.a…

C++基础回顾

吼吼吼CC基础回顾C基础入门一、标识符1.1标识符命名规则二、数据类型2.1整形(格式:int 关键字)2.2 sizeof关键字2.3 float关键字2.4字符型2.5转义字符2.6字符串型2.7布尔类型2.8数据的输入三、运算符3.1算数运算符前置递增与后置递增区别3.2 …

MS Access数据库多数据源JDBC查询

Druid, C3P0都不支持微软的Access,如何实现多数据源JDBC查询?? 2023-01-23T23:54:52.4760800 WARNING com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask544a5904 -- Acquisition Attempt Failed!!! Clearing pending a…

Linux内核驱动初探(二) TI声卡

目录 0. 前言 1. menuconfig 2. 超时问题 3. 稳定性问题 0. 前言 通过查询该设备原理图可知,该声卡的Codec芯片型号为德州仪器 TLV320DAC3101。 1. menuconfig 我们在 linux-menuconfig 里面如下设置:进入 Device Drivers ---> Sound card supp…

准确率、精确率、召回率、F1-measure

文章目录准确率(Accuracy)精确率(precision)召回率(recall)F1-measure值学习理解网站-p’(Predicted)n’(Predicted)p(Actual)True PositiveFalse Negtiven(Actual)False PositiveTrue Negtive 准确率(Accuracy) ANo.Samples Predicted CorrectlyTotal No.of SamplesTPTNPN(1)A…

适配splashscreen步骤以及遇到的坑

Android 12 启动画面 从 Android 12 开始,在所有应用的冷启动和温启动期间,系统一律会应用 Android 系统的默认启动画面。默认情况下,此系统默认启动画面由应用的启动器图标元素和主题的 windowBackground(如果是单色&#xff09…

虚函数的静态解析

目录 一.基类的constructor和destructor内 二.使用的是基类的对象而不是基类对象的pointer或reference 存在两种情况,虚函数机制不会出现预期行为: 即不根据虚函数的机制来调用类中对应的虚函数 示例中使用的基类和派生类: class base_cl…

vue事件车的原理与标准写法实现兄弟组件的传值

目录前言一,全局事件总线介绍1.1 原理介绍1.2 x需要满足的条件二,知识点的复习2.1 vc是什么2.2 vm管理vc如何体现2.3 原型2.4 上述知识的串联三,实现需求3.1 x的编写及讲解3.2 使用x四,标准写法4.1 写法改动4.2 销毁五 关键代码后…

有关BMP位图的分析

1、BMP是什么? BMP是 Bitmap(位图)的简称,是windows显示图片的基本格式。 在windows下,任何格式的图片文件(包括视频播放)都要转化为位图才能显示出来,各种各样格式的图片文件也都…

9.Java数组知识大全

文章目录前言一、数组介绍二、数组的定义域静态初始化三、数组元素访问数组地址中的小拓展:四、数组遍历1.获取数组里面的元素2.把数据存储到数组中3.遍历数组的最快方式4.遍历数组并求和5.统计个数6.变化数据五、数组动态初始化1.数组默认初始化值的规律2.数组动态初始化和静态…

单绞机控制算法模型(Simulink仿真)

线缆行业单绞机PLC控制算法详细解读可以参看下面的文章链接: 线缆行业单绞机控制算法(详细图解+代码)_RXXW_Dor的博客-CSDN博客在了解单绞机之前需要大家对收放卷以及排线控制有一定的了解,不清楚的可以参看下面几篇博客,这里不再赘述,受水平和能力所限,文中难免出现错…

【JavaEE】认识线程Thread类及常用方法线程状态

目录 一:认识线程: 二、线程的优点: 三、进程和线程的区别(面试题): 四、第一个多线程程序: 五、创建线程的方式: 六、Thread类及常用方法 Thread类常见构造方法&#xff1…

整理介绍字符函数和字符串函数+内存函数

本篇重点介绍处理字符和字符串的库函数的使用和注意事项 本篇重点本篇重点介绍处理字符和字符串的库函数的使用和注意事项前言:求字符串长度strlen拷贝字符串函数strcpy(追加)连接字符串函数strcat比较两个字符串函数strcmp对上面改进字符串函…

Mac应用程序无法打开或文件损坏的处理方法

很多用户在安装 盗版 Mac软件的时候,经常会遇到提示“xxx.app已损坏,打不开。您应该将它移到废纸篓“或”打不开的xxx.app,因为它来自身份不明的开发者”,等多种打不开盗版软件的各种提示,正版软件则不会出现。 错误截…

17种编程语言实现排序算法-基数排序

开源地址 https://gitee.com/lblbc/simple-works/tree/master/sort/ 覆盖语言:C、C、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。 覆盖平台:安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、…