17. WEB APPLICATION

构建抽象层,然后逐层往下细化。自顶向下。分优先级。

爬虫应用:

接受一个网页,PARSE 内容,根据里面的HTML生成新的任务。

如何去重任务? 单机的话,数据量小可以用SET,大的话LOCAL set DB去重。多台机器用URL的HASH去做PARTITION。

写BFS code for a simple web crawler
multi thread version
to design a more practical system

瓶颈:
网络带宽
计算资源去PARSE网页。

image.png

队列SHARDED BY URL。 每个爬虫只去一个队列取任务。

常规PATTERN

1.经典方法去分发JOB给不同WORKER
shard with (hash, range)
batch - group thing together

2.hash table

3.push/pull model

4.handle failure
master/salve
replication

5.cache
write through(写CACHE,DB在一起,都完成再返回写完成)
write around (先写DB,当读CACHE MISS的时候,LOAD INTO CACHE)
write back

  1. database
    ACID
    sharding

7.knwoledge
network -> disk -> in memory -> l2 cache -> l1 cache
gist.github.com/jboner/2841832/

  1. synchronous/ Asynchronous call
    blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/

  2. stateful vs stateless
    stateless service is great because can be replicated as many as you want - best scenario for scaliablity - perfect for computational task
    easy to handle client retry

    sharded stateful service is hard to bring up new instance. because you need to redistribute data/ internal states

highscalability.com
aosabook.org/en/distsys.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 书签客/书 选择一个适合自己的基金,挺难的。 你要关注不同类型的基金公司、投资方向、基金经理的投资风格、投资资产的...
    书签客阅读 625评论 0 2
  • 喜悦是什么 是一家人游玩时惊奇的发现 是心灵相通,接纳欣赏 我还是轻易地就把它忘记了 我无声的叹息 又叹息 是婆婆...
    风中Flora阅读 181评论 0 4
  • 多一些理解,就会少一些纷争 多一些欣赏,就会少一些冷漠 多一些肯定,就会少一些指责 多一些忍耐,就会少一些焦躁 多...
    与你同走过阅读 1,082评论 0 1
  • 从前我也喜欢小猫小狗,也养过一只猫、一只狗 那时候还年少,连自己都不会照顾的我,更不可能照顾好刚出生没多久的小家伙...
    是蓉蓉呐阅读 285评论 0 2

友情链接更多精彩内容