深入探索Go语言中的RPC:REST与gRPC实践
1. 存储层迁移实践
在数据存储方面,我们可以用新的实现替换存储层。例如,实现了一个新的存储接口,该接口可以同时将数据写入Bigtable和Spanner,并从两者中读取数据。在读取时,使用最新的数据戳,必要时更新记录。这样,在历史数据迁移期间,我们可以同时使用这两个数据存储。一旦同步完成,我们将二进制文件迁移到仅使用Spanner实现的版本,整个迁移过程在数千个关键操作运行时没有造成服务停机。
2. 数据库操作回顾
我们学习了如何使用 database/sql 访问通用数据存储,特别是Postgres。掌握了对Postgres进行读写操作以及实现事务的方法,还讨论了使用 database/sql 相对于特定数据库库(如 pgx )的优势。此外,通过接口抽象隐藏实现细节,能让我们更轻松地更改存储后端,并对依赖存储的代码进行独立测试。
3. RPC服务概述
在网络和分布式系统普及之前,系统间通信标准并未广泛使用。这种通信通常被称为远程过程调用(RPC),即一台机器上的程序调用另一台机器上运行的函数并接收输出。过去,单体应用很常见,服务器要么按应用隔离并进行垂直扩展,要么在IBM、Sun、SGI或Cray等公司的大型专业硬件上作为作业运行。系统间通信时,往往使用自定义的有线格式,如Microsoft SQL Server。
随着Web在21世纪初的发展,大型单体系统无法以合理成本为Google Search或Facebook等服务提供计算能力。为了支持这些服务,公司需要将大量标
超级会员免费看
订阅专栏 解锁全文
603

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



