• 李鼎(哲良) 置顶
    2018-12-06
    数据流是久经考验的典型思路,在网络协议(如TCP)、数据平台这样场景,早就应用多年习以为常了。淘宝业务的应用架构升级可以认为是把这样思路应用到了业务系统开发中,把『流』作为业务表达上的一等概念和手段,并在业务架构/系统能力优化提升。

    简单地说,因为业务面向数据流来编写,一方面业务逻辑表达可以自然接近业务流程;另一方面逻辑运行可以是全异步有很好的性能提升,一核心后端应用在双11线上,单机QPS提升30%,RT下降40%。流程的表达与异步/同步执行方式是分离的(如果了解过像RxJava,这句会容易理解:)。

    另外,『流』也为业务系统的保护提供新的一些方法,在思路上其实和流计算平台是一样的,这对业务大型系统的稳定性来非常重要。

    当然,业务的流式架构,在业务编写上有些FP风格(简单地说比如充分使用了Lambda),平时我们大家业务上主要是用命令式顺序平铺方式来表达,会有要个熟悉过程,虽然不见得有多难 :)
    展开

    作者回复: 👍🏻 欢迎有兴趣的同学进一步探讨。

    李鼎的流式架构文档地址:https://github.com/oldratlee/rp-pratice

     2
     95
  • 万~~
    2018-12-01
    你好 storm spark flink 都是优秀的框架 那我们应该学习哪个呢? 都学肯定精力不够 而且难以精通
     1
     15
  • laurencezl
    2018-12-04
    智慧老师你好,这节对storm.spark.flink的介绍感觉过于概述了!后面是否会有详细的文章介绍,比如分析对比一下他们三者各自优缺点在哪里?各自试用与不适用的业务场景有哪些之类的呢?
     2
     9
  • 纯洁的憎恶
    2018-12-01
    批计算是对历史数据的一次性处理,流计算是对实时流入的数据实时响应。

    storm模仿消息队列(什么是消息队列?卡夫卡?),把消息队列中与业务逻辑无关的过程部分抽象出来形成标准框架,实现复用。开发者不用纠结四面八方涌入的实时数据如何流转,消息如何处理和消费,只用考虑业务流程、数据源、处理逻辑。

    spark streaming以spark为基础,将同一时间段的数据分片聚合在一起做为一批数据处理(以批模拟流)。

    flink则是以流模拟批,它的底层计算逻辑只有流,通过时间窗口把流入数据按时间间隔分为若干批(与spark streaming类似),通过数据源的不同,完成在流与批的切换。

    计算机软件的发展史就是一部业务与技术分离的历史,通过把业务不相关部分高度抽象并标准化,开发者能够越来越多的专注于业务流程,而越来越少的考虑机器、程序等技术细节的因素。

    不知这么理解对不对。

    需要进一步明确的知识点:消息队列。
    展开
    
     5
  • Jowin
    2018-12-01
    智慧老师,我是从事金融实时数据处理的,有一类典型需求是从原始实时数据计算出各种衍生数据,但是有状态积累。比如,当前状态是S0,收到数据A0,此时要根据(S0,A0)生成数据A1,同时要更新当前状态S1,后续的新数据再基于S1处理。团队考虑过使用Stream作为计算平台,有两个问题没想清楚怎么处理:
    1)如果计算任务故障挂掉,会不会导致这期间的数据丢失?
    2)另外,由于数据量也不小,差不多在每秒4~5万条消息,状态S的更新特别频繁,常规的存储在性能上没有办法满足,所以我们是采用内存+日志文件保存。如果重启的任务被分配套新的服务节点上,我们是否就还得考虑这部分数据也要迁移过去?
    盼复,谢谢。
    展开

    作者回复: 1 spark streaming有容错机制,不会丢失。当然,服务器数量要充足。

    2 试下Redis存储状态。

    
     5
  • 尼糯米
    2019-01-10
    问题一
    Strom算是比较早期的大数据流计算框架
        》》定义处理流程
        》》流程的每个环节上的处理逻辑
    数据流转是计算框架按处理流程进行流转吗?
    从作者的陈述,实在看不出这和实时数据有啥关系,把它的计算框架套在批数据上也不伪和,
    至少文中不指明是为了流计算,实在看不出来

    问题二
    Spark Streaming实现的流计算
    是通过把流数据切分迷你批数据且每个迷你批数据的处理非常迅速,
    而这个迷你批数据是怎么做容错呢,切分出来的数据总要做容错吧

    问题三
    Flink不管是批数据还是实时数据流,对它只是数据源不同,这点从源码上切实看出来了,
    它确实要构建一个数据源出来,在数据源上做各种数据处理。
    但是我从作者描述中理解到的东西:数据处理终究还是避免不了对数据的分段,
    所以,不管是怎样的流计算框架,把数据处理总是以数据分片的基础上进行呢

    如果是这样,流计算喊出来还是响当当,蛮吓人的
    希望看到的各位老师批评下

    PS,该篇小结太多了,小结之上倒是不多
    展开
    
     3
  • 常平
    2018-12-11
    流式架构本质上是事件驱动(event-Driven)架构,流由段(segment)组成,段由事件(event)组成,事件由字节(bytes)组成,事件大小有限,而字节流大小无限
    
     3
  • 杰之7
    2018-12-01
    通过本小节的学习,了解了常用的流计算及它们的计算框架,其中Spark Streaming巧妙了运用Spark计算速度的优势,将Spark批计算通过时间间隔装置成流计算。在我们的生活中,股票交易的价格传输应该就是运用了流计算,要求在极短的时间内完成对价格的改变。当然,淘宝,一线城市的摄像头在后台处理上也应用了流计算技术。相比批计算技术,流计算在重要的数据上会用的越来越广。
    
     3
  • 星极
    2019-10-06
    文中有这么一段话:“回到流计算,固然我们可以用各种分布式技术实现大规模数据的实时流处理,但是我们更希望只针对小数据量进行业务开发,然后丢到一个大规模服务器集群上,就可以对大规模实时数据进行流计算处理。”,在下愚昧,没有get到,不用分布式技术实现大规模数据实时流处理的真正原因是?

    作者回复: 我这里可能没表达清楚,这里是说不用传统的互联网分布式技术架构,就是负载均衡、微服务调用各种技术方案进行流计算,虽然这些技术也能解决流计算的需求场景。

    主要是因为,前述这些互联网分布式技术架构都是定制式的,每个流计算场景都需要进行特定的技术开发。而大数据流计算平台则是提供一个统一的计算平台,以及相关的编程框架,只需要按照这个框架开发流计算程序提交到大数据流计算平台执行,不需要关注数据如何流转、集群如何扩展,就可以完全搞定大数据流计算。

    
     1
  • 。。。。
    2019-06-04
    完全没有看出来flink在流处理的流程上和spark streaming有啥区别,老师后面的文章有没详细解读呢
    
     1
  • zhj
    2019-01-08
    1面向数据流的编程在java里逐渐展露头角,之前rxjava更多的是用于android,直到hystrix才算是后端一个大规模应用的案例(也和场景有关吧,后端的大多业务都是短事物处理去构建一条数据流水线反倒显得累赘),reactor是响应式编程的另一个实现,直到spring5全面拥抱以后,才完全进入人们视野(所以技术落地离不开大厂的支持),单纯的业务层处理构造一条很短的数据流意义不大(因为数据源可能还是需要返回所有数据),spring webflux结合springdata从持久层到业务层构建了自下而上的数据流(前提是持久层驱动是非阻塞的),并利用reactor-netty(支持网络背压),理想情况下将构建一个全链路的按需处理数据流
    2 数据流编程,有点类似当年面向函数->面向对象,更多的是思考方式的改变,异步和数据流都是为了正确的构建数据流间的关系而存在,不过目前貌似不支持对数据流分片并行处理
    展开

    作者回复: 👍🏻

    
     1
  • 🐱您的好友William...
    2018-12-04
    主攻人工智能,机器学习和算法实现的应该学习哪种呢?Storm,Spark还是Flink呢?

    作者回复: spark

    
     1
  • 三木子
    2018-12-01
    和老师探讨一个问题,对于架构设计,目前流行的是微服务,我个人觉得微服务还是有好些缺点。架构从开始的合走到现在的分,未来会不会从分又到和呢?

    作者回复: 不会

    
     1
  • qiaoer
    2019-10-30
    老师讲了Storm,Flink,Spark Streaming,感觉他们几个很相似,都是Master/slave 结构,一个Master节点进行 任务划分管理,然后下发到Slave节点,Slave负责具体的执行。 但是他们的区别是什么?还有Flink和Spark Streaming他们都是Micro Streaming的思路?那么适用的场景又是什么呢?
    
    
  • godtrue
    2019-09-28
    纵观计算机软件发展史,发现这部历史堪称一部技术和业务不断分离的历史。人们不断将业务逻辑从技术实现上分离出来,各种技术和架构方案的出现,也基本都是为这一目标服务——这个很认同,所有工具的发展,人类都会趋于这种改进方式来处理。

    流式计算,特点是否就是对实时数据的计算,数据像流水一样无穷无尽?
    
    
  • 不贰者
    2019-06-19
    老师说flink也是将实时的数据流分成一小段一小段处理,这样的话和spark streaming本质上没有区别了?
    
    
  • maomaostyle
    2019-02-20
    想了解storm与flink以及spark streaming 相比有什么区别?感觉后两者都是将数据源做很细粒度的切分,最终看上去“像”是连续的流,那么storm的处理方式呢?
    
    
  • 香港记者
    2018-12-25
    好
    
    
  • 洪喜
    2018-12-17
    感谢老师的讲解,不过也印证了师傅领进门修行在个人这句话,个人需要针对没深入讲解的知识点再次深入自学了。
    
    
  • 修行者
    2018-12-07
    想要了解这三种流式计算框架 Strom、Flink、Spark Streaming,各种的优缺点及适用的业务场景,智慧哥在下面的专栏会详细介绍吗 ?
    
    
我们在线,来聊聊吧