最近少写了日记,今天做了两件事
1. 听了linkin上的一个流数据处理的课程,主要是一些基本概念和四个case study,分别针对不同的需求设计流处理架构,链接在这里。有几点比较印象深刻:
- 课程里做架构的方法论值得学习,流程是这样的,分析问题,勾勒出解决方案,技术选型,设计出架构(技术选型往上套),标记关键问题这几个步骤
- 其中讲到将服务的数据和状态存储放到一个中心存储集群中,其中服务是无状态的,并且在load balancer后面。
- 流处理系统中几个需要考虑的问题,guaranteed delivery,ordering guarantees,requery data from earlier point,redundancy,scalability
- 机器学习利用线下数据来生成模型,并在流处理中应用模型,可以利用spark中的broadcast来广播模型。
- 模型怎么样生成由数据科研人员来做(effectiveness),大数据架构师只负责数据处理的架构,使得模型的生成和利用变得有效率(efficiency)
- 推荐引擎的大概架构,最总推荐 = 固定推荐(与选定产品相关的产品推荐列表) + 动态推荐(与用户行为,例如click stream相关的产品推荐)
- 架构中各种临时状态都用in memory数据库来存储,以加快查询速度
- 如果需要顺序接受事件,就需要将同一个user session中的事件发送到同一个kafka partition中
- 并行处理的最佳实践,数据存储在中心存储中,存储集群必须可以横向扩展;服务是无状态的,状态存储在数据库中,这使得服务可以横向扩展;服务部署在负载均衡后面;
- 实时手机优惠券推送系统,实时位置数据和历史数据模型的结合使用
- 各种集群的管理需要有管理系统来管理
2. 阅读到一篇文章,主要讲了几个点
- yahoo 的新一代消息系统 pulsar,是一个容器化的云原生流数据系统,其中将计算和存储分离,一层是无状态的消息服务层,一层是消息存储层,这样两层可以各自横向扩展,并且消息存储可以存储在各种云数据存储服务中,所以说是云原生。计算和存储的分离,使得pulsar更容易部署到容器中(消息服务部署到容器中,且可以极速扩容)。
- 计算框架的批流一体化,对于pulsar来说,流计算使用消息服务层,当数据落到存储层的时候就成为了历史数据,给批处理使用,统一了数据的接口
网友评论