HTTP 代理服务器的架构

作者:IPIDEA

2020-11-21 16:41:01

HTTP架构师一般都是使用很多种复杂的机制来将多个子模块组合建成一个HTTP服务。目前的爬虫技术中,已经形成了4种基本的模式。如果已经编写了用于生成动态內容的爬虫技术Python代码,并且已经选用了某个支持WSGI的API或框架,应该如何将HTTP服务部署到线上呢?


 9.184.png


第一步运行一个使用爬虫技术Python编写的服务器,服务器的代码中能够直接调用WSGI接口。目前流行的是GreenUnicorn(Gunicorn)服务器,不过也有其他已经能用于生产环境的纯Python服务器。

 

第二步配置mod_wsgi并运行Apache,在一个独立的WSFIDaemonProcess中运行Python代码,由mod_wsgi启动守护进程。

 

第三步在后端运行一个类似Gunicorn的PythonHTTP服务器或是支持所选异步框架的任何服务器,之后在前端运行一个既能返回静态文件,又能对Python编写的动态资源服务进行反向代理的Web服务器。

 

第四步在前端运行一个纯粹的反向代理(如Varnish),在该反向代理后端运行Apache或是nginx,在后端运行Python编写的HTTP服务器。这是一个三层的架构。这些反向代理能够分布在不同的全球任意国家地区,这样子就能够将离客户端近的反向代理上的缓存资源返回给发送请求的客户端。

 

长期以来,对这4个架构的选用主要基于CPython的3个运行时的特性,即解释器占据内存大、解释器运行慢、全局解释器(GIL,GlobalInterpreterLock)判断IP属性,无法高效采集公开数据多个线程同时运行Python字节码。但同时带来了内存中只能载入一定数量的Python实例。IPIDEA包含了全球IP资源提供HTTP、HTTPS、Socks5,保证业务高速稳定进行,系统实时监控网络状态。


*ipidea提供的服务必须在境外网络环境下使用

热门资讯