《erlang_分布式实战课件》由会员分享,可在线阅读,更多相关《erlang_分布式实战课件(18页珍藏版)》请在金锄头文库上搜索。
1、分布式实战,贺利军,公司业务需求,大规模数据所面临的问题 计算的统一编译、部署、管理、监控 网络通讯机制 数据的存储 算法的实效性各不相同 spider、抽正文、分词、全文索引、文章分类、xxx算法 热文、热门话题、文章来源、文章质量、文章聚类、.,抽象需求,统一编译、部署、管理、监控 builderserver:master(1:*) master:proxy(1:*) proxy:worker(1:*) 网络通信问题 通讯lib 应用框架 worker framework 数据存储 分布式存储 业务的模式 pipeline dfs+map-red,编译、部署、管理、监控(一),控制流,ma
2、trix,machine,smith,vnode,vnode,vnode,build server,1: *,管理、控制、部署(二),Matrix,Group-cloud-C,应用框架,应用框架的使用,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
3、, result);,client-get,server,应用通讯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,分布式存储,key-value dynamo mysql 类似mongo,业务的模式-pipeline,中心模式,序列模式,put,put,put
4、,get,get,get,get,pipeline问题,中心模式 缺点 同步的所有问题 优点 同步实现简单 模块天生隔离,易实施 序列模式 缺点 上下游的耦合 上下游处理速度不匹配导致cache数据 下游down机 优点 异步的高效 数据过了就没了,pipeline的改进,引入mq,解决pipeline上下游的问题,在pipeline模型中计算热门文章,需求 不定期输入一个URL 每天内计算当天100篇热门文章 每小时刷新一次热门文章DB 热门文章定义为:有限时间内转载次数越多越热门 两种做法 每篇文章计算一次 频度太高,浪费电 累积一小时计算一次 频度太底,不够实时 分布式的HotArtic
5、le该如何做?,pipeline的场景分析,适用场景 对任何一个输入均可以马上产生输出 比如基于分词词典,输入一段文本,立马可以输出分词结果 不适用场景 类似统计分析,需要一笔输入才可以产生最好的输出 比如分词词典的训练过程,pipeline+dfs,输出 输入,某算法 输出模块,DFS,DB,MQ,某算法 输入模块,算法本身,DFS,read,read,put,put,引入DFS,优点 上下游解耦 问题 客户端拿数据的方法不一致,需要多种不同的维度 同一下游的多客户端拿数据 解决方案,杂谈,基于某个状态dosomething, 其中dosomething修改了这个状态,忠告,能不做框架,就别做吧,把lib做好了,啥框架出不来啊!,