老钱的处女作《深入理解RPC》正式上线了

半导体行业周期分析:库存、需求与复苏路径深度解读 半导体行业作为现代科技产业的基石,其周期性波动受供需关系、库存水平和宏观经济等多重因素影响。从技术原理上看,行业景气度通常通过库存周转天数、晶圆厂产能利用率等核心指标进行监测,这些指标反映了产业链各环节的健康状况。在工程实践中,理解这些指标有助于企业进行库存管理和产能规划,从而提升运营效率。当前,半导体市场正经历结构性分化,其中**库存周转天数**和**晶圆厂产能利用率**成为判断市场拐点的关键。在应用场景上,汽车电子、人工智能等领域需求相对稳健,而消费电子则面临较大压力。本文聚焦于半导体行业的周期特征,探 阅读详情

640?wx_fmt=jpeg

640?wx_fmt=otherRPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要角色。Google 开源了 gRPC,Facebook 开源了 Thrift,Twitter 开源了 Finagle,百度开源了 bRPC,腾讯开源了 Tars,阿里开源了 Dubbo 和 HSF,新浪开源了 Motan 等,一线互联网大厂们纷纷亮出自己研制的 RPC 框架武器,在解决分布式高并发业务问题的同时,也向外界展示自己的技术实力。

互联网公司百花齐放,貌似高深复杂的 RPC 框架解决了哪些业务难题?其技术含量究竟高在哪里?后端开发者该如何深入掌握 RPC 开发?这些都是本小册想要解读的问题。

分布式高并发服务是只有高手才能涉足的领域

虽然大部分后端开发者在日常开发中都会隐式或显式的使用 RPC,但对初级开发者来说 RPC 总是略显神秘而有距离,而即便有多年 RPC 使用经验的程序员,也可能依然对 RPC 背后的原理不甚了解,难以精通,遇到复杂问题时难免误用。

由于 RPC 本身理论繁杂,涉及的技术栈和工具也比较多,能将理论落实到代码层面,并结合业务实际情况,避开各种坑,最终实现性能和工程上的极致优化,这对后端开发者来说是一个极大的挑战。而对 RPC 服务开发原理的认知水平,也正是区分后端高级开发者和普通开发者的重要参考标准之一。在分布式高并发服务领域,只有高手才能担当重任,在业务工程领域有创新建树。

程序员的成长层级

640?wx_fmt=other

作为一名资深面试官,身边不少工程师会经常问我如何判断一个程序员的技术水平,如何区分他是高级的资深的,还是普通的一般的。我相信每个面试官都有自己的一套判断标准和参考答案,但通常最重要的一个评判依据是:

  • 高级程序员在技术选择的自由度上往往更大,他们不只会用,而且还知道为什么要这么用,能不能不这么用,有没有更好的办法。

  • 初级程序员只会搬砖,看到别人怎么写我就怎么写,缺乏自主思考的能力。

初级程序员之所以创新能力不足,根本原因在于没有系统深入的掌握技术背后的基础原理,无法进行有效思考,所谓“浮沙之上,难筑高台”。只有在深入理解技术原理之后,工程能力才可能突飞猛进提升。

640?wx_fmt=other

不想造轮子的程序员成为不了技术专家

软件工程领域有一句很经典的名言「不要重复造轮子」,这句话旨在指导软件工程以低成本高效开发。不过它也有适用范围,因为程序员平时学习使用的所有开源框架和编程语言,本质上都是「新轮子」。从这个角度看,不断造「新轮子、好轮子」才是计算机科学的演进历史,也构建了现代软件工程的基石。

虽然大多数新轮子最终不会被很多人使用,但是 「造轮子」无疑是深入理解技术原理的最佳方法。不会造轮子的同学永远只能停在技术表层,难以进行有创造性的工作。尤其是在高级阶段,造轮子的能力就是开发者的核心竞争力,而轮子也将成为公司之间差异化竞争的重要资本。可以说,要想成为中大型互联网公司的高级工程师或技术专家,必须具备通过造轮子开发出更好工具的实战能力。

本小册的一个核心目的,就是通过实战模块教大家打造一个属于自己的小轮子 —— RPC 服务小框架,带领大家体验这种深度学习方法的价值。这里也引用理论物理大师费曼先生的名言与诸位同学共勉。

640?wx_fmt=other

注:理查德·费曼——美国理论物理学家,量子电动力学创始人之一,纳米技术之父。

本小册的内容设计和特点

网络上讲解 RPC 的文章也有不少,但相对来说都比较散乱或不够深入,对 RPC 服务器的实现往往都是蜻蜓点水,浅尝辄止,在基础原理上的讲解也多流于表面,不及内核本质。

