Go语言 gRPC 简述
参考文章:
聊聊gRPC的特性和背后设计的原则(一)-腾讯云开发者社区-腾讯云
grpc-我们为什么要用gRpc?gRpc快在哪里?_grpc 优点-CSDN博客
GRPC详解-CSDN博客
1. 什么是gRPC
gRPC 是一个高性能 远程调用(RPC)框架,屏蔽分布式计算中的各种调用细节,可以像本地调用一样调用远程的函数。
2. 为什么要用gRPC
(1) 性能高:使用 protobuf,性能高于json(快6倍); 使用 http2.0,性能高于 http1.1
(2) 生态好:开源,而且背靠Google,连nginx都支持gRPC
(3) 强数据类型:编译环节就帮助避免了数据类型问题。
(4) 跨语言:同一个协议文件(.proto),不用修改,可以使用在多种语言上,包括 go,java,c
3. 使用方式
(1) gRPC 通过 protocol buffers (.proto文件) 来定义接口,接口由服务端和客户端共同使用。
(2) 服务端将方法或者类注册到服务中。
(3) 客户端只要连接成功,就可以调用注册进服务的接口,把请求发到服务端,并获得返回。
4. 为什么protobuf比json快?
主要是因为数据结构节省空间,具体包括:
(1) 无需分隔符:存储了字段的类型,可以直接计算出value的长度,无需匹配分隔符。
(2) 空字段省略:若字段没有被设置数字值,不需要进行编码。json需要传key和空值value。
(3) 二进制key:key 用字段的数字值转换成二进制表示,比json的key用字符串表示节省空间。
5. http2.0为什么比http1.1性能高?
(1) 多路复用:
http1:一次请求,一个响应,建立一个连接用完关闭,每一个请求都要建立一个连接。
http2:多个请求可并行执行,某个请求任务耗时严重,不会影响到其它连接的正常执行
而且,http2 减少了连接数,避免了频繁重建tcp,改善网络拥塞情况。
(2) 数据压缩:
http1:文本格式
http2:二进制格式,并且对body进行gzip压缩。
(3) 二进制分帧:
http1:以分隔符分割消息的数据,必须按顺序发送,在完成之前不能停止。
http2:将所有传输的信息分割为更小的消息和帧,可以乱序发送,然后根据每个帧首部的流标识符号进行组装。
(4) 支持服务器主动推送
http2 主动推送资源,节省前端的请求次数。
6. 同步和异步
gRPC同时支持同步调用和异步调用。
同步RPC调用时会一直阻塞直到服务端处理完成返回结果。
异步RPC是客户端调用服务端时不等待服务段处理完成返回,而是服务端处理完成后主动回调客户端。
7. 负载均衡
gRPC并没有直接实现负载均衡的功能,但是提供了负载均衡的接口。
相关文章:
Go语言 gRPC 简述
参考文章: 聊聊gRPC的特性和背后设计的原则(一)-腾讯云开发者社区-腾讯云 grpc-我们为什么要用gRpc?gRpc快在哪里?_grpc 优点-CSDN博客 GRPC详解-CSDN博客 1. 什么是gRPC gRPC 是一个高性能 远程调用(RPC)框架&#…...
信息系统项目管理师0136:工具与技术(8项目整合管理—8.9结束项目或阶段—8.9.2工具与技术)
点击查看专栏目录 文章目录 8.9.2 工具与技术 8.9.2 工具与技术 专家判断 结束项目或阶段过程中,应征求具备如下领域相关专业知识或接受过相关培训的个人或小组的意见,涉及领域包括:管理控制;审计;法规与采购…...
appium-driver方法待整理。。
app C:\Users\v-hongweishi\AppData\Local\Programs\Xmind\Xmind.exe deviceName DESKTOP-7NJ1ENB platformName Windows 应用程序ID(AppId)是应用程序用户模型 ID (AppUserModelID),简称 AUMID Outlook …...
Android Ktor 网络请求框架
Ktor 是一个由 JetBrains 开发的用于 Kotlin 编程语言的应用框架,旨在创建高性能的异步服务器和客户端应用程序。由于完全基于 Kotlin 语言,Ktor 能够让开发者编写出简洁、可读性强且功能强大的代码,特别适合那些已经熟悉 Kotlin 的开发人员。…...
交互设计如何助力传统技艺在当代复兴?
背景介绍 榫卯是中国传统木工中一种独特的接合技术,它通过构件间的凸凹部分相互配合来实现两个或多个构件的紧密结合。这种结构方式不依赖于钉子或其他金属连接件,而是利用木材自身的特性,通过精巧的设计和工艺,实现构件间的稳定…...
使用 Django Rest Framework 构建强大的 Web API
文章目录 安装 Django Rest Framework创建序列化器创建视图和 URL 路由配置认证和权限测试 API Django Rest Framework(DRF)是一个强大的工具,用于在 Django Web 框架中构建灵活且功能丰富的 Web API。它提供了许多功能,包括序列化…...
老师如何对付挑事儿的家长?
身为老师,你有没有遇到过这样的家长:孩子在学校里闹点小矛盾,或者作业分数有点争议,他们就气势汹汹地来找你,说你偏心,甚至在其他家长面前说三道四?面对这种爱“挑事”的家长,老师们…...
若安装了Python3且没有删除Python2,那么启动yum命令会报错:
若安装了Python3且没有删除Python2,那么启动yum命令会报错: File "/usr/bin/yum", line 30 except KeyboardInterrupt e: ^ SyntaxError: invalid syntax 情况一报错原因 这种情况的原因是yum配置文件解释器默认是/…...
JVM(四)
在上一篇中,介绍了JVM组件中的运行时数据区域,这一篇主要介绍垃圾回收器 JVM架构图: 1、垃圾回收概述 在第一篇中介绍JVM特点时,有提到过内存管理,即Java语言相对于C,C进行的优化,可以在适当的…...
Leetcode373.查找和最小的 K 对数字
文章目录 题目描述解题思路代码 题目链接 题目描述 给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (…...
windows 安装 使用 nginx
windows 安装 使用 nginx nginx官网下载地址:https://nginx.org/en/download.html 下载稳定版本即可 下载压缩包解压到即可 进入文件夹中,打开命令行窗口,执行启动命令 start nginx.exe验证(默认是80端口)&#x…...
【运维】Linux 端口管理实用指南,扫描端口占用
在 Linux 系统中,你可以使用以下几种方法来查看当前被占用的端口,并检查 7860 到 7870 之间的端口: 推荐命令: sudo lsof -i :7860-7870方法一:使用 netstat 命令 sudo netstat -tuln | grep :78[6-7][0-9]这个命令…...
Android笔记--应用安装
这一节了解一下普通应用安装app的方式,主要是唤起系统来安装,直接上代码: 申请权限 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name"android.permission.WRITE_EXT…...
今日分享站
同志们,字符函数和字符串函数已经全部学习完啦,笔记也已经上传完毕,大家可以去看啦。字符函数和字符串函数and模拟函数 加油!!!!!...
基于python flask的旅游数据大屏实现,有爬虫有数据库
背景 随着旅游行业的快速发展,数据在旅游决策和规划中的重要性日益凸显。基于 Python Flask 的旅游数据大屏实现研究旨在结合爬虫技术和数据库存储,为用户提供全面、实时的旅游信息展示平台。 爬虫技术作为数据采集的重要手段,能够从各种网…...
海尔智家牵手罗兰-加洛斯,看全球创牌再升级
晚春的巴黎西郊,古典建筑群与七叶树林荫交相掩映,坐落于此的罗兰加洛斯球场内座无虚席。 来自全球各地的数万观众,正与场外街道上的驻足者们一起,等待着全世界最美好的网球声响起…… 当地时间5月26日,全球四大职业网…...
【busybox记录】【shell指令】unlink
目录 内容来源: 【GUN】【unlink】指令介绍 【busybox】【unlink】指令介绍 【linux】【unlink】指令介绍 使用示例: 删除文件 - 默认 常用组合指令: 指令不常用/组合用法还需继续挖掘: 内容来源: GUN &#x…...
如何恢复被盗的加密货币?
本世纪,网络犯罪的首要目标是加密货币。 这要归功于加密货币的日益普及和价值,网络犯罪分子已经认识到经济收益的潜力,并将重点转向利用这种数字资产中的漏洞。 在今天的文章中,我们将讨论加密货币恢复和被盗加密货币恢复。 我们…...
英语学习笔记29——Come in, Amy!
Come in, Amy! 进来,艾米! shut v. 关严 区别:shut the door 把门关紧 口语:Shut up! 闭嘴! 态度强硬,不礼貌 例句:请不要把门关严。 Don’t shut the door, please. bedroom n. …...
grpc NewClient 报错 name resolver error: produced zero addresses
场景 grpc版本: google.golang.org/grpc v1.64.0 连接客户端: import("google.golang.org/grpc""net" ) // 拿着设备ID 去获取连接 var connMap map[string]net.Conn conn, err : grpc.NewClient("device_id",grpc.WithContextDialer(func(ctx…...
Windows/Mac/Linux三平台实测:X-AnyLabeling自动标注YOLO数据集避坑指南
Windows/Mac/Linux三平台实测:X-AnyLabeling自动标注YOLO数据集避坑指南 在计算机视觉项目的开发流程中,数据标注往往是耗时最长的环节之一。传统手动标注不仅效率低下,还容易因疲劳导致标注质量下降。X-AnyLabeling作为一款新兴的开源标注工…...
WebLaTex:终极免费在线LaTeX编辑器完整指南
WebLaTex:终极免费在线LaTeX编辑器完整指南 【免费下载链接】WebLaTex A complete alternative for Overleaf with VSCode Web Git Integration Copilot Grammar & Spell Checker Live Collaboration Support. Based on GitHub Codespace and Dev containe…...
从一条SQL到HDFS文件:手把手拆解Hive在YARN上的完整‘跑路’流程
从一条SQL到HDFS文件:手把手拆解Hive在YARN上的完整执行链路 当你在Beeline客户端输入一条看似简单的HiveQL查询时,背后究竟发生了什么?这条SQL如何穿越层层组件,最终变成分布式文件系统上的数据块操作?本文将带你以系…...
open_clip多模态模型实战指南:从技术原理到产业落地
open_clip多模态模型实战指南:从技术原理到产业落地 【免费下载链接】open_clip An open source implementation of CLIP. 项目地址: https://gitcode.com/GitHub_Trending/op/open_clip 核心价值:为什么选择open_clip? 在当今AI应用…...
PyKitti终极指南:三步搞定KITTI自动驾驶数据处理
PyKitti终极指南:三步搞定KITTI自动驾驶数据处理 【免费下载链接】pykitti Python tools for working with KITTI data. 项目地址: https://gitcode.com/gh_mirrors/py/pykitti 你是否正在为复杂的KITTI数据集处理而头疼?面对激光雷达点云、立体相…...
从拖拽到对话:衡石Agentic BI如何重构企业数据分析的交互范式
传统BI的交互困局在商业智能发展史上,2025年或许会被标记为一个转折点。这一年,衡石科技发布的HENGSHI SENSE 6.0 Agentic BI平台,标志着数据分析从"被动工具"正式迈入"主动智能体"时代。过去二十年,"拖拽生成报表"一直被奉为BI工具的黄金标准。…...
杰理芯片不用代码 给别人下载升级方法
先打开sdk 打开cpu找到cpu里的tools 然后把tools整个压缩成压缩包发给要下载升级的人就好下载升级方式:先连接好升级工具 然后打开tools 之后双击download.bat一般出现数字 例如 3.7.25.67 就是一系列数字就是升级成功了...
Auto-Photoshop-StableDiffusion-Plugin:在Photoshop中无缝集成AI图像生成的技术实现方案
Auto-Photoshop-StableDiffusion-Plugin:在Photoshop中无缝集成AI图像生成的技术实现方案 【免费下载链接】Auto-Photoshop-StableDiffusion-Plugin A user-friendly plug-in that makes it easy to generate stable diffusion images inside Photoshop using eithe…...
GraphRAG大揭秘:微软如何用知识图谱让AI问答更精准,效率翻倍!
微软推出的GraphRAG通过引入知识图谱技术,有效解决了传统RAG在信息连接和归纳总结上的不足。GraphRAG利用大模型构建知识图谱,实现实体和关系的结构化表示,显著提升答案的准确度与完整性,并支持多跳推理。文章详细介绍了知识图谱的…...
保姆级教程:用C++刷穿GPLT天梯赛L1基础题(附避坑指南)
从零开始征服GPLT天梯赛:C选手的L1解题全攻略 第一次接触GPLT天梯赛的L1级别题目时,我盯着屏幕上那道关于"零头就抹了吧"的数学题发呆了整整十分钟。作为过来人,我完全理解新手面对算法竞赛时那种既兴奋又忐忑的心情。本文将用最接…...
