张嵩,厦门大学计算机硕士毕业,现于他趣任首席架构师,主要负责微服务体系健全及持续交付体系建设。Go语言爱好者及contributor,近期专注于k8s在他趣的第二版落地及探寻 Machine Learning 在社区的应用。

在各种 RDB 的支撑下,通过埋点等我们已经能够实现各种业务统计、监控、分析等方面的需求,但是我们会最先触碰到哪些瓶颈呢?而碰到瓶颈后又要如何通过大数据应用来解决呢?这是本文想要着重探讨的地方。

探索三步曲 步步简化

图 1 是一个常见的情况,在每一台服务器日志上去部署一些数据分析,简单分析后会上报到RDB Redis上,之后会进行二次运算,紧接着到达展示层;在这个过程中,查询日志可以在ELK上进行。这算是比较简单的一个方案,基本可以满足大家的需求。但是这样做也会产生一些问题:

  • 新增不易;

  • 直接统计出结果数据集过于庞大,二次运算的复杂度取决于空间的维度;

  • 可接受的时间复杂度

  • 集群维护复杂度

鉴于这几个问题,我们将需求重新整理,如图 2 所示,最开始(从左至右)是数据源,数据源包含很多,比如日志;第二步是数据处理清洗,主要的目的是将一些不需要的数据清除掉;第三步是落存储,有很多方法,比如HBase;最后一步就是数据应用,比如做一些统计报表、进行报警之类的应用。

图 5 是一代的流程图。从数据源,也就是服务器上日志开始,数据流经 Flume,到达 Kafka后,分成两路流(实时流与非实时流),一路推入HDFS、一路经过 Storm 进行处理;非实时流主要是用 MR 和 Spark,进行清洗加工后将数据存储到 HBase;实时流则经过 Spark Streaming 、Storm处理,最终也是存储到 HBase。这些是早期比较常见的结构。

这种结构下,组件之间兼容问题很多;人力成本消耗大;batchjob、streaming资源、核心非核心资源的竞争难以隔离;由于作业之间依赖关系会导致作业管理复杂;

图 7 是二代的流程图。我们使用了阿里的 EMR、MAXComputer 等产品,此时,服务器则使用的是 LogStash,日志服务则使用 LogHub,存储则采用OSS。这里也产生一些新的问题。首先,日志服务相对自己搭建ELK要简易很多,但是索引按照字段大小收费,价格较高;其次,不同组件间集成异常繁琐;第三虽然扩容方便,但是人力并未得到释放;第四内存型计算服务可以实现准实时分析出数据,但是价格偏高;第五是资源竞争问题难以隔离的问题依然存在;第六就是产品变更太快,有时候产品会突然下线或者功能迁移到新的产品中。

图 8 是我们最新的结构图。在第三代中我们采用了七牛云的大数据产品,他们会把一些不属于我们应该做的操作直接放在他们自己的平台上,由他们进行维护,这个产品就是他们的大数据产品Pandora。

图 9 也是我们最新的一个流程图。最开始还是服务器,然后是Logkit,当搜集到数据源之后,将非实时数据打到对象存储上,利用离线计算去处理这些工作流,经过离线计算的工作流,如果需要做二次计算或存储就再次返回到对象存储,如果需要直接计算出结果的话,就直接写入到J16组件上,J16是我们自己写的接收http结果的组件,实心箭头代表现在这块还未完善,我们是通过额外的脚本进行结果收集到J16的操作;实时数据也采用类似于离线处理的方式,后面步骤与离线计算一致,处理之后的数据,可以用于展示报表和数据挖掘。

类似于saas的最后一种流程,可以让我们的人力接近完全解放。同时组件不存在集成与兼容的问题。因为上面设计的离线工作流和在线工作流是完全分离的,所以资源可以完全隔离。

实战分享 少走弯路

【数据方面】

【业务】

如图 10 所示,我们的业务和数据处理之间其实是相互交叉的。

为了减少大家在实际过程中碰到的弯路,所以我会分享一些实践上的经验,供大家参考。

