零、系列目录
写这套文章的时候,不会完全按照目录的顺序一篇一篇写, 大家可以到目录中直接找到对应的章节进行查看。
一、网络拓扑图
在真正开始介绍系统的各个组件之前,我们先来了解一下这套爬虫系统的整体拓扑结构,从物理层面对整套系统有一个感知。
从上面图片可以看出,整套系统被规划为两套网络环境,一套公网环境,一套内网环境。
实际生产当中,
二、公网环境
公网环境主要用于代理相关服务(代理池维护、代理调度等)。另外,一部分报告文件我们也会放到阿里云的 OSS 上,便于下载。
三、内网环境
内网环境是我们整套系统的核心运行环境,各类服务、组件、中间件、控制器等等内容都在这套内网环境中运行。
实际上,我们的这套内网环境并不在一个真实的物理环境当中,因为各种原因,我们内网分为三个集群,分别部署在全国三个不同的城市(并不是因为什么见不得人的原因,只是因为分别部署在不同的地点可以由不同的人运维管理,分担一下任务)。我们在设计时只要求各个物理机之间网络互通即可。
其中 手机控制机 [MCS]
和 手机真机
这里稍微有一点特殊,因为真机和控制机之间是通过 usb 连接,然后控制机使用 adb 指令控制真机,所以必须要求真机和控制机在物理上处于同一个地点。
四、坑点解析
针对每一篇文章,我都会在最后把这部分描述到的内容做一个 坑点解析
,主要就是为了描述一下我在这个过程中遇到了哪些坑,有的跨过去了,有的可能还在坑里,也有的隐藏的坑可能还没有暴露出来,也欢迎大家指出,我们一起讨论。
[坑0] 网络环境
这里有一个坑,跟大家提个醒,整套系统我们在设计时,其实是考虑了异地部署的情况,实际上,只要我们保证内网环境的各个组件之间网络互通就可以,换句话说,都放到公网环境也可以。但最开始处于安全方面的考虑,我们并没有直接把全部服务在公网进行部署。
开发阶段并没有什么问题,因为服务都是局域网,数据量也没有那么大,所有的一切都很流畅。
可是后面异地部署之后出了问题了,首先是网络延迟,并发如何处理,如何维护数据的版本。
关于网络的另外一个问题,如何异地组网?问问你们公司网络工程师吧,听听他的看法。
[坑1] 网络 adb 调试
前面说了,因为手机需要通过 usb 连接在控制机上,所以必须要保证手机和控制机物理上在一起。但其实,如果单纯为了使用 adb
的话,是可以通过网络连接手机使用 adb
的。
我们曾经尝试过使用网络 adb
,开发过程很顺利,但经常出现 adb
指令没有响应的情况,解决方式也比较简单,重启 adb-server
就可以了,这对开发来讲没什么问题,但放在生产环境上,风险就大了些。
最后,不得不放弃网络 adb
的方案,采用更稳妥的 线连
。
[坑2] 云手机
但实际上, 现在有一些提供 云手机
服务的厂商。
云手机,顾名思义,运行在 云端
的手机,各类体验同真机类似。如果你的方案中可以很稳定的使用 网络 adb
,那你可以试试云手机,非常棒。
另外,有些云手机厂商也是支持私有云部署的,直接把机器、开发版都寄过来,放在自己局域网里面,安全又方便,也不像真机这样难打理。
爽歪歪。
好了,今天主要和大家分享一下整套系统的网络拓扑结构,未来如果提到了哪个服务只要大家知道在哪个网络环境里就行。
以上。
祝大家变的更强。