微服务实例-构建分布式爬虫系统-谢乐冰

微服务实例-构建分布式爬虫系统-谢乐冰

ID:39639088

大小:2.63 MB

页数:17页

时间:2019-07-08

微服务实例-构建分布式爬虫系统-谢乐冰_第1页
微服务实例-构建分布式爬虫系统-谢乐冰_第2页
微服务实例-构建分布式爬虫系统-谢乐冰_第3页
微服务实例-构建分布式爬虫系统-谢乐冰_第4页
微服务实例-构建分布式爬虫系统-谢乐冰_第5页
资源描述:

《微服务实例-构建分布式爬虫系统-谢乐冰》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、自制分布式爬虫系统北京数人科技有限公司doc.dataman-inc.com单机的All-In-One爬虫架构控制模块抓取模块抽取模块HAProxy各地代理URLHTML模板结果JSONXML递归URL有状态解析JS、地区代理、调速登陆利用JavaEE容器的线程池、共享状态分布式和微服务是SilverBullet么?分布式和微服务的优点特定模块单独开发和测试(…)容易对特定模块进行横向扩展(YES)整体可靠性更高(?)服务(以及代码)可以重用(YES)离线和在线类型服务可以混合部署(Great)做最坏的打算,祈祷最好的结果上云的CheckL

2、ist服务单元功能越单一越好计算模块要做到无状态(不依赖本地I/O)任何服务都不能有单点,必须做集群可能的话,模块间接口尽量异步分布式的配置管理,RollingUpdate/Restart各个层面的集中式监控和日志方案设计时做最坏打算——每个模块都可能失效,而且无法及时报警……Step1.拆服务,建集群控制服务抓取服务抽取服务结果聚合服务HAProxy获取结果控制服务抓取服务抽取服务结果聚合服务最终结果中间结果尽量利用Docker本身多实例,避免复杂的多线程编程因为任务并行运行,所以需要保存中间结果,最后进行归并Step2.接口异步化控制服

3、务抓取服务抽取服务结果聚合服务HAProxy获取结果控制服务抓取服务抽取服务结果聚合服务URLCookieHTMLRabbitMQ:异步、服务发现、中间结果存储JSONStep3.无状态、无状态、无状态控制服务抓取服务抽取服务结果聚合服务HAProxy获取结果控制服务抓取服务抽取服务结果聚合服务URLCookieSessionIDHTMLSessionIDJSONSessionIDPages(JSON)SessionIDSessionIDSessionID问题:异步抓取的时候链接去重2.某次同步请求是否抓全ReddisClusterSess

4、ionIDStep4集群化—服务发现、负载均衡HTTP接口ZooKeeper/etcd使用Marathon+Bamboo+HAProxy进行服务发现RabbitMQ接口通过监听MQ实现服务发现MongoDB如果不考虑自动扩展,使用既有的集群方案Reddis可以采用Codis方案Step5离线和在线服务混合部署离线服务吞吐很高,爬取模块队列经常破百万在线服务要求实时性-MQ集群化-队列设置优先级http://www.rabbitmq.com/federated-queues.htmlStep6全局配置热更新问题:如何全局改变常用小参数的配置(

5、变化少,使用频繁)如何全局改变体量较大的全局共享数据(体积大、变化较多)写代码的时候提前做好热读取参数的机制PUSH使用ZooKeeper/etcd来同步小参数PULL使用Reddis之类配置服务器来存储较大的共享数据Step7.摩尔定律脑补:每个组件都可能失效每个步骤都可能中断状态不一致咋办、消息会不会丢、消息堆积会不会造成OOM、会不会僵尸进程和数据……设置任务超时当取结果的时候,如果超时就返回当前的部分结果设置定时Cleaner定时梳理所有任务,如果全局超时就认为任务已经完成设置自动抛弃机制超过一定限度就抛弃旧的信息Step8日志和监

6、控使用ELK或者MongoDB来收集应用和stdout/Err的日志Elasticsearch+Logstash/Fluentd+Kibana日志要添加应用名称/DockerID/SessionID等等便于筛查的信息使用Graphite来监控吞吐量等性能指标使用ELK来进行应用层的被动监控和报警使用轮询healthcheck服务来监控关键组件的状态使用监控宝等等来进行端到端的黑盒监控使用Zabbix来进行物理层报警云上的操作系统—分布式操作系统LinuxMesos(DCOS)GoogleAWS资源管理KernelMesosBorg进程Ker

7、nelDockerLXCEC2进程调度init.d,CronMarathon,chronosBorgCloudFormation进程间通信SocketXXXMQSQS存储EXT4Ceph、HDFSGFS,ColossusEFS,S3,EBS应用编程语言Docker、Spark、MR容器、MREMR等等服务发现N/ABambooBorgNameSystem数据存储N/ARedis、MongoBT、Spanner、MegastoreDynamo,EC,RDS分布式一致性N/AZK,etcdchubby日志Stdout,stderrELKBorg

8、logserver,ecatcher,sawmillEMR配置ZK+RedisBorgCOnfig监控Zabbix等等Dapper,CPICloudwatch云计算时代的技术栈将

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。