赣州新闻网

首页 / 科技

区块链1.0到3.0演变史:中本聪愿景中的比特币已死?

2020-03-30 · 赣州新闻网 · 科技

Kafka 是当下热门的消息队列中间件,它可以实时地处理海量数据,具备高吞吐、低延时等特性及可靠的消息异步传递机制,可以很好地解决不同系统间数据的交流和传递问题。


Kafkx n @ b Wa 在马蜂窝也有非常广泛的应用,为很多核心的业务提供支撑。本文将7 Q @ ] W r M L 5围绕 Kafka 在马蜂窝大数据平台y 7 b O t 3 j的应用实践,介绍相关业务场景、在 Kafka 应用的不同阶段我们遇到了哪些问题以及如何解决、之后还有哪些计划等。


一、应用场景


从 Kafka 在大数据平台的应用场景来看,主要分为以下三类:


第一类是将` ~ = T Kafka 作为a h h 5 ] ! U数据库,提供大数据平台对实时数据的存储服务。从来源和用途两个维度来说,可以将实时数据分为业务端 DB 数据、监控类型日志、基于埋点的客户端日志(H5、WEB、APPe ^ .、小程序)和服务端日志。


第二类是为数据分0 Q E o z析提供t & ] ! ~数据源,各e U M . b + z埋点日志会作为数据源,P G 2 +支持并对接公司离线数据、实时数据仓库及分析系统,包括多维查询、实时 Druid OLAP、日志明细等。


第三类+ * |是为业务方提供数据订阅。除了在大数据平台内部的应t [ ( z b k k用之外,我们还使用 Kafka 为推荐X p 3搜索、大交通、酒店、内容中心等核心业务提供数据订阅服务,如用户实时特征计算、用户实时画像训练及实时推荐、反作弊、业务监控报警等。


主要应用如下图所示:


Kafka集群在马蜂窝大数据平台的优化与应用扩展


二、演进之路


1、四个阶段


早期大数据平台之所以引入 Kafka 作为业务日志的收集处理系统,主要是考虑到它高吞吐低延迟、多重订阅、数据回溯等特点,可以更好地满足大5 - 4 d f 7 2数据场景的需求。


但随着业务量的迅速增加,以及c : V # a - ` H在业务使8 % Kafka 监控告警平台并命名「雷达」,多维度监控 Kafka 集群及使用方情况。


第四阶段:应用扩展


早期 KafP s X C i U Hka 在对公司各业务线开放的过6 J ? Z e程中,由于缺乏统一的使用规范,导致了一些业务方的不正确使用。为解决该痛点,= | z 完善:如 topic、partition、broker 的数据 size 指标, 同时 kafka manager 等监控工具对低版本 kafka 支持I . o不好。


同时对一些目标版本的特性进行了选型调研,如:


  • 0.9 版本, 增加了配额和安全性, 其中安全认证和授权是我们最关注的功能;
  • 0.10 版本,更细粒度的时间戳. 可以基F 3 5 x ~ 7 ~于偏移量进行快速的数据查找,找到所要的T b ` j e ( 1 A时间戳。这在实时数据处理中基于 Kafka 数据源的数据重播是极其重要的;
  • 0.11 版本, 幂等性和 Transactions 的支持及副本数据丢失/数据不一致的解决;
  • 幂等L - P A j R性意味着q : C ; t i对于同一个 Partitioz O 7 & =n,面对 Data 的多次发布,Kafka broker 端就可以做到自动去重;
  • 对 Transactions 的支` O T ) 9持使一个事务下发布多条信息到C F :多个Topic Partition 时,我们可以使它以原子性的方式被完成。在我们的下游消费者中,很多都是用 Flink 做一些流处理的工作,因此在数据处理及故障0 $ B 5 @ $恢复时仅一4 g ^ z r O 9 $次语义则显得尤为重要。而0.11 版本对于事务的支持则可以保证与 Kafka 交互的 Flink 应用实现端到端仅一次语义, 支持 E- ; 2 i ~ @ D ? #OS 可以对数据可靠性有绝对要求j ` l ] ) E h A, 比如交易、风控等场景下的重要支持;
  • Leader Epoch:解决了原先依赖水l o N位表示副本进度可能造成的数据丢! ) u _ % T 7 ;失/数据不一致问题;
  • 1.1 版本,运维性的提升。比如当 Controller Shut Down,想要关闭一个 Broker 的时候,之前需要一个很长很复杂的过程在 1.0 版本得到很大的改善。


