golang从入门到微服务框架 (golang从零开始学)

概述

当我们通过*t下b载**一个文件的时候,有没有想过为什么*t下b载**会比普通*载下**要快呢?这中间到底经历了哪些有趣的事情呢?这篇文章将为大家揭晓*t下b载**的秘密,并且我们将从零开始用golang手写一个*t下b载**的客户端,其他语言类似。

目录

本教程将分为两部分来详细介绍*t下b载**的细节:

1.通过示例演示*t下b载**的基本流程和原理

2.使用golang从0开始手写一个*t下b载**的客户端

3.针对客户端的缺点讨论改进方案

*t下b载**原理

BitTorrent是一个从互联网*载下**和分发文件的协议,在传统的client/server架构中,*载下**者们通常都从一个中心服务器获得一个完整文件内容,但在BitTorrent网络中,*载下**者们通常从其他人那里*载下**一个文件的分片,并且分享自己已经*载下**的分片,这样就构成了一个p2p(peer-to-peer)网络。用图片来描述就是:

如何用golang写爬虫,golang编程从零开始

cs网络和p2p网络

概念

当我们要通过p2p网络*载下**一个文件时,我们首先会得到一个.torrent格式的文件,里面包含了要*载下**的文件的信息:从哪里知道其他人也在*载下**改文件,文件的指纹信息等。接下来需要解决的问题就是:我们如何找到其他的peers,这就像你想移民但你自己又没有途径,这时候你可以找一个中介,这个中介我们称之为tracker,他记录了peers的通信方式,peer和peer之间可以通过tracker来发现彼此。当我们获得了其他peers的信息之后,就可以和他们进行连接并*载下**文件了。拥有完整资源的peer都可以做种子。

搭建P2P网络

因此接下来我们将在本机手动搭建一个p2p网络,用以演示p2p的工作原理。首先需要一个tracker服务器BitCometTracker,peers们可以注册自己到该服务器,其他人从tracker服务器获得peers的列表。接下来需要用两个bt客户端,我们选择BitComet和qBittorrent。uTorrent有广告和流氓软件,所以不用他。

1.启动BitCometTracker,启动后会显示使用的端口8080

如何用golang写爬虫,golang编程从零开始

2.启动BitComet客户端,点击“文件”-》“制作torrent文件”-》选择一个文件,填写tracker服务器地址为http://127.0.0.1:8080/announce,任务列表中就会出现一个待上传的列表。这个过程俗称“做种”

如何用golang写爬虫,golang编程从零开始

bt种子

3.把刚才生成的.torrent文件拷贝到其他目录,启动qbittorrent客户端,在客户端中载入刚才拷贝过来的.torrent文件,可以看到正在*载下**

如何用golang写爬虫,golang编程从零开始

*t下b载**

好,到现在为止,我们已经了解了BT*载下**的原理和流程,下篇文章我们将用golang实现一个这样的简易的BT*载下**客户端。敬请关注!