惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
Help Net Security
Help Net Security
腾讯CDC
Project Zero
Project Zero
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Threatpost
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
SegmentFault 最新的问题
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
A
Arctic Wolf
B
Blog RSS Feed
Forbes - Security
Forbes - Security
P
Privacy & Cybersecurity Law Blog
Attack and Defense Labs
Attack and Defense Labs
V2EX - 技术
V2EX - 技术
P
Proofpoint News Feed
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
T
Tenable Blog
MyScale Blog
MyScale Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
W
WeLiveSecurity
D
DataBreaches.Net
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
罗磊的独立博客
The Last Watchdog
The Last Watchdog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Vulnerabilities – Threatpost
美团技术团队
Microsoft Security Blog
Microsoft Security Blog

顾宇的博客

用 AI 重启生活 初始化 MacOS 关于我 再次见面,期待相遇 演讲和分享 如何通过政策红利获利?——海南发展(SZ.002163)交易复盘 2025年的总结 2024年的总结 2023年的总结 2022年的总结 《敏捷测试价值观、方法与实践》序 【翻译】函数式编程中的领域驱动设计 【翻译】通过跟踪技术债来改进你的开发实践 【翻译】不要把测试用例自动化 【翻译】持续部署 vs 持续交付 【翻译】测试替身 【翻译】做多少测试才足够 【翻译】蓝绿部署的起源 【翻译】持续部署 【翻译】作为演进式架构的微服务架构 【翻译】分布式计算谬误 【翻译】微服务和分布式对象第一法则 采用 Multipass 管理本机虚拟 K8S 集群 博客主题升级到 Congo 2.0 【翻译】Terraform 最佳实践:模块组合 【翻译】Kubernetes 部署语言(Kubernetes Deployment Language) 通过 Vagrant 一键初始化 K8S 集群 2021年的总结 通过 Github Actions 部署 Mkdocs 文档 博客迁移到了新的 Hugo 主题 2020年的总结 2019年的总结 千人规模组织级 DevOps 演进的 9 个实践技巧 从技术雷达看 DevOps 的十年——容器技术与微服务 DevOps 模式 - 引入 DevOps 顾问 DevOps 模式 - 索引 DevOps 模式 - 定义你的DevOps 从技术雷达看 DevOps 的十年——基础设施即代码与云计算 DevOps 模式 - 采用模式语言讨论 DevOps 从星巴克店面运营学习 DevOps 从技术雷达看 DevOps 的十年——DevOps与持续交付 【翻译】微服务安全:所有应该被问到的问题 云原生下的 DevSecOps 实践 【翻译】软件定义交付宣言 微服务演进中的经验和反思 迟到的 2018 年终总结 成功微服务实施的组织演进 从第19期技术雷达看 DevOps 的发展趋势 成功微服务实施的技术演进 我们如何衡量微服务的成功? 关于四周四 AWS 架构工作坊的设计和实践 讨论微服务之前,你知道微服务的 4 个定义吗? 公有云(AWS)上的生产环境架构优化案例和迁移套路总结 公有云(AWS)上的生产环境性能分析案例 一怒之下,我又写了一个开源流量测试工具 采用 DevOps 故事落地 DevOps 测试驱动开发 Nginx 配置 云原生 DevOps 翻译-混沌工程的原则 Serverless 风格的微服务的持续交付 从最新一期技术雷达看 DevOps 的发展 关于 DevOps ,咱们聊的可能不是一回事 Serverless 风格的微服务的架构案例 提升微服务实施效率的 7 个步骤 微服务实施常被忽视的 5 个难点 你的 CI 在挖矿吗? DevOps前世今生 - 4. DevOps 的文化 DevOps发展的九个趋势 不要让你的持续集成服务器成为安全隐患 DevOps 前世今生 - 3. DevOps 的目标和核心 DevOps 前世今生 - 2. DevOps 矛盾从何而来 DevOps 前世今生 - 1. DevOps 编年史
【翻译】gRPC 的动机和设计原则
顾宇 · 2022-03-31 · via 顾宇的博客
  1. 顾宇的博客/
  2. Blogs/
  3. 【翻译】gRPC 的动机和设计原则/

