自适应网站系统吗天津官网建设哪家好
2026/4/18 21:57:35 网站建设 项目流程
自适应网站系统吗,天津官网建设哪家好,搜索优化的培训免费咨询,域名备案查询站长之家你好#xff0c;我是程序员贵哥。 今天我要与你分享的主题是“Workflow设计模式”。 在上一讲中#xff0c;我们一起学习了大规模数据处理的两种处理模式——批处理和流处理。 利用好这两种处理模式#xff0c;作为架构师的你就可以运筹帷幄#xff0c;根据实际需求搭建出一…你好我是程序员贵哥。今天我要与你分享的主题是“Workflow设计模式”。在上一讲中我们一起学习了大规模数据处理的两种处理模式——批处理和流处理。利用好这两种处理模式作为架构师的你就可以运筹帷幄根据实际需求搭建出一套符合自己应用的数据处理系统。然而光是掌握了这两种数据处理模式就足够自如应对大规模数据世界中的需求挑战吗从我的实战经验中看来其实未必。我们每个人在最开始学习大规模数据处理的时候可能都是以WordCount作为教学例子来进行学习的。WordCount这个例子只需要一个单词集合作为输入数据处理的结果是统计单词出现的次数中间只需要经过一次数据处理的转换就如同下图所示。但在现实的应用场景种中各式各样的应用需求决定了大规模数据处理中的应用场景会比WordCount复杂很多倍。我还是以我在第一讲中所提到过的例子来说明吧。在根据活跃在街头的美团外卖电动车的数量来预测美团的股价这个例子中我们的输入数据集有可能不止一个。例如会有自己团队在街道上拍摄到的美团外卖电动车图片会有第三方公司提供的美团外卖电动车数据集等等。整个数据处理流程又会需要至少10个处理模块每一个处理模块的输出结果都将会成为下一个处理模块的输入数据就如同下图所示。像上面的图示一样我们将这种由多个不同的处理模块连接在一​​起最后得出一个自己需要结果的有向无环图Directed Acyclic Graph/DAG称为一个工作流系统Workflow System。在工作流系统的每个处理模块里系统要执行的操作有可能不是单单一个数据转换的操作这么简单。像在上面例子的Ingestion这个模块中我们需要将多个不同的数据集合并在一起也需要将不合格的一些图片过滤掉。如果你用过Apache Spark 1.4以上的版本的话Spark平台里面的Execution DAG就可以为你展示一个完整的工作流图。今天我为你解释四种工作流系统的设计模式希望你能够很好地理解它们并运用在自己的数据处理系统设计中。在遇到各种复杂的应用场景的时候能够从容面对。复制模式Copier Pattern复制模式通常是将单个数据处理模块中的数据完整地复制到两个或更多的数据处理模块中然后再由不同的数据处理模块进行处理。工作流系统图通常如下图所示。当我们在处理大规模数据时需要对同一个数据集采取多种不同的数据处理转换我们就可以优先考虑采用复制模式。我来举个在YouTube视频平台中系统处理视频数据集的一个例子吧。我们都知道视频平台很多时候都会提供不同分辨率的视频。4K或1080P的视频可以提供给网络带宽很高的用户。而在网络很慢的情况下视频平台系统会自动转换成低分辨率格式的视频像360P这样的视频给用户。而在YouTube视频平台中如果你将鼠标放在视频缩略图上它会自动播放一段已经生成好的动画缩略图Animated GIF Thumbnail 。不仅如此在平台的背后一个视频的数据集可能被自然语言理解NLP的数据处理模块分析用以自动生成视频字幕还有可能被视频分析的数据处理模块分析用以产生更好的内容推荐系统。那么它的整个工作流系统就会如下图所示一样。我们可以看到在这个工作流系统中每个数据处理模块的输入是相同的而下面的5个数据处理模块都可以单独并且同步地运行处理。过滤模式Filter Pattern过滤模式的作用是过滤掉不符合特定条件的数据。在数据集通过了这个数据处理模块后数据集会缩减到只剩下符合条件的数据。工作流系统图通常如下图所示。当我们在处理大规模数据时需要针对一个数据集中某些特定的数据采取数据处理时我们就可以优先考虑采用过滤模式。我举个商城会员系统的例子来解释吧。在商城会员系统中系统通常会根据用户的消费次数、用户消费金额还有用户的注册时间将用户划分成不同的等级。假设现在商城有五星会员Five-stars Membership、金牌会员Golden Membership和钻石会员Diamond Membership。而系统现在打算通过邮件只针对身份是钻石会员的用户发出钻石会员活动邀请。这个时候我们就可以通过过滤模式将钻石会员的用户从所有用户中筛选出来如下图所示。在这个工作流系统中一个数据处理模块会将输入的数据集过滤成符合条件的数据然后传输到下一个数据处理模块进行单独处理。分离模式Splitter Pattern如果你在处理数据集时并不想丢弃里面的任何数据而是想把数据分类为不同的类别来进行处理时你就需要用到分离模式来处理数据。它的工作流系统图通常如下图所示。需要注意的是分离模式并不会过滤任何数据只是将原来的数据集分组了。还是以刚刚商城会员系统为例。假设现在商城有五星会员、金牌会员和钻石会员。系统现在打算通过邮件针对全部的会员用户发出与他们身份相符的不同活动的邀请。这个时候我们就可以通过分离模式将用户按照会员等级分组然后发送相应的活动内容如下图所示。需要注意的是在分离模式下同样的数据其实是可以被划分到不同的数据处理模块的。数据B是可以同时划分到工作流1和工作流2中。其实这种情况挺常见的我可以给你举个例子来解释。在银行系统上用户可以通过勾选以短信通知或者以邮件通知的方式来提醒用户一笔交易成功。如果用户同时勾选了短信和邮件两种方式那么属于这个用户的交易信息既会通过短信通知的数据处理模块来处理也会通过邮件通知数据处理模块来处理。合并模式Joiner Pattern合并模式会将多个不同的数据集转换集中到一起成为一个总数据集然后将这个总的数据集放在一个工作流中进行处理。还是以根据活跃在街头的美团外卖电动车的数量来预测美团的股价这个例子来说吧。数据接入这一处理模块里我们的输入数据有自己团队在街道上拍摄到的美团外卖电动车图片和第三方公司提供的美团外卖电动车图片。如果我们打算先整合所有数据然后进行其它数据处理的话工作流系统图通常如下图所示。小结今天我们一起学习了在大规模数据处理中用到的四种设计模式分别是复制模式、过滤模式、分离模式和合并模式。在设计大规模数据处理系统的时候我们都希望能事先设计好一个工作流系统图出来作为参考。有了这样一个大规模数据处理的整体蓝图之后对于我们理解不同的处理模块是如何相互关联或者对未来优化系统设计是有很大帮助的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询