本小册内容不会对那些网上博客文章常见的浅层内容做过多重复讲解,而将写作重心放在作者从多年实战经验中摸索出来的更有深度、极为重要或多数人未曾深入的诸多知识点上,期望带领读者同时从深度和广度上充分理解 RPC 服务架构的深度内核设计原理和实现细节,并会拓展介绍一些 RPC 相关的协议开发知识和业界实战框架介绍,作为进阶学习参考。

这本小册在内容结构上主要划分为 6 大块:

640?wx_fmt=other
  1. 基础篇:RPC 在企业技术中的地位、应用场景、基础原理和交互流程

  2. 进阶篇:RPC 通讯协议原理、流行协议解构和实例代码分析

  3. 高级篇:RPC 客户端的实现要点

  4. 实战基础篇:RPC 服务器多种并发模型实例讲解

  5. 实战高级篇:分布式 RPC 服务实战(代码实例)

  6. 拓展学习篇:开源框架 gPRC/Thrift 原理入门与实践

为什么选择 Python 语言实现?

虽然在超大型企业内部很少使用 Python 来打造 RPC 服务,他们多半会使用 Java 或者 Golang 开发,因为 RPC 服务对性能有非常极致的要求。但是考虑到本小册的核心目标是让大家深入理解 RPC 背后的原理,而 Python 语言更加适合入门,实现代码比较简短,更利于阅读学习,尤其是对初、中级开发者更为友好。另外,还有些服务器并发模型是 Java 和 Golang 都不具备而 Python 独有的,选择 Python 语言 可以使得内容更加丰富多彩。所以,基于教学目的,本小册最终选择了 Python 作为 RPC 框架实现语言。相信这并不会妨碍真正有志于分布式高并发领域的后端开发者从中获取对 RPC 的理解和实战开发经验。

P.S. Python 作为人工智能/大数据时代的首选“全栈”语言,也值得每一位程序员去学习掌握。

名人推荐

640?wx_fmt=other
640?wx_fmt=other

读者福利

作者决定拿出一部分自己收藏的好书作为福利,以抽奖的形式免费赠予购买小册的用户(国内用户包邮),数量有限,大家就拼人品吧(抽奖规则时间在读者微信群同步)。

  1. 《C Primer Plus》

  2. 《动手玩转 Arduino》

  3. 《白帽子讲 Web 安全》

  4. 《深入理解程序设计——使用 Linux 汇编语言》

  5. 《图解服务器网络架构》

  6. 《构建 Oracle 高可用环境》

除了以上 6 本外,还有很多其它的好书,这里就不一一列举了。

扫描下面图片中左下角的二维码进入小册首页进行购买,本周新人半价优惠只要 9.9元,后面小册将逐步恢复至原价19.9元。

二维码扫不成的用户点击最下面的「阅读原文」也可以进入小册首页

640?wx_fmt=png

WINCC8.1工业组态软件安装与授权配置指南 SCADA系统作为工业自动化控制的核心平台,通过实时数据采集与监控实现生产流程可视化。WINCC作为西门子旗舰级组态软件,其8.1版本凭借稳定的运行时环境在汽车制造、流程工业等领域广泛应用。本文从工业控制系统软件安装规范切入,重点解析WINCC8.1与Automation License Manager的协同工作原理,详细说明包括系统环境检查、安装包校验、授权文件配置等关键技术环节。针对工程实施中常见的内存配置不足、授权管理器报错等典型问题,提供经过现场验证的解决方案,特别适用于需要进行产线监控系统升级维护 阅读详情

相关推荐

手把手教你用CMake和MinGW64编译libuvc:静态链接与动态链接的选择

本文详细指导如何在Windows平台上使用CMake和MinGW64编译libuvc库,并深入探讨静态链接与动态链接的选择策略。通过对比两种链接方式在部署复杂度、内存占用和版本管理等方面的差异,帮助开发者根据项目需求做出最优决策,实现高效的USB摄像头开发。

weixin_29171087的博客 255

深入理解RPC—核心原理

什么是 RPC? RPC 的全称是 Remote Procedure Call,即远程过程调用。简单解读字面上的意思,远程肯定是指要跨机器而非本机,所以需要用到网络编程才能实现,但是不是只要通过网络通信访问到另一台机器的应用程序,就可以称之为 RPC 调用了?显然并不够。 我理解的 RPC 是帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地一样的体验,我们不需要因为这个方法是远程调用就需要编写很多与业务无关的代码。 这就好比建在小河上的桥一样连接着河的两岸,如果没有小桥,我们需要通过划船、绕道等其他方

fangmeng1997的博客 2249

ST MotorControl Workbench 6.2.1 自定义硬件配置避坑指南

