开源我们的 Go 库

Dropbox 的成功很大程度上归功于 Python,这种语言使我们能够快速迭代和开发。然而,随着我们的基础设施成熟以支持我们不断增长的用户群,我们开始探索以更有效的方式扩展我们的系统的方法。大约一年前,我们决定将性能关键型后端从 Python 迁移到 Go,以利用更好的并发支持和更快的执行速度。这是一个巨大的努力——大约 200,000 行 Go 代码——由一小群工程师承担。至此,我们已成功将基础架构的主要部分迁移到 Go。

阻碍我们开发进程的一个反复出现的主题是缺乏构建大型系统所需的健壮库。这并不奇怪,因为 Go 仍然是一门非常年轻的语言。为了解决这个问题,我们的团队开始构建各种库以提供更好的抽象,例如连接管理和 memcache 客户端。我们很高兴地宣布,我们正在开源这些库,以帮助更广泛的社区构建大规模生产系统。

我们已经包含了几个库来启动这项工作。强调一些:

  • caching:为构建缓存层提供一般抽象。
  • errors:增强标准错误接口并公开堆栈跟踪信息。
  • database/sqlbuilder:允许开发人员以编程方式生成 sql 语句。
  • memcache:实现了一个功能齐全的 memcache 客户端库,支持连接池和灵活的分片。
  • net2:添加连接管理功能。
  • (以及我个人最喜欢的 hash2,它包括一种节省空间的基于排列的一致哈希算法)

我们将继续扩展存储库中的库集:
https ://github.com/dropbox/godropbox

为了确保我们继续投资于这项开源工作,我们承诺在内部使用此存储库的公共版本。我们正在迁移我们的内部系统以直接使用此存储库中的库。这可确保所有修复和改进在内部撤回之前都已公开应用。

我们希望您能加入我们的社区并帮助使这些库变得更好!