从数据源开始,数据源常见的是nginx、tomcat、fpm、网关、业务、数据库日志、上报异常、Sla日志等客户端统计数据。

图 11 是 nginx 的日志,涵盖的内容很多,比如设备号、跟踪IP、UA头;微服务存在一个很大的问题,就是如何处理用户日志追踪;处理方式就是当客户端进行访问时,带一个唯一的ID号,最终通过这个ID号可以直接抓出这次所有落在不同服务的请求数据。

  • 图 13 是日志查询界面,为服务端人员提供查询功能。可以通过设备号,唯一请求ID等,得到客户端的请求日志,也可以支持高级的自定义查询功能。

图 14 是时序图,通过这张图,可以判断到底是自己调用其他系统服务时耗费时间长还是自己进行查询时耗费时间长,以及慢查询发生在何处,是因为查询数据库慢了还是其它的原因。

图 16 是业务在服务器上运行的时间,这边可以反映出代码的质量问题。比如两秒以上的接口几乎都是比较复杂的接口,例如下单操作或者调用第三方接口。

图 17 是微服务带来的问题,微服务有一个版本控制,比如微博接口也从V1、V2、V3一路升上来,就很难确定说什么时候可以下掉这些旧版本,比如我已经升级到V4版本,但是我的V2版本由于旧版本客户端的原因,需要还能够使用。这样子的话一旦出现bug,就必须V2、V3、V4都打一个补丁过去,对开发人员来说是一个很大的负担。

有分析的话,就可以统计处哪些版本访问量对高,哪些版本访问量最低,这样我们就可以不断地根据访问情况下掉旧版本的系统,少维护一些系统。然后也可以知道使用这些API的客户端到底是哪些版本,有没有包括当前最新的版本,有的话就不能下架,需要安排逐步修改。例如今年我们就下掉了六七个版本。

也可以通过历史数据来做一些运维方面的自动化,例如通过前一七天带宽等的分析来做到带宽的自动增减,以及类似推送高峰期前自动扩容等的各种操作。

我们每天都要应对不同的攻击,例如CC攻击这一块,我们有做一些WAF的防御,还有网关的限流,但是因为阈值的关系,也很难说完全限制住。这个时候我们可以实时的统计当前有哪些客户端访问的数目是异常偏高的,例如图18,我们看最高都是在上面那五条线,每秒钟可能都有几十万人访问,这五个设备访问频率在里面出现次数最高,就说明有异常。这种就可以做一些特殊处理,针对异常设备进行限流。因为你很难说对所有的设备进行限流,有时候客户端的访问确实会很高,比如抢红包之类的。

七牛云技术总监陈超、链家网大数据部负责人吕毅联袂出品,精选干货内容:

  • 链家网资深大数据研发工程师邓钫元,分享如何运用“开源+自身业务定制”解决大数据多维分析痛点

  • 七牛云大数据高级工程师党合萱,全面揭秘七牛自主研发千亿级大数据平台的实践之路

  • 蚂蜂窝大数据平台负责人汪木铃带来蚂蜂窝作为国内最早一批使用 Druid 的公司,在实战过程中踩过的“坑”和优化经验

  • 前新浪微博技术专家、三好网 CTO 卫向军,讲解如何利用大数据技术方案在实际业务应用中增值

高可用架构粉丝福利:

点击“阅读原文”即可享免费报名

