什么是分离式部署?
作者目前接触到的所有PHP爬虫框架都仅能支持到分布式部署,
无法做到支持分离式部署,而爬山虎支持分离式部署,这也是爬山虎的核心亮点之一,
那么什么是分离式部署呢?
分离式部署指的是基于worker
的更细粒度的分布式部署,是更纯的异步架构,
传统的爬虫框架对于 worker角色
的实现都是包裹在同一个进程组,
而爬山虎则是依托workerman天然的 worker角色
可以将业务进程隔离到不同机器的不同进程组,
这为爬山虎提供分离式部署提供了支持和保障,从而实现业务进程的颗粒化控制。
分离式部署的优点
01、分离式部署的本质是一种更细粒度的分布式部署,所以具备分布式部署的优点, 但分离式部署允许我们可以在不同的机器上独立部署一个或一组特定的同类业务 worker, 从而实现业务进程的颗粒化控制,最大化发挥每台机器的爬虫性能。
02、分离式部署的另外一大好处是可以避免不同业务组进程之间的相互干扰, 无论是上线还是下线对应业务进程组或者是所属的服务器,都非常的平滑方便。
爬山虎拥有三种不同的业务进程
01、Producer进程
此类进程叫做生产器进程
,主要负责生产爬虫任务,即将爬虫任务推送至消息队列。
02、Downloader进程
此类进程叫做下载器进程
,主要负责消费爬虫任务,即从消息队列取出爬虫任务,
然后执行下载工作,之后将下载源数据转发至解析器进程,我们可以看到该进程并不负责数据的解析工作,
而专职负责数据的下载工作;另外下载器进程会与解析器进程之间建立必要的长连接,通过复用tcp连接提高通信性能。
03、Parser进程
此类进程叫做解析器进程
,主要依据用户设定的业务规则负责解析下载源数据的工作,同时会将解析后业务数据以及通知结果异步反馈给下载器进程,至于解析后的业务数据如何处理,这个由开发者自由决策,未来计划内置各种丰富的数据处理组件,比如Exporter、DatabaseStorage等等。