谷歌架构师分享 gRPC 与云原生应用开发 Go 和 Java 为例文档
随着微服务和云原生相关技术的发展,应用程序的架构模式已从传统的单体架构或分层架构转向了分布式的计算架构。尽管分布式架构本身有一定的开发成本和运维成本,但它所带来的收益是显而易见的。

如今,软件应用程序会经常通过计算机网络,借助进程间通信技术实现彼此间的连接。gRPC 是一种基于高性能 RPC(远程过程调用)的现代进程间通信风格,适用于构建分布式应用程序和微服务。随着微服务云原生应用程序的出现,gRPC 的采用率正在呈指数级增长。

本文由浅入深,介绍了 gRPC 相关技术,从通信模式到消息编码,从服务跟踪到容器化部署,并且文中的所有示例都提供了 Java 语言和 Go 语言的两种实现。不管你是只想了解这项新技术,还是想为自己的项目寻找新方案,相信都能从本文中找到感兴趣的话题。
限于文章篇幅原因,只能以截图的形式展示出来,有需要的小伙伴 点击这里凭本文截图即可获取!
内容总览
我们以实际用例阐述理论、概念的方式编排了本文的内容。全文广泛使用 Go 和 Java 编写示例代码,帮助你实际运用每个概念。我们将本文分为 8 章。
第 1 章 gRPC 入门
你将了解 gRPC 的基础知识,并将它与 REST、GraphQL 和其他 RPC 技术等类似的进程间通信风格进行对比。


第 2 章 开始使用 gRPC
你将初次体验使用 Go 或 Java 构建完整的 gRPC 应用程序。
关于 gRPC 的理论知识已经介绍得差不多了,接下来根据第 1 章介绍的知识从头构建真正的 gRPC 应用程序。本章将分别使用 Go 和 Java 构建简单的 gRPC 服务以及调用该服务的客户端应用程序。在此过程中,我们将学习如何使用 protocol buffers 声明 gRPC 服务定义、生成服务器端骨架和客户端存根、实现服务的业务逻辑、在 gRPC 服务器上运行我们实现的服务并通过 gRPC 客户端应用程序调用该服务。


第 3 章 gRPC 的通信模式
在这一章中,我们将使用真实的示例探索 gRPC 通信模式。
本章将讨论 gRPC 应用程序的 4 种基础通信模式:一元 RPC、服务器端流 RPC、客户端流 RPC 以及双向流 RPC。在这个过程中,我们会使用一些真实用例来展示每种模式,使用 gRPC IDL 进行服务定义,并使用 Go 语言来实现服务和客户端。


第 4 章 gRPC 的底层原理
本章将探索 gRPC 通信流的实现方式、所使用的编码技术以及 gRPC 中的底层网络通信技术的使用方法等,介绍涉及客户端调用给定 RPC 的消息流,并探讨其他相关问题,包括如何将其编排为网络上的 gRPC 调用、如何使用网络通信协议、如何在服务器端解排,以及如何调用对应的服务和远程函数等。


第 5 章 gRPC
本章将介绍一些关键的高级 gRPC 功能,包括使用 gRPC 拦截器在服务器端和客户端拦截 RPC、使用截止时间来指定等待 RPC 完成的时间、服务器端和客户端错误处理的最佳实践、使用多路复用在同一台服务器上运行多个服务、在应用程序间共享自定义的元数据、在调用其他服务的时候使用负载均衡和命名解析技术,以及压缩 RPC 调用以高效使用网络带宽。


第 6 章 安全的 gRPC
你将全面理解如何保护通信通道、如何认证以及如何控制用户对 gRPC 应用程序的访问。
本章将介绍一组安全基础措施和模式,以应对我们在启用应用级安全性时所面临的挑战。简而言之,我们将探索如何保护微服务之间的通信通道,并对用户进行认证和访问控制。让我们从保护通信通道开始讨论吧。


第 7 章 在生产环境中运行 gRPC
你将了解 gRPC 应用程序的整个开发生命周期。我们将讨论测试;gRPC 应用程序、与 CI/CD 集成、在 Docker 和 Kubernetes 上部署与运行以及观察 gRPC 应用程序。


第 8 章 gRPC 的生态系统;
本章将讨论一些并非 gRPC 核心实现的项目,但它们对于构建和运行真正的 gRPC 应用程序非常有帮助。这些项目是 gRPC 生态系统父项目的一部分,对于运行 gRPC 应用程序来说,这里提到的技术都不是强制要求的。如果你的需求与这些项目提供的功能类似,请探索并评估这些技术。


限于文章篇幅原因,就展示到这里了,有需要的小伙伴 点击这里凭本文截图即可获取!
评论