- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
erlang_分布式实战 - ecug.googlecode.com
分布式实战 贺利军 公司业务需求 大规模数据所面临的问题 计算的统一编译、部署、管理、监控 网络通讯机制 数据的存储 算法的实效性各不相同 spider、抽正文、分词、全文索引、文章分类、xxx算法 热文、热门话题、文章来源、文章质量、文章聚类、... 抽象需求 统一编译、部署、管理、监控 builderserver:master(1:*) master:proxy(1:*) proxy:worker(1:*) 网络通信问题 通讯lib 应用框架 worker framework 数据存储 分布式存储 业务的模式 pipeline dfs+map-red 编译、部署、管理、监控(一) 管理、控制、部署(二) 应用框架 应用框架的使用 应用通讯lib boost::asio wrapper的 async tcp server thread-pool connection manager ... int get(Server, xxx_md5, query_desc, timeout, result); int put(Server, xxx_md5, query_desc); int multi-get(const Querys, timeout, Results); 分布式存储 key-value dynamo mysql 类似mongo 业务的模式pipeline pipeline问题 中心模式 缺点 同步的所有问题 优点 同步实现简单 模块天生隔离,易实施 序列模式 缺点 上下游的耦合 上下游处理速度不匹配导致cache数据 下游down机 优点 异步的高效 数据过了就没了 pipeline的改进 引入mq,解决pipeline上下游的问题 在pipeline模型中计算热门文章 需求 不定期输入一个URL 每天内计算当天100篇热门文章 每小时刷新一次热门文章DB 热门文章定义为:有限时间内转载次数越多越热门 两种做法 每篇文章计算一次 频度太高,浪费电 累积一小时计算一次 频度太底,不够实时 分布式的HotArticle该如何做? pipeline的场景分析 适用场景 对任何一个输入均可以马上产生输出 比如基于分词词典,输入一段文本,立马可以输出分词结果 不适用场景 类似统计分析,需要一笔输入才可以产生最好的输出 比如分词词典的训练过程 pipeline+dfs 输出 输入 引入DFS 优点 上下游解耦 问题 客户端拿数据的方法不一致,需要多种不同的维度 同一下游的多客户端拿数据 解决方案 杂谈 基于某个状态dosomething, 其中dosomething修改了这个状态 忠告 能不做框架,就别做吧,把lib做好了,啥框架出不来啊! * Page ? * 控制流 matrix machine smith vnode vnode vnode build server 1: * Logic-cloud-A phy-cloud.1 phy-cloud.2 Logic-cloud-B phy-cloud.3 phy-cloud.4 Matrix Group-cloud-C matrix smith vnode-app vnode 控制者 tcp-server task-schedule xxx_aux logger counter app-loader ... application multi-thread single-thread c/c++ python java c/c++ python java app logic app logic int do_app_logic(unsigned char* buf, int len, unsigned char** res, int* len) { // parse the query buffer // ... *res = xxx; // vnode reply auto *len = yyy; return 0; } int ret = get(Server, xxx_md5, query_desc, result); client-get server controller server-a server-c server-b server-d controller server-a server-b server-c 中心模式 序列模式 put put put get get get get mq server-b server-a mq server-c controller ... mq hot article DB DFS DB MQ 某算法 输出模块 DFS DB MQ 某算法 输入模
文档评论(0)