原文: https://grpc.io/blog/principles/

动机 #

十多年来,Google 一直在使用一个名为 Stubby 的通用 RPC 基础设施来连接数据中心内和跨数据中心运行的大量微服务。我们的内部系统长期以来一直采用今天流行的微服务架构。拥有统一的跨平台 RPC 基础架构可以在整个组织范围内推广效率、安全性、可靠性和行为分析,这对于支持该时期令人难以置信的增长至关重要。

Stubby 有许多很棒的特性——但是,它不基于任何标准,并且与我们的内部基础设施耦合太紧密,不适合公开发布。随着 SPDY、HTTP/2 和 QUIC 的出现,许多相同的特性已经出现在公共标准中,以及 Stubby 不提供的其他特性。很明显,是时候重新设计 Stubby 以利用标准化技术,并将其扩展到移动、物联网和云的使用场景下。

原则和需求 #

采用服务而非对象,采用消息而非引用 #

推广系统间粗粒度消息交换的微服务设计理念,同时避免 分布式对象的陷阱和无视 网络的谬误

覆盖率和简单性 #

该技术栈应该在每个流行的开发平台上都可用,并且人们可以轻松地为他们选择的平台构建。 它在 CPU 和内存有限的设备上应该是可以使用的。

自由和开放 #

让所有人自由使用所有基本功能。 将所有工件作为开源工作发布,并带有应促进而不是阻碍采用的许可证。

互操作性和可达性 #

有线网络协议必须能够穿越常见的互联网基础设施。

通用性和高性能 #

与特定于场景的技术栈相比,该技术栈应适用于广泛的场景,同时几乎不会牺牲性能。

分层 #

技术栈的关键方面必须能够独立发展。 对格式的修订不应破坏应用层绑定。

消息内容不可知 #

协议和实现必须允许不同的服务使用不同的消息类型和编码,例如protocol buffers、JSON、XML和Thrift。 同样,数据压缩的需求因用例和数据类型而异:协议应允许可插拔的压缩机制。

使用流 #

存储系统依靠流和流控制来传输大型数据集。其他服务,如语音到文本或股票行情,依靠流来表示时间相关的消息序列。

阻塞和非阻塞 #

支持客户端和服务器交换的消息序列的异步和同步处理。 这对于在某些特定平台上的伸缩和流处理至关重要。

撤销和超时 #

运维是昂贵且长期的——撤销允许服务器在客户端运行良好时回收资源。当跟踪工作中的调用链时,可能会出现级联撤销。客户端可能会提示调用超时,这允许服务根据客户端的需要调整行为。

优雅关闭 #

必须允许服务器通过拒绝新请求而优雅地关闭,并同时继续处理正在进行的请求。

流控制 #

客户端和服务器之间的计算能力和网络带宽往往不平衡。流控制允许更好的缓冲区管理以及对过度活跃的对端提供 DOS 保护。

可插拔 #

协议只是功能性 API 基础设施的一部分。 大型分布式系统需要安全、健康检查、负载平衡和故障转移、监控、跟踪、日志记录等。 其实现应当提供扩展点以允许这些功能的插拔,并提供默认实现。

作为 API 扩展 #

服务之间必要协作的扩展应该尽可能使用 API 而不是通过协议。这类的扩展可能包括健康检查、服务自省、负载监控和负载均衡分配。

元数据交换 #

常见的横切关注点,如身份验证或跟踪,依赖于不属于服务接口声明的数据交换。部署依赖于它们以不同于服务暴露的单个API的速度演进这些特性的能力。

标准化状态码 #

客户端通常以数量有限的方式响应 API 调用返回的错误。应当限制状态代码的命名空间以使处理这些错误的策略更清晰。 如果需要支持丰富的领域特定状态,则可以使用元数据交换机制来提供。

(完)