最终选择 1.1 版本, 则是因为出于 Camus 与 Kafka 版本的兼容性及 1.1 版本已经满足了使用场景中重要新特性的支持的综合考量。{ . X % , q % C e这里再简单说K ( J o O A `一下 Camus 组件,同样是由 Linkedin 开源,在我们的大数据平台中主要作为 Kafka 数据 Dump 到 HDFS 的重要方式。


2)资源隔t 2 Q 8离


之前由于业务的复杂性和规模不大,大数据平i F 0台对于 Kafka 集群的划分比较简单。于是,一段时间以后导] k . L _ 9 @ . w致公司业务数据混杂在一起,某一个业务主题存在的不合理使用都有可能导致某些 BQ d z c .roker 负载过重,影响到其他正常的业务,甚至某些 Broker 的故障会出现影响整个集群? z G 9 9 K 4 I,导致全公司业务不可用的风险。


针对以上的问题,在集群改造上做了两方面实践


  • 按功能属性拆分独立的集群;
  • 集群内部 Topic 粒度的资源隔离。


①集群拆分


按照功能维度拆分多个 Kafka 物理集群,进行业务隔离,降低运维复杂度。


以目前最重要的埋点数据使用来说, 目前拆分为三类集群,各类集群的功能定义如下:


  • Log 集群:o S 9 B 5 A各端的U / /埋点数据采集后会优先落地到该集群, 所以这个过程不能出现由于 Kafka 问题导致采集中断,这对 Kafka; } | ! } Y + 可用性要求很高。因此该集群不会对外提供订阅,保证消费方可控;同时该集群业务也作为离线采集的源头,数据会通过 Camusu ( I * 组件按小时时间粒度 d& y Y + k U 2 hump 到 HDFS 中,这部分数据参与后续的离线计算。
  • 全量订阅集群:该集群 Topic 中的绝大部分数据是从 Log 集群实时同步过来的。上面我们提到了 Log 集群的数据是不对外的,因此全量集群就承担了消费订阅的职责。目前主要是用于平台内部的实时任务中,来对多个业务线的数据分析并提供分析服务。
  • 个性定制集群:之前提到过,我们可以根据业务方需求来拆分、合并数据日志源,同时我们还支持定制化 TopiG y { ) b 2c,该集群只需要提Q # - S 6 h a C供分流后 Topic 的落~ d *地存储。


集群整体架构划分如下图:


Kafka集群在马蜂窝大数据平台的优化与应用扩展


②资源隔离


Topic 的流量大小是集群内部进行资源隔离的重要依据。例如,我们在业务中埋点日志量较大的两个数x A T s e据源分别是后端埋点数据源 serS ] sver-event 和端上的埋点 mobile-event 数据源,我们要避免存储两个数据的主题分区分配到集群中同一个7 w ^ e m Broker 上的节点。通过在不同 Topic 进行物理隔离,就可以避免 Broker 上的流量发生倾斜。


3)权限控制和监控告警


①- # N H权限控制


开始介绍时我们说过,早期 Kafka 集群没有设置安全验证处于裸跑状态,因此只要知道 Brokem $ G | ~r 的连接地址即可生产消费,存在严重的数据安全性问题。


一般来说, 使用 SASL 的用户多会选择 Kerberos,但就平台 Kafka 集群的使用场景来说,用户系统并不复杂,使用 Kerberos 就有些大材小用, 同时 Kerberos 相对复杂,存在引发其他问题的风险。另外,在 Encryption 方面, 由于都是运行在内网环境,所以并没有使用 SSL 加密。


最终平台 Kafka 集群使| B r接多种 Metrics 数据源。


关于监控:


  • Falcon-agent:部署到每台 Broker 上, 解析 Kafka J~ r ; 4MX 指标上报数据;
  • Grafana:用来可视化 Falcon KaW &fka Metrics 数据,对 Cluster、Broker、Topic、Consumer 4 个角色制作监控大盘;
  • Eagle:获取消费组 Active 状态、消费组 Lag 积压情况,同时提供 API,为监控告警系统「雷达」提供监控数据。


关于告H 6 # c #警:


雷达系统: 自研监控系统,通过 Falcon 及 Eagle 获取 Kafka 指标,结合设定阈值进行告警。以消费方式举例,Lag 是衡量消费情况是否正常的一个重要指标,如果 Lag 一直增加,必须要对它进行处理。


发生问题的时候,不仅 Consumer 管理员要知道,它的用户也要知道,所以报警系统也需要通知到用户。具体方式是通过企业微信告警机器人自动提醒对应消费组的负责人或使用者及 Kafka 集群的管理者。


监控示例:


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


4)应用扩展


①实时数据订阅平台


实时数据订阅平台是一个提供 Kafka 使用全流程管理的系统应用,以工单审批的方式将数据生产和消费申请、平台C h ? z用户| K w g F G授权、使用方监控告警等众多环节流程化自动化, 并提供统一管控。


核心思想是基于 Kafka 数据源的身份L ] ~ H认证和权限控制b 费了。X y + v s T


Kafka集群在马蜂窝大数据平台的优化与应用扩展


Kafka集群在马蜂窝大数据平台的优化与应用扩展


③监控告警


对于平台来说,权限与资源是绑9 | n , e c `定的,资源可以是用于生产的 Topic 或消费使用的 GroupTopic。一旦权限分配后,对于该部分资源的使用就会自动在我们的雷达监控系统进行注册,用于资源整个生命的周期的监控。


④数据重播


出于对数C v K B ^ 6 Y f据完整性和准确性的考量,目前 Lamda 架构已经是大数据的一种常用架构方式。但从另一方面来 x $ D . | m n )说, Lamda 架构也存在资源的过多使用和开发难度高等问题。


实时订阅平台可以为消费组提供q C U K + o ] e任意位点的重置,支持对实时数据按时间、位点等多种方式的数据重播, 并提供对 Kappa 架构场景的支持,来解决以上痛点。


