文档介绍:微服务实例-构建分布式爬虫系统-数人科技
Step 4 集群化 — 服务发现、负载均衡
HTTP接口
ZooKeeper/etcd
使用Marathon + Bamboo + HAProxy 进行服务发现
RabbitMQ接口
通过微服务实例-构建分布式爬虫系统-数人科技
Step 4 集群化 — 服务发现、负载均衡
HTTP接口
ZooKeeper/etcd
使用Marathon + Bamboo + HAProxy 进行服务发现
RabbitMQ接口
通过监听MQ实现服务发现
MongoDB 如果不考虑自动扩展,使用既有的集群方案
Reddis 可以采用Codis方案
Step 5 离线和在线服务混合部署
离线服务吞吐很高,爬取模块队列经常破百万
在线服务要求实时性
- MQ 集群化
- 队列设置优先级
-
Step 6 全局配置热更新
问题:
如何全局改变常用小参数的配置(变化少,使用频繁)
如何全局改变体量较大的全局共享数据(体积大、变化较多)
写代码的时候提前做好热读取参数的机制
PUSH
使用ZooKeeper/etcd来同步小参数
PULL
使用Reddis之类配置服务器来存储较大的共享数据
Step 7. 摩尔定律
脑补: 每个组件都可能失效
每个步骤都可能中断
状态不一致咋办、消息会不会丢、消息堆积会不会造成OOM、
会不会僵尸进程和数据 … …
设置任务超时
当取结果的时候,如果超时就返回当前的部分结果
设置定时 Cleaner
定时梳理所有任务,如果全局超时就认为任务已经完成
设置自动抛弃机制
超过一定限度就抛弃旧的信息
Step 8 日志和监控
使用ELK或者MongoDB来收集应用和stdout/Err的日志
Elasticsearch + Logstash/Fluentd + Kibana
日志要添加应用名称 /Docker ID/SessionID 等等便于筛查的信息
使用 Graphite 来监控吞吐量等性能指标
使用 ELK 来进行应用层的被动监控和报警
使用轮询 health check 服务来监控关键组件的状态
使用监控宝等等来进行端到端的黑盒监控
使用Zabbix来进行物理层报警
做最坏的打算,祈祷最好的结果
上云的 Check List
服务单元功能越单一越好
计算模块要做到无状态(不依赖本地I/O)
任何服务都不能有单点,必须做集群
可能的话,模块间接口尽量异步
设计时做最坏打算 —— 每个模块都可能失效,而且无法及时报警
分布式的配置管理,Rolling Update/Restart
各个层面的集中式监控和日志方案
… …
真的是一个操作系统诶 -
以及各种各样的PaaS服务,让大家能够轻松上云
世界潮流,浩浩荡荡
硬件
Dell HP CISCO
操作系统
Microsoft Redhat
软件
Oracle IBM
应用
IBM SAP ISV
传统IT 时代
渠道资源型线下集成商
公有云
私有云
SaaS
Salesforce Zendesk
分布式OS + 存储
PaaS 各种宝、云
Ceph HDFS
Mesos+Docker
开源
云计算时代
业务技术型云集成商
开源技术 + 云端服务
专有技术 + 线下服务
革命不是请客吃饭
从技术到服务到商业模式,从线上到线下,都需要真真正正踏踏实实的创新
投资人没有现成案例参考
去 IOE ?
Github 持续集成、代码社交 ?
农村包围城市?
只知道要坚定地反帝反封推翻三座大山
政策和策略是生命线
革命统一战线
武装斗争
党的建设
革命一定是新生力量的机会
人间正道是沧桑
感谢一路有你
The user can demonstrate on a projector or computer print the presentation and make it into e used in a wider field The user can demonstrate on a projector orcomputer print the
presentation and make it into e used in a wider field