如何快速落地数据分析平台 大数据在他趣的应用实践相关推荐

  1. 如何用Vue快速构建github可视化大数据平台

    一.项目简介 如何用Vue快速构建github可视化大数据平台 二.实现功能 个人信息 仓库语言分类 仓库公开数量 仓库stars情况 仓库数据 最近你的操作 粉丝数量 跟随数量 最近的跟随 最新信息 ...

  2. 快速了解Druid -- 实时大数据分析软件

    Druid 是什么 Druid 单词来源于西方古罗马的神话人物,中文常常翻译成德鲁伊.  本问介绍的Druid 是一个分布式的支持实时分析的数据存储系统(Data Store).美国广告技术公司Met ...

  3. 浅谈数据分析、大数据分析和大数据开发的区别

    自我介绍 在大学期间主要学习一些数据分析的课程例如,统计学,多元统计学,数据挖掘,matalb,R语言统计分析,时间序列分析,也参加了几次数学建模竞赛.对数据分析也有些了解. 实习时进了一家大数据公司 ...

  4. 大数据交易研究_学术著作 | 基于电商平台大数据的特征价格指数研究——统计研究...

    基于电商平台大数据的特征价格指数研究 作者:雷泽坤,辽宁大学经济学院,清华大学中国经济社会数据研究中心:郑正喜,上海财经大学统计与管理学院,清华大学中国经济社会数据研究中心:许宪春,清华大学中国经济社 ...

  5. 数据分析:大数据时代的必备技能之Tableau

    文章目录 BI 可视化明星 - Tableau 一.前言 1.Tableau 和 BI 有什么关系? 2.为什么要学习 Tableau ? 二.Tableau 商业数据分析 1.Tableau 简介 ...

  6. AntDB 落地某省电信大数据中心项目的性能优化案例分享

    亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...

  7. 大数据开发、大数据分析、大数据运维主要工作各是什么?哪个好?

    本文转自https://blog.csdn.net/weixin_34318956/article/details/87302823 首先,工作本身没有好坏之分,只有门槛高低之别.大数据开发.大数据分 ...

  8. 大数据与数据分析:大数据开发岗和分析岗对比

    近几年的大数据,确实在行业当中得到越来越多的重视,越来越多的企业开始成立数据业务部门,针对企业不断累积起来的数据资产,进行价值挖掘和应用.对于企业而言,大数据相关人才的引进,有大数据开发,也有数据分析 ...

  9. 大数据开发、大数据分析、大数据运维主要工作各是什么?哪个好?谢谢?

    首先,工作本身没有好坏之分,只有门槛高低之别.大数据开发.大数据分析.大数据运维都围绕着大数据展开.如果我们把大数据去掉,就只剩下,开发,分析,运维.当然还有其它的工作,例如运营,产品,讲师,测试等. ...

最新文章

  1. redis sentinel哨兵模式集群搭建教程
  2. 学习 PHP SOAP 扩展的一些笔记
  3. 服务幂等以及常用实现方式
  4. Unix目录结构的来历
  5. 这次让我们从字节码文件来重新认识String,文末有两个小小面试题,一起来试一试
  6. Delphi指针大全
  7. [WinSock]封装WSAAsyncSelect!
  8. JeeWx_2.4.2 版本发布,免费开源微信管家系统
  9. spark学习-40-Spark的UnifiedMemoryManager
  10. 静态路由的不通配置方式
  11. PostgreSQL是否区分大小写
  12. Asp.Net将Excel数据导入Sql Server数据库的的例子
  13. C++ union联合体基础说明及应用
  14. 数据产品中的图表设计原则和方法
  15. ARM汇编初探---汇编代码中都有哪几类指令---ARM伪指令介绍
  16. Windows下9001端口被占用
  17. 搭建sip软电话环境
  18. 服务过载保护设计与实施
  19. 救生艇(Java算法每日一题)(双指针法)
  20. JavaScript读书笔记-03

热门文章

  1. java语言运行机制与运行过程
  2. python实现线性插值
  3. php 放大镜代码,JavaScript实现简单放大镜效果代码
  4. 寒假实训笔记day01——认识M4单片机之STM32F405RGT6
  5. 新编大学计算机应用基础知识点,《新编大学计算机应用基础》第3篇 章 Word 2010文字处理软件.pptx...
  6. 后端-医院管理之医院列表实现
  7. 草图大师里创建动态组件_【干货】SketchUp建模|教你做一个有生命的家具动态组件...
  8. oracle未过账凭证删除,​金蝶未过账凭证如何取消关联凭证
  9. 绩效考核方案怎么做才能让员工更容易接受
  10. nginx 301跳转到带www域名方法(不带www访问时重定向到带www域名)