本文详细介绍了ST MotorControl Workbench 6.2.1在自定义硬件配置中的常见问题与解决方案,涵盖功率板配置、采样电路校准、电机参数设置及代码生成避坑指南,帮助开发者高效完成电机控制项目开发。

red88的博客 1024

《深入理解RPC框架原理与实现 华钟明》读书笔记

这本书更像是全面系统的讲解RPC,内容可以连贯起来,从计算机处理器发展到RPC的诞生,后面讲几种常见的RPC组件、通信协议、序列化协议,虽然内容不是很深入,但是对于小白较易理解,便于建立起框架知识,如从Socket到Java NIO 再到 Netty 、RPC等框架来讲解。挺不错的。算对得起100大洋。下面主要记录一下点,虽然偏理论,点到线到面才能形成自己的思维。主要讲RPC出现是为了解决什么问题,以及RPC的定义概念,概括一个RPC远程调用过程需要经历哪几个阶段?为什么调用本地接口就能实现调用远程的方法?

xiaosi的博客 2583

【分享】ArcGIS实现分子分母等标注实用技巧

前言 标注是显示在地图上的文字信息,是出图中不可或缺的重要元素,为了标注的样式丰富,摆放的位置灵活,因此给制图出图带来不少难度,以下分享几种本人在ArcGIS中的标注方法,实现上下标注、换行标注或分式标注的实用技巧。 普通模式与高级模式 默认为普通模式,勾选高级开启高级模式。 普通二分式标注(普通模式) [DLBM] & vbnewline & [DLMC] 标注效果展示 分行二分式标注(普通模式) [DLBM]& vbnewline & "——————" &

杨港 3万+

英飞凌TC3XX芯片---------CAN模块详解

CAN 总线是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 英文名称:Controller Area Network。最初由德国的 Bosch 公司开发,用于汽车电子系统之间的通信。CAN 总线具有高可靠性、抗干扰能力强和实时性好等特点,因此被广泛应用于需要可靠数据传输的领域。CAN2.0B 协议中的 CAN 最多支持 29 位 ID,但是网络架构中使用的一般是 11 位的标准帧 ID。如下图是标准 CAN FD 帧数据结构:关于 CAN 协议相关内容,本文不作阐述。

sky的博客 3671

HSF的原理分析

一.HSF的基本概念 HSF全称为High-Speed Service Framework,旨在为淘宝的应用提供一个分布式的服务框架,HSF从分布式应用层面以及统一的发布/调用方式层面为大家提供支持,从而可以很容易的开发分布式的应用以及提供或使用公用功能模块,而不用考虑分布式领域中的各种细节技术,例如远程通讯、性能损耗、调用的透明化、同步/异步调用方式的实现等等问题。   二.知识准备 通

zhoxing 8万+

《深入理解RPC框架原理与实现 华钟明》使用Netty、Zookeeper等实现一个简单的RPC框架、自定义注解、SPI机制实践与原理分析

深入理解RPC框架原理与实现 华钟明》读书笔记接下来就是实践练习环节,结合书中最简易的实现的RPC的源码和一些开源的源码,来自己一步一步手敲出一个自己升级版的RPC…通过实践,可以对Netty、Zookeeper等中间件、自定义注解、SPI机制、常见的序列化协议以及网络编程有一定的理解…一个RPC框架需要具备远程通信方式、通信协议、序列化方式等组件,需要动态代理实现本地存根等。

xiaosi的博客 1605

ros2 humble cartographer 2D激光雷达建图

Cartographer是一个支持多平台和传感器配置的SLAM的系统。 本文主要讲述在ros2 humble系统上cartographer的安装方法,以及如何配置参数实现自己的ros2 bag包的离线建图。

weixin_43087302的博客 6939

R语言 Chow Test

Chow 测试用于测试不同数据集上的两个不同回归模型中的系数是否相等。 该测试通常用于计量经济学领域,使用时间序列数据来确定数据在某个时间点是否存在结构性中断。 本教程提供了如何在 R 中执行 Chow 测试的分步示例 首先,我们将创建一些假数据: #create data data <- data.frame(x = c(1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 12, 12, 13,

Mrrunsen的博客 1947

深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务

RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主...

程序猿DD 3312

RK3568平台开发系列讲解(中断及异常篇)中断下半部:中断线程化

以前用 work 来线程化地处理中断,一个 worker 线程只能由一个 CPU 执行, 多个中断的 work 都由同一个 worker 线程来处理,在单 CPU 系统中也只能忍着 了。少数中断不能线程化,典型的例子是时钟中断,有些流氓进程不主动让出处理器,内核只能依靠周期性的时钟中断夺回处理器的控制权,时钟中断是调度器的脉搏。中断处理线程是优先级为50、调度策略是SCHED_FIFO的实时内核线程,名称是“irq/”后面跟着Linux中断号,线程处理函数是。,说明是线程化的中断,那么唤醒中断处理线程。

内核笔记 436

【RPC 专栏】深入理解 RPC 之协议篇

点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDB...

芋道源码 2587

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【RPC 专题】深入理解 RPC 之服务注册与发现篇

点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDB...

芋道源码 1544

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

深入理解RPC远程方法调用(一)

深入理解RPC远程方法调用(一) 1. 从多态说起 面向对象有三大特征:继承、封装、多态,我们先来说说多态。 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。 先来看传统的方法调用,在Java 中 All ...

fmy_happy的博客 4119

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深入理解RPC

一.什么是RPC RPC(Remote Procedure Call Protocol)远程过程调用协议(主要基于TCP协议),通过网络从远程主机程序上请求服务,而不需要了解底层网络技术的协议。简言之,RPC就是从一台客户端上通过参数传递的方式,调用另外一台服务器提供接口,并返回的结果。 二.RPC架构组件 (1)组件介绍 客户端(Client):服务调用者(消费者)。 客户端存根(Client Stub):存放服务器地址信息,将客户端请求的参数打包成网络传输格式(序列化),再传输...

向着高亮的地方 650

“老钱”说了算

在加拿大蒙特利尔的一个类似北京新光天地、上海恒隆广场的商场里,商场经理在介绍自己的客户群时说,他们大多花的都是“Old Money”。那是2000年左右,我第一次听到Old Money这个词。 “Old Money”指的是继承的钱。英国年代剧《唐顿庄园》里,当男主角问伯爵继承人、唐家大小姐“你们怎么赚钱”时,唐家大小姐回答他:“我们不赚钱,我们继承钱。”之所以这么强调“钱”字,是因为对“老钱

beyondqd的专栏 1422

【RPC 专栏】深入理解RPC之序列化篇--总结篇

&#13; &#13; &#13; &#13; &#13; &#13; &#13; 点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 中文详细注释的开源项目J...

芋道源码 4080

《Redis深度历险》《深入理解RPC》答读者问

今天我们不谈代码,不谈架构,我要谈谈人生,谈谈理想。读者们,请允许我冒充一回人生导师,也请读者们仔细聆听我的敦敦教诲^_^想知道老钱是如何源源不断做出好文章的输出的?不断...

codehole_的博客 214

分布式服务框架HSF学习

  HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础:1.标准Service方式的RPC  1)、Service定义:基于OSGI的Service定义方式  2)、TCP/IP通信:   IO方式:nio,采用mina框架   连接方式:长连接   服务器端有限定大小的连接池   WebService方式  3)、序列化:Hessian序列化机制2...

googitest的博客 941

【转】你应该知道的 RPC 原理

本文作者: 伯乐在线 - meituanalibaba 链接在校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示。这些程序的特点是服务消费方和服务提供方是本地调用关系。而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服

wangeshen的博客 1208

【RPC 专栏】深入理解RPC之序列化篇 —— Kryo

点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDB...

芋道源码 1615

深入理解RPC——RPC在企业服务中的核心价值

随着企业 IT 服务的不断发展,单台服务器逐渐无法承受用户日益增长的请求压力时,就需要多台服务器联合起来构成「服务集群」共同对外提供服务。同时业务服务会随着产品需求的增多...

codehole_的博客 522

深入理解 RPC 交互流程

文节我们讲解 RPC 的消息交互流程,目的是搞清楚一个简单的 RPC 方法调用背后究竟发生了怎样复杂曲折的故事,以看透 RPC 的本质。上图是信息系统交互模型宏观示意图,...

codehole_的博客 649

微服务系列--深入理解RPC底层原理与设计实践

在微服务系统当中,各个服务之间进行远程调用的时候需要考虑各种各样的场景,例如以下几种异常情况: 超时调用 失败重试 服务下线通知 服务上线通知 服务分组 请求队列 等等… 国内也有一些有先见之明的技术专家们对于这些技术有了较早的认知,因此很早便开始了关于远程服务调用中间件的开发。慢慢地,一些国内大厂自研的RPC调用框架开始变做了一款产品向市面上去进行推广。 今年年初的时候,我花了大概一个半月的业余时间自己打磨了一套RPC框架,通过实践尝试后发现,要想真正地落地一款给公司内部使用的

Danny_idea的博客 2551
上一篇: 知道Python语言的Google Fire项目么,我将它移植到了Java上
下一篇: Python最广为使用的并发库futures使用入门与内部原理
码洞
博客等级 码龄10年 41粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值