Kafka集群在马蜂窝大数据平台的优化与应用扩展


⑤主题管理


为什么提供主题管理?举一些很简单的例子,比如当我们想让一个用户在集群上创建他自己的 Kafka Topic,这时显然是不希望让他直接到一个节点上操作的。因此刚才所讲的服务,不管是对用户来讲,还是管理员来讲,我们都需要有一个界面操作它,因r y L为不可能所有人都通过 SSH 去连服务器。


因此需要一个提供管理功能的服务,创建统一的入口并引入主题管理的服务,包括主题的创建、资源隔离指定、主题元数据管理等。


Kafka集群在马蜂窝大数据平台的优化与应用扩展


⑥数据c X A - ] N b分流


在之前的架构中, 使用方消费 Kafka 数据的粒度都% / F | J是每个 K| q ~ m z w 3afka Topic 保存 LogSource 的全量数据,但在使用中很多消费方只需要消费各 LogSource 的部分数据,可能也就是某一个应用下几个埋点事! J w { ? z件的数据。如果需要下游应用自己写过滤规则,肯定存在资源的浪O j 3 | 3 V @费及使用便捷性的问题;另外还有一部分场景是需要多个数据源 Merge 在一起来使用的G # c。


基于上面的两种情况, 我人实现了按业务方需求拆分、合并并定制化 Topic 支持跨数据源的数据合并及 ap~ { gpcode 和 event code 的任意组个条件的过滤规则。


Kafka集群在马蜂窝大数据平台的优化与应用扩展


三、后续计划


1、解决数据重复问题。为了解决T Y ^ G C目前平台实时流处理中因故障恢复等因素导致数据重复的问题,我们正在尝试用 Kafka 的事务机制结合 Flink 的两段提交协议实现端到端的仅一次语义。目前已经在平台上小范围试用, 如果通过测试,将会在生产环境下推广。


2、Consumer 限流。在一写多读场景中, 如果某一个 Consumer 操作大量读磁盘, 会影响 Produce 级其他消费者操作的延迟。l因此,通过 Kafka Quota 机制对 Consume 限流及支持动态调整阈值也是我们后续的方向


3、场景扩展。基于 Kafka 扩展 SDK5 M } n、HTTP 等多种消息订阅及生产方式,满足不同语言环境及场景的使用需求。


以上就是关于 Kafka 在马蜂窝大数据平台应用实践的分享,如果大家有什么建议或者问题,欢迎在后台留言。


作者丨毕博

来源丨马蜂窝技术(ID:mfwtech)

dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn


近年来大数据技术发展迅速,并且不断推陈出新来适应新时代的海量数据处理需求。但随_ $ 7 8 | R ^ n着技术的更迭,每次演进都需要耗费大量人员的精力与时间,以往的8 _ . X G数据治理模式已经摇摇欲坠,此时DataOps应运r i ) B r 6 Z 2而生。来和Gdevops全球敏捷运维峰会北京站一起看看联通大数据背后的DataOps体系建设:


  • 《数据智能时代:构建能力开放的运r e / X % 7 f !营商大数据DataOps体系》中国联通大数据基础平台负责人/资深架构师 尹正军

本次研究目标是让大家了解联通大数据背后的DataOps平台整体架构演进,包括数据采集交换加工过程、数据1 ; { C {治理体系、数据安全管控、E f -能力开放平台运营和大规模集群治理等核心实践内容。那么2020年9月11日,我们在北京不见不散。


Kafka集群在马蜂窝大数据平台的优化与应用扩展

2020 Gdevops全球敏捷运维峰会-北京站 -百格活动

小米测试企业发展隔离工作兴国区块链比特币