24

云平台队列服务-Qbus实践

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzUxMTcwOTM4Mg%3D%3D&%3Bmid=2247487271&%3Bidx=1&%3Bsn=9277b1396689852f38022030d8a17943
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

f6ZzaqQ.gif

点击蓝字关注我们

本篇文章 从Qbus服务介绍、架构、使用场景开展, 涉及到队列底层具体实现原理, 只讲把Qbus服务上 到私有云的过程,希望给有相同需求的各位带来一点有价值的东西。下来就跟随作者一同学习下吧。

1

服务介绍

Qbus作为云平台队列服务,服务于公司各个业务线,目前 每天流量PB+ , topic 1W

Qbus以kafka组件为核心,及其周边配套服务 ,包括 日志收集 各种语言的sdk 持久化存储到hdfs 业务定制监控 等服务。

2

使用场景

场景广泛,包括日志系统,打点服务,大数据,流处理等常见场景。主要作用为   服务解耦 消息通讯 流量削峰   等。

3

服务架构

6nIza2E.png!web

4

业务接入方法

读写客户端主要有以下三种:

  • 日志收集;

  • sdk 写入;

  • 其他组件或者平台的读写(比如flink,hadoop);

其中前两种,可以直接在云平台提交工单,自动审核通过。第三种需要人工沟通,我们提供多版本集群,适配更多业务平台。

5

服务具体实现

其中我结合整个服务的实现。说一下我们主要做了的东西,及遇到的问题。这篇只讲解决方案。不涉及到具体细节。

日志收集组件:

日志收集使用 logstash 组件做了定制, filebeat 版在研发马上上线。

一般用户在云平台申请了日志收集的 topic ,填写了机器,与收集路径,就会生成一个自动工单,由命令系统自动去业务机器安装logstash。当然还包括日常的路径增删改查,这些由我们为云平台提供接口来实现。

定制功能包括

  • 配置统一管理,自动更新;

  • 收集进度汇报;

  • 服务自检;

  • 日志头添加机器名,特殊日志归并;

  • bug 修改;

配置存放在云平台配置中心。

状态展示如图:

ZJnEZfE.png!web

6

SDK

SDK是组内自研的。kafka-bridge 目前已经开源。欢迎大家使用。

定制功能包括

  • 使用VIP代替broker_list;

  • 更强大的错误处理,当有不可用副本时候直接跳过;

  • 相关参数优化;

7

持续化保存到HDFS

这是 Qbus队列周边的配套服务,提供持久化到HDFS的功能。

HDFS我们直接用的兄弟部门的平台。

服务架构如下:

YZnqEv.png!web

如图示,主要实现了以下内容:

  • 消费组件使用 flume , 我们给他做了容器化;

  • 相关配置存放在云平台配置中心 ,支持动态更改;

  • 我们在外围增加了一个动态调整工具,实时监控消费状态,自动的加减副本;

  • 还做了历史状态保存,统一展示,做到有据可查;

这样用户只需要在页面点一下开通或者关闭,就可以了,非常方便。

qmEJraR.png!web

8

监控服务

监控服务作为整体服务的基础,为整体服务提供数据支撑,包括上层的动态调整工具,都非常依赖监控。

当然业务们也有权限在云平台查看自己topic的流量情况。   iIz2AnY.png!web

监控服务我们主要使用了 Prometheus

如图:

BV3uayU.png!web

对它做了以下改造:

  • 根据业务水平切分为多个进程,做HA;

  • 统一的后端存储(influxdb 集群);

  • prometheus 前增加了nginx做反向代理;

  • 增加权限验证;

这样为上层提供稳定的监控数据接口。

9

总结和展望

在Qbus 服务依托云平台已经做到了工单全自动,除非kafka集群故障需要人工处理。

但是随着越来越多的业务都把服务上到容器平台之后,横向扩容变得非常迅捷,频繁,异常处理也可能不太合理,这也对基础服务带来了更多的挑战。

基础服务要做的更加健壮,才能应付这一切。

这其中包括:

  • 更迅速的扩容,迁移能力;

  • 更丰富的业务隔离;

  • 更强大的客户端兼容;

说到这里,更期待 pulsar 加入到新版本的qbus了。

往期精彩回顾

Golang开发入门(一)

i6raArj.png!web
b6bMBjv.png!web

360技术公众号

技术干货|一手资讯|精彩活动

扫码关注我们


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK