Skip to content

Latest commit

 

History

History
129 lines (78 loc) · 7.86 KB

File metadata and controls

129 lines (78 loc) · 7.86 KB

零、前言

Go 编程语言是在谷歌开发的,目的是解决他们在为基础设施开发软件时遇到的问题。他们需要一种静态类型化的语言,而不会减慢开发人员的速度,能够即时编译和执行,利用多核处理器,并且能够轻松地跨分布式系统工作。

使用 Go 进行分布式计算的任务是轻松地进行并发性和并行性推理,并为读者提供在 Go 中设计和实现此类程序的信心。我们将首先深入研究 goroutines 和 Channel 背后的核心概念,这两个基本概念是构建语言的基础。接下来,我们将使用 Go 和 Go 的标准库设计和构建一个分布式搜索引擎。

这本书是给谁的

这本书是为熟悉 Golang 语法并对基本 Go 开发工作方式有很好了解的开发人员编写的。如果您经历过 web 应用程序产品周期,这将是有利的,尽管这不是必需的。

这本书涵盖的内容

第 1 章Go 开发环境涵盖了开始使用 Go 和本书其余部分所需的主题和概念列表。其中一些主题包括 Docker 和 Go 中的测试。

第 2 章理解 Goroutines介绍了并发性和并行性主题,然后深入探讨了 Goroutines、Go 的运行时调度器等的实现细节。

第 3 章通道和消息首先解释了控制并行性的复杂性,然后介绍了使用不同类型通道控制并行性的策略。

第 4 章RESTful Web提供了在 Go 中开始设计和构建 REST API 所需的所有上下文和知识。我们还将使用不同的可用方法讨论与 RESTAPI 服务器的交互。

第 5 章介绍了 Goophr,开启了关于分布式搜索引擎的讨论,使用 OpenAPI 规范描述 REST API,并使用 OpenAPI 描述搜索引擎组件的职责。最后,我们将描述项目结构。

第 6 章古佛礼宾部通过详细描述古佛礼宾部的第一个组成部分的工作原理,深入探讨了古佛礼宾部的第一个组成部分。借助于架构和逻辑流程图,这些概念得到了进一步的阐述。最后,我们将了解如何实现和测试该组件。

第 7 章Goophr 图书管理员详细介绍了负责维护搜索词索引的组件。我们还将研究如何搜索给定的术语,以及如何对搜索结果进行排序,等等。最后,我们将了解如何实现和测试该组件。

第 8 章部署 Goophr将我们在前三章中实现的所有内容汇集在一起,并在本地系统上启动应用程序。然后,我们将通过添加一些文档并通过 RESTAPI 对其进行搜索来测试我们的设计。

第 9 章Web 级架构的基础介绍了如何设计和扩展系统以满足 Web 级需求这一庞大而复杂的主题。我们将从运行在单个服务器上的单一 monolith 实例开始,并将其扩展到跨多个区域,并提供冗余保护,以确保服务永远不会停机,甚至更多。

充分利用这本书

  • 本书中的材料旨在实现实际操作方法。在整本书中,我们都有意识地事先向读者提供所有相关信息,这样,如果读者愿意,他们可以尝试自己解决问题,然后参考书中提供的解决方案。
  • 书中的代码没有任何超出标准库的 Go 依赖项。这样做是为了确保书中提供的代码示例永远不会改变,这也允许我们探索标准库。
  • 书中的源代码应该放在$GOPATH/src/distributed-go处。示例的源代码将位于$GOPATH/src/distributed-go/chapterX文件夹中,其中X代表章节号。
  • 下载并安装 Gohttps://golang.org/中的 Dockerhttps://www.docker.com/community-edition 网站

下载示例代码文件

您可以从您的帐户下载本书的示例代码文件 http://www.packtpub.com 。如果您在其他地方购买了本书,您可以访问http://www.packtpub.com/support 并注册,将文件直接通过电子邮件发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册 http://www.packtpub.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。

下载文件后,请确保使用以下最新版本解压或解压缩文件夹:

  • WinRAR/7-Zip for Windows
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • 适用于 Linux 的 7-Zip/PeaZip

该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Distributed-Computing-with-Go 。如果代码有更新,它将在现有 GitHub 存储库中更新。

我们的丰富书籍和视频目录中还有其他代码包,请访问https://github.com/PacktPublishing/ 。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:https://www.packtpub.com/sites/default/files/downloads/DistributedComputingwithGo_ColorImages.pdf

使用的惯例

本书中使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。例如,“现在我们已经准备好了所有代码,让我们使用Dockerfile文件构建 Docker 映像。”

代码块设置如下:

// addInt.go 

package main 

func addInt(numbers ...int) int { 
    sum := 0 
    for _, num := range numbers { 
        sum += num 
    } 
    return sum 
} 

当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:

// addInt.go 

package main 

func addInt(numbers ...int) int { 
    sum := 0 
    for _, num := range numbers { 
        sum += num 
    } 
    return sum 
} 

任何命令行输入或输出的编写方式如下:

$ cd docker

粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词,例如在菜单或对话框中,也会出现在文本中,如下所示。例如,“从管理面板中选择系统信息

警告或重要提示如下所示。

提示和技巧如下所示。

联系

我们欢迎读者的反馈。

一般反馈:发送电子邮件feedback@packtpub.com,并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发送电子邮件至questions@packtpub.com

勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问http://www.packtpub.com/submit-errata ,选择您的书籍,点击勘误表提交表单链接,然后输入详细信息。

盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packtpub.com与我们联系,并提供该材料的链接。

如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问http://authors.packtpub.com

评论

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。

有关 Packt 的更多信息,请访问packtpub.com