使用 gRPC 提供服务
1. 从日志库到网络服务
我们已经完成了日志库的编写,但目前这个库只能在单台计算机上由单个人使用。用户需要学习库的 API、运行代码并将日志存储在本地磁盘,这限制了用户群体。为了解决这些问题,我们可以将库转化为网络服务。与单台计算机上运行的程序相比,网络服务有以下优势:
- 可在多台计算机上运行,提高可用性和可扩展性。
- 允许多人与相同的数据进行交互。
- 提供易于使用的接口。
适用于编写服务以获得这些优势的场景包括为前端提供公共 API、构建内部基础设施工具以及创建用于开展业务的服务。我们将借助 Google 的 gRPC 来构建一个允许多人交互并在多台计算机上运行的服务。
2. 什么是 gRPC
在构建分布式服务时,常见的问题是维护客户端和服务器之间的兼容性和性能。为了确保兼容性,我们可以对 API 进行版本控制;为了优化性能,需要优化数据库查询、算法实现,减少请求和响应的序列化开销以及通信开销。
gRPC 是一个开源的高性能 RPC(远程过程调用)框架,它在解决这些问题上很有帮助。以下是构建网络服务时的重要目标以及 gRPC 如何帮助实现这些目标:
|目标|gRPC 的帮助|
| ---- | ---- |
|简单性|gRPC 处于中高级抽象层次,能决定请求和响应的序列化与结构,提供双向流等功能,还可通过中间件扩展,社区编写的中间件能解决很多服务构建中的问题。|
|可维护性|在有重大 API 变更时,可轻松编写和运行不同版本的服务;利用 protobuf 的字段版本控制处理小变更;请求和响应的类型检查可防止引入不兼容的变更。|
超级会员免费看
订阅专栏 解锁全文
1007

被折叠的 条评论
为什么被折叠?



