聊点技术 | 架构瘦身,让Bonree ONE跑得更轻

news2025/1/22 12:27:31

4月21日,博睿数据ONE有引力2023春季产品发布会圆满落幕,一体化智能可观测平台Bonree ONE 2023春季正式版正式发布,这一次发布的版本更轻、更强、更智能

 Bonree ONE在上一版基础上削减50%组件数量,下架两大高耗能组件,单机节省20G+内存,安装时间加快30%,磁盘消耗缩减80%;实现能力的5倍提升,单台16C 32G服务器稳定支撑100 APM探针数据接入或2万日活用户会话,帮助用户大幅降低配置成本。

架构瘦身,让Bonree ONE跑得更轻

本文作者

背景

在数据分析领域,OLAP引擎是整个服务的底座,是整个产品性能的发动机。它需要强悍的数据写入性能,用来支撑高时效的数据价值,同时也需要强悍的数据读取性能,满足我们在OLAP场景中的高效查询需求。高性能一般会伴随着更多资源需求量的产生。如果我们能在同等的数据量下,可以用更少的资源来满足需求,无疑会给产品带来更大的空间。我们从历史Druid繁重引擎切换到了更轻量级的Clickhouse

同时,Bonree ONE作为强大领先的一体化智能可观测平台,融合了RUM、APM、数据分析、ETL、Alert告警、自适应AI等诸多微应用能力。起初众多组件整合在一起时,整体需要38个组件,组件多,资源占用多,维护成本高,非常繁重。每次POC需要单机64G内存的机器才能部署,且性能非常有限。基于这些痛点,需要对Bonree ONE架构体系做整体梳理,制定瘦身技术方案

架构(四通一合)

首先,要解决架构问题,好的架构可以少走弯路。Bonree ONE架构体系讲究化繁为简,即四通一合

● 对象通:采集。统一的对象采集能力,OneAgent可以统一采集多端、多源、多种类型对象,并且SmartGate提供了采集数据的汇聚、路由、压缩、缓存、批传、负载均衡、安全管理等智能化功能,让用户数据采的安心、用的舒心。

● 数据通:数据。OneData作为统一的数据平台,可以集成指标、调用链、拓扑、事件、日志等多种可观测性类型数据;OneService作为统一数据服务,自研统一的BPL语句,可以同时计算和查询多源异构的数据集,让数据真正的融合关联用起来,解决传统割裂数据拼凑的问题。

● 模型通:模型。基于数据标准化建模、AI多模态的湖仓一体化,支持开箱即用和AI自适应的在线模型。

● 应用通:标准。多个应用遵循一套OneAPI标准,通过OneFramework可以让微应用插件互相通信,互相赋能。应用也做到了插件化,微应用可以各自单独跑,也可以合并一起跑。能力开放,可以集成与被集成。

● 中融合:ONE架构也到了真正意义的融合。一套体系化的数据、服务、模型都是互通互联,能轻便支持上层业务场景需要的复杂数据模型抽象和计算。

 

OneData底座

架构轻

 

优势明显

● 数据平台组件较少,OLAP引擎只有Clickhouse单个组件,在写入和元数据协同上各有一个组件,且都支持高可用。

● 在POC场景下,Clickhouse精简部署,写入效率完全达到业务需要。

● 在小型集群的场景下,Clickhouse只需要单shard部署,在满足性能的前提下,支持高可用。

● 在晚回数据场景下,Clickhouse天然支持分区,在历史数据和实时数据上,没有区别对待,效率上是等同的。

● 在clickhouse上,通过物化视图和多粒度表的支持,较大范围时间的查询效率同样可以在毫秒级别完成,且是稳定的。

Feature开发

● 写入资源平衡。

● 表粒度入库攒批控制。

● 多租户的支持。

● 数据自治理。

● 复杂数据类型上查询效率的改进。

● 持续优化读写性能,和资源瘦身。

● 数据重分布特性,针对数据扩容情况下的数据分布改进。

● 扩展DDL能力,可以在线支持针对物化视图、projection的动态加减列。

● 轻量级运维能力建设。

效果

相比瘦身之前,ONE技术优化效果:

1. 整体组件从38个减少到19个。

2. 从内存看:

1) POC配置规格从单机64G降到32G,单机可以支持运行100探针,运行时内存消耗在23G左右;

2) 业务各团队做全链路组件瘦身,POC版瘦身去掉所有hadoop、kafka、brfs、zookeeper等重组件;

3) 指标存储底座从Druid切换到Clickhouse,内存资源降了60%(集群版和POC版都适用);

4) SwiftAI重构架构,所有服务合并到一个进程组件(集群版和POC版都适用);

5) OneService作为新一代联邦数据服务,替代了传统较重的Presto大数据组件集合;

6) OneAPI和OneView支持微应用插件合并,也可以单独部署,替代了传统的SSO和Cloud组件(集群版和POC版都适用)。

3. 从磁盘看,APM的磁盘占用存储降到了1/5(日增100G->20G):

1) POC版去kafka会大量减少磁盘占用;

2) trace也做了写入压缩优化(集群版和POC版都适用);

3) Clickhouse没有Druid的二级hadoop存储占用(集群版和POC版都适用);

4) Clickhouse本身较Druid压缩比会好些,各业务表的压缩比在8到20倍(集群版和POC版都适用);

5) AI通过Iceberg湖仓一体和数据治理,按开箱默认指标两个月只需要40G的磁盘空间(集群版和POC版都适用)。

4. 从性能看,拿公有云统计性能数据,基于Clickhouse的OneData底座P99查询性能比历史Druid架构提高了6倍以上,平均耗时从秒级降到了毫秒级。同时在晚回数据场景,稳定性和效率比Druid体现的更加优秀,维护成本为0

5. 从功能看,ONE较之前秋季版产品增加了一些功能,比如默认会开启AI和会话,AI和会话不再单独追加资源(集群版和POC版都适用)。

6. 从应用框架看,引入强大的插件容器框架OneFramework,提供了运行环境和基础通用能力支持(依赖管理、网关服务、连接池封装、common工具类、会话共享等)。OneFramework可以让业务只关注自己的业务代码开发,并且各自可以独立开发和部署,大大提高了开发迭代和发布效率。一套框架可以灵活应对公有云和私有化不同的环境场景。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

97-TCP为什么要有一个“TIME_WAIT“的状态

文章目录 1.TCP为什么要有一个"TIME_WAIT"的状态(1) 可靠的终止 TCP 连接。(2) 保证让迟来的 TCP 报文有足够的时间被识别并被丢弃 ; 2.拓展带外数据 1.TCP为什么要有一个"TIME_WAIT"的状态 "TIME_WAIT"状态存在的原因主要有两点: (1) 可靠的终…

成功经验分享,Nacos注册中心实践,带你玩转Nacos

1、什么是 Nacos ? 官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 集: 注册中心配置中心服务管理 平台 nacos的特性包括: 服务发现和服务健康监测动态配置服务动态…

行人检测(人体检测)4:C++实现人体检测(含源码,可实时人体检测)

行人检测(人体检测)4:C实现人体检测(含源码,可实时人体检测) 目录 行人检测(人体检测)4:C实现人体检测(含源码,可实时人体检测) 1. 前言 2. 行人检测(人体检测)检测模型(YOLOv5) (1&#xf…

谈「效」风生 | 如何找到现有研发体系的「内耗问题」?

#第3期:如何找到现有研发体系的「内耗问题」?# 在上一期《谈到提升效能,我们应该如何下手?》我们聊到开始做研发效能的四个要点:评估现有流程、引入自动化工具、建立度量指标、持续改进。本期就围绕「评估现有研发体系…

二次创业接地气、强内功,三只松鼠从一棵树出发重造“人设”

民以食为天,自古以来,“吃”都是一门浅显与深奥并存的生意。产业链看似简单:种、收、制、卖,却足以令众多企业为之前赴后继十年、百年。 三只松鼠,正在这条变革的道路上砥砺前行。自去年4月开启全面转型以来&#xff…

C++ 赋值运算符重载

赋值运算符重载 运算符重载: C为了增强代码的可读性,可以对 运算符 进行重载,运算符重载 就是具有特殊函数名的函数,这个函数也具有返回值类型,函数名字和参数列表,它的返回值和参数列表的形式和普通函数…

基于SAM的二次开发案例收集分享

一、AnyLabeling[1]——制作人:vietanhdev AnyLabeling LabelImg Labelme Improved UI Autolabeling AnyLabeling软件是一个集成了YOLO、Segment Anything模型(AI支持)的高效数据标注工具,它可以通过点击目标的方式完成目标检…

商业银行财富管理“智能原生”能力呈阶梯化,AI助力商业模式趋向多元化发展

易观:金融业的财富管理从经营角度来看,是“客户与渠道管理场景运营产品研发”三位一体共同构建以客户为中心,数据驱动的业务经营体系。其中,“客户与渠道管理”是将客户利益作为核心目标,通过升级用户体验、客户全生命…

获奖名单公布|香港BlockBooster x Moonbeam黑客松圆满收官

Moonbeam基金会赞助的”Into the Socialverse”主题的BlockBooster黑客松于近日落幕。该活动由BlockBooster、OKX、Gitcoin和OxU香港区块链俱乐部联合主办,共有22个开发团队参赛。经过多位评委的严格筛选,3支优秀团队脱颖而出,获得Moonbeam基…

zookeeper集群命令使用

1.zookeeper脚本使用(地址填写集群中任意一个主机地址) 连接客户端命令行 /etc/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.60.112:2181 启动zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer.sh start 停止zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer…

春风吹,战鼓擂,忆享科技-云服务事业部春季员工关怀活动集锦,温情相伴

前言 时序更替,忆享科技又迎来新的一年。回顾2022,忆享科技在风雨中前行,实现了一次又一次的突破。在这2023年春暖花开,万物复苏的美好季节,忆享科技怀抱着它满满的关怀向大家走来!春季云服务事业部开展了五…

推动科技企业成长,开源网安受邀参加数字经济企业孵化器建设座谈会

近日,为更好地做好数字经济孵化器的孵化培育工作,推动数字经济孵化器和入驻企业高质量发展,高创公司召开数字经济企业孵化器建设座谈会。高新区工委委员、管委会副主任贺菲出席会议,开源网安合肥公司总经理菅志刚受邀参加本次座谈…

vue生命周期代码示范--Vue基本介绍--MVVM-示意图--数据渲染--事件绑定--修饰符--组件化--和全部代码示范

目录 Vue 基本介绍 官网 git 地址: MVVM-示意图 解读 MVVM 思想(上图) 下载官网 简单的代码示例方便理解 Vue 数据绑定机制分析! 注意事项和使用细节 数据单向渲染 基本说明 应用实例 注意事项和使用细节 数据双向绑定 应用实例 ​编辑代码实现 代码综合-单…

带头双向循环链表--数据结构

魔王的介绍:😶‍🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍&#x1f…

Rocket 框架基础

Rocket v0.5 DOC Rocket是Rust的一个web框架,它使编写快速、安全的web应用程序变得简单,而不会牺牲灵活性、可用性或类型安全性。 类型安全 从请求到响应,Rocket确保您的类型有意义。样板免费 把时间花在编写真正重要的代码上,让…

Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)

缘起 今年(2023年) 2月的时候做了个适配Amazon S3对象存储接口的需求,由于4月份自学考试临近,一直在备考就拖着没总结记录下,开发联调过程中也出现过一些奇葩的问题,最近人刚从考试缓过来顺手记录一下。 S3对象存储的基本概念 …

Unity Camera -- (4)探索不同类型的镜头

不同类型的镜头会呈现出不同的氛围和感觉,通常镜头的类型和相机聚焦方式和位置相关。本节我们来看看一些常见的不同类型的镜头。 广角 广角镜头通常在画面中包含更多的环境。观众接受到的是通常从远处拍摄的范围更广的视觉信息。 1. 工程窗口中,在Scene…

04/27课后作业(Qt)

widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("文件管理"); }Widget::~Widget() {delete ui; }//字体按钮对…

Spring Boot——@Autowired属性注入问题

🎈 Autowired问题 当我们在使用Autowired属性注入时,会发现idea提示Field injection is not recommended ,译为:不推荐使用属性注入   要想了解Spring和idea之所以不推荐使用Autowired属性注入,首先就要先了解Spring常用的注入方式:简单类型注入、集…

基于Redis的分布式限流详解

前言 Redis除了能用作缓存外,还有很多其他用途,比如分布式锁,分布式限流,分布式唯一主键等,本文将和大家分享下基于Redis分布式限流的各种实现方案。 一、为什么需要限流 用最简单的话来说:外部请求是不可…