随着多点 DMALL 全面 To B 转型

news2025/1/15 23:45:13

随着多点 DMALL 全面 To B 转型,为越来越多的 B 端客户提供零售全渠道解决方案,需要具备在多云部署环境下提供更具性价比、可复用的大数据底层基座和平台工具链。我们也终于等到了一个契机,彻底甩开历史包袱,设计搭建存算分离、轻量级、可扩展、云中立大数据集群架构。

幸运的是,Spark on K8s 的技术趋于成熟,我们得以全面拥抱云原生。在 K8s 的基座上,我们合并了大数据计算集群和业务服务集群,甩开 CDH 的版本限制,剥离 Hadoop 生态的强依赖,充分利用对象存储,简化运维和部署,降低用户使用成本。

考虑到上一版架构中的部分遗留问题,在升级架构设计中,经过详细的调研、分析和选型,Kyuubi 也正式替换 UniSQL 作为 SQL Proxy,负责多套查询引擎的统一代理服务。

升级架构设计

在升级架构中,我们充分考虑到之前版本不一致的情况,合并并简化了技术选型,使整体架构更轻量级和可扩展:

实践方案

使用 Kyuubi 作为统一 SQL Proxy,那么 Kyuubi 就需要满足之前 UniSQL 为代表的代理服务的全部辅助功能,包括审计日志、实时监控、限流、动态参数修改、权限管控等。因此我们深入学习了社区的实践经验和最优推荐,根据场景和需求,完善了 Kyuubi 的服务。以下为我们部分实践结果。

  • SQL 审计

作为统一代理层,需要对所有 SQL 和连接进行详细的记录,包括用户、SQL、执行时间、执行结果等。这样的数据并非实时使用,而是用于后续回溯查找问题,或者进行用户操作习惯的统计分析。幸运的是,Kyuubi 提供了 EventHandler 的方式,收集了非常完整的信息。在 Kyuubi1.6.1 中,支持使用下列参数将相关记录落在本地日志中:

kyuubi.backend.server.event.json.log.path
kyuubi.backend.server.event.loggers

本地日志并不方便统计分析,我们需要更灵活的方式。最终我们选择仿照原生 JsonLoggingEventHandler 类,继承 EventHandler 自定义将所需日志写入 Kafka 中。后续再通过大数据平台的功能,落地到 Hive 或其他引擎中用于回溯分析。

  • 实时监控

当前即席查询的使用情况如何、连接数量、失败原因等,都需要实时监控查看。Kyuubi 提供了非常完整的指标监控能力,我们也复用内部运维平台的监控体系,选用了 Prometheus + Grafana 作为实时监控的载体。

相关参数:

kyuubi.metrics.reporters
  • 限流

不同平台和用户的使用方式不同,容易导致连接数爆发,从而影响 Kyuubi 服务的稳定性。因此,限流是必须要纳入考虑的。Kyuubi 提供了部分参数进行限流:

kyuubi.server.limit.connections.per.user
kyuubi.server.limit.connections.per.ipaddress

虽然这些参数限制到了单用户的连接数,甚至单用户单 IP 的连接数,但是这些参数是对所有用户统一的,而且 Kyuubi 服务启动后不能动态修改。就我们的使用经验来看,支持针对不同用户动态设置不同的连接限制将是一种更灵活的方式。但当前的功能也能基本满足限流管控要求,最终决定针对这个场景我们不做代码修改,期待社区未来能够提供更精细的管控功能。

  • 参数动态传递

线上环境缺乏合适的方式进行参数传递,这个遗憾在新的架构中得以弥补。通过 Kyuubi 提供的自定义动态参数传递方式,实现 SessionConfAdvisor 类后对接配置中心。参数将在每次启动 Session 的时候动态拉取,也能较好的满足不同用户不同资源分配的场景:

kyuubi.session.conf.advisor

当然,为了减少对不同环境参数的自定义 jarb 包管理,我们调整了传入该类的参数,添加了 KyuubiConf,这样不同环境部署的 Kyuubi 自动可以传入对应的配置中心路径等信息,自定义的 jar 包也可以环境无关,减少代码运维的复杂度。

 

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

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

相关文章

Git安装和使用

1.工具:Git,下载链接:Releases git-for-windows/git GitHub 下载完成了之后可以看到再程序处可以或者鼠标右击可以看到三个东西,分别是: Git Bash:推荐使用,使用命令风格类似于Linux命令&am…

PyOpenGL安装

PyOpenGL安装 学校图形学大作业, 之前要求是MFC和C , 但是vs mfc c opengl的环境实在是配置的吐血了… 于是润来搞PyOpenGL玩一玩 参考网上经验贴做的 我新建了一个虚拟环境 下载whl文件 我的虚拟环境是python3.7,于是下载下面指出来的两个…

superset vs Tableau

superset the only thing i need to know is how to install superset. it’s difficult to install ?? https://superset.apache.org/docs/intro https://flask-appbuilder.readthedocs.io/en/latest/installation.html how to use superset ? superset is a modern …

Ubuntu下基于Anaconda3 配置任意版本tensorflow和opencv的通用方法

参考 Ubuntu下基于Anaconda3 配置任意版本tensorflow和opencv的通用方法 - 云社区 - 腾讯云 在Github上利用顶会上深度模型时经常会被tensorflow和opencv的版本问题困扰,比如博主最近遇到的需求: 安装更高的版本一般没问题,下面介绍一种配置…

MATLAB应用1——MATLAB傅里叶函数自行封装

主程序: % eximportdata(data3.txt); tx regexp(ex{1}, \s, split);%按照空格分隔字符串,成为单个cell yxstr2double(tx); plot(yx); wwyx(2500:9000)-2055; Fyz_fft(ww,1000); 傅里叶封装函数: function Fyz_fft(y,Fs) % Demon: % Fs 128; …

如何理解UML2.5.1(03篇)

下面先简单列举一下subsets和redefines的特点: 关联端点具有标识subsets表明subsets一端的对象集合是被subsets一端的对象集合的子集。此时,subsets一端的类与被subsets一端的类之间必须存在继承关系。同时,subsets一端的角色名一定与被subse…

Spring与web整合

创建maven的web项目 这个项目src下没有test等文件——手动创建 关于web-app version"3.0" 的问题 如何改成推荐使用的web-app 4.0&#xff1f; 再添加 就是默认4.0版本的了 配置监听器 <?xml version"1.0" encoding"UTF-8"?> <we…

[附源码]JAVA毕业设计线上导医系统(系统+LW)

[附源码]JAVA毕业设计线上导医系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

大学生期末网页大作业:基于HTML+CSS+JavaScript蓝色的汽车设备营销企业网站模板13页面

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

计算机视觉之SSD改进版本(平滑L1范数损失与焦点损失)《4》

在 计算机视觉之单发多框检测(Single Shot MultiBox Detector)模型《3》中我们使用到的是L1范数损失&#xff0c;L1范数损失也叫做平均绝对误差&#xff08;MAE&#xff09;&#xff0c;目标值与预测值之差的绝对值的和&#xff0c;表示的是预测值的平均误差幅度。它的缺点就是…

U3D中使用SPINE疑难杂症和解决办法

我使用的SPINE是3.8.99&#xff0c;项目当中SPINE需要使用特别多&#xff0c;网上都千篇一律&#xff0c;找不到一些实际遇到的问题&#xff0c;下面都是我遇到的一些稀奇古怪的问题。 1.SPINE导入U3D&#xff0c;拖到场景里&#xff0c;可以选择创建为2D或者UGUI组件&#xf…

分片上传—webloader

最近研究大文件上传方案的时候偶然间发现的一个百度开源的工具&#xff1a;webloader&#xff0c;用了一下&#xff0c;确实还不错&#xff0c;下面带着大家一起使用一下。 1.引入资源 使用Web Uploader文件上传需要引入三种资源&#xff1a;JS, CSS, SWF。 所以我们需要先下…

tomcat学习笔记

1.tomcat使用的方法有很多种&#xff0c;我这边使用的是直接解压使用的版本 tomcat 9.0.45版本免安装版下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1c6NN2Z-McuN4uw6JGWZmrA?pwdrl7t 提取码&#xff1a;rl7t 2.启动方式是在bin目录下找到startup.bat运行&…

用HTML+CSS做一个漂亮简单的花店网页【免费的学生网页设计成品】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

学习笔记-4-ANN-1-Preliminaries

细节内容请关注微信公众号&#xff1a;运筹优化与数据科学 ID: pomelo_tree_opt Outline 1. ANN与SVM 2. ANN的数学基础 3. ANN history 4. Deep neural network ------------------------------ 1. ANN与SVM的区别 SVM, SVR中有很多数学推导的过程&#xff0c; 例如pri…

Spring 使用指南 ~ 3、Spring 中 bean 的生命周期详解

Spring 中 bean 的生命周期详解 一、bean 的生命周期图解 二、bean 创建时使用 Spring 的资源 实现 aware 类型接口的 bean&#xff0c;可以在 bean 实例化的时候获取到一些相对应的资源&#xff0c;如实现 BeanNameAware 的 bean&#xff0c;就可以获取到 beanName。Spring …

[附源码]JAVA毕业设计无人驾驶汽车管理系统(系统+LW)

[附源码]JAVA毕业设计无人驾驶汽车管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

[附源码]JAVA毕业设计西藏民族大学论文管理系统(系统+LW)

[附源码]JAVA毕业设计西藏民族大学论文管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

KubeSphere v3.3.1 权限控制详解

作者&#xff1a;周文浩&#xff0c;青云科技研发工程师&#xff0c;KubeSphere Maintainer。热爱云原生&#xff0c;热爱开源&#xff0c;目前负责 KubeSphere 权限控制的开发与维护。 KubeSphere 3.3.1 已经发布一个多月了。 3.3.1 版本对于 KubeSphere 来说只是一个小的 Pat…