架构设计基础

news2025/1/12 15:44:40

一、架构图

二、系统背景

业务发展迅速,积累了大量的数据资产,大数据团队承担数据串联、沉淀,反哺和赋能业务的重要职责。大数据团队协同各部门打造了玩个大狗魔方、大狗宝盒数据产品,提供data-center应用发力数据中台,统一数据关键路径,尽最大程度解决部门间信息屏障问题。但是数据中台的加速输出没有为内部系统建设带来过多收益,反而产生了多个业务应用,造成了数据服务复用率低的难题。

数据服务建设面临挑战颇多,如存储系统多样,数据处理量大,数据需求粒度不定等重重问题,为了实现数据收口、快速响应,提高数据体验,通用数据中台应运而生。

三、系统原则

为了支持更多类型的业务,减少系统的耦合,便于发现和追踪问题,节省人力成本,方便迭代,需要设计比较好的架构,系统架构具备以下原则:

  1. 通用性:该架构具备包容的能力,业务上的任何产品都可以用这一套架构来涵盖和实现。
  2. 模块化:模块化的目的在于将一个业务按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能相关的内容,模块之间通过一致性的协议调用。将一个大的系统模块化之后,每个模块都可以被高度复用。
  3. 组件化:组件化就是基于可重用的目的,将一个大的软件系统拆分成多个独立的组件,主要目的就是减少耦合。一个独立的组件可以是一个软件包、web服务、web资源或者是封装了一些函数的模块
  4. 一致性:指模块的数据输入输出采用统一的数据交互协议,做到整个系统一致。

四、系统要求

数据服务满足应用的概念,支持在数据服务上开发应用和接口,数据服务需要满足微服务设计、支持异构存储组件特性。

微服务设计特性。微服务设计具有低耦合、高内聚的特点,需要大量基础组件的支持如日志、缓存、链路追踪,以及服务的注册与发现。

异构存储组件特性。大的数据中台支持多样的存储组件,关系型/KV型,单机/分布式,磁盘/内存,行式/列式/多模式等,以独立或组合的形式适配不同的应用场景。每个存储组件的连接池管理、使用规范、性能优化各不相同。

开发编译部署特性。数据服务以降本增效为目的,提供快速的数据响应,传统的应用开发编译和部署模式存在固有的生命周期,数据服务需要更快。

1.存储系统支持。数据服务需要支持多种类型的存储系统,关系型、k-v,行式、列式,sql、query dsl、api查询语言,文件系统等多种形式。

2.自助取数。简单的模板化,负责的定制化。针对简单的查询需求,可以通过模板化配置快速分装数据接口,负责的需要能够支持编程介入。

3.系统安全。需要有完备的稳定性方案,防止某些大数据量,长耗时请求干趴整个系统。尤其注意把存储系统打崩或者带宽打满这种事。

4.数据血缘。大数据平台的建设是涉及到各个业务团队,业务系统是相互独立的系统,数据是统一的,很多数据的相互协同是通过大数据实现闭环的,业务追求闭环,数据也在追求闭环,因此就需要追溯数据的来源和去向。当数据从数据服务分发出去后通过其他形式重新回来的过程中,不能丢失这种血缘关系。

5.资产保护。数据是种具有重要价值的资产,要严格保护珍贵资产不被盗取。申请数据需要经过审批流程才能获取到一个数据接口。

6.开发支持。为了实现方便的自助取数,需要有系统级的数据资产,元数据,数据血缘等子系统支持的开发系统,用于开发、调试数据接口。

7.发布系统。数据服务的数据接口要摒弃掉以往应用编译启动的流程,公司发布系统不再满足数据服务数据接口的发布需求,灰度发布。

8.监控告警。监控告警是系统稳定性运行的前提,及时告知开发系统问题。

五、模块简介

存储层

多种多样的存储系统。redis,mysql,elasticsearch,odps等等。

值得一提的是trino(它还有个名字是presto,关于它为什么改名了,以及为什么出现个trino就是个瓜了)。presto分布式SQL查询引擎, 一个纯粹的计算引擎,并不存储数据,通过Connector获取第三方存储服务的数据,也被称作prestodb。它具有异构数据源功能,支持多种数据源,如Hive、Kafka、MySQL、Ealsticsearch、Redis、Iceberg、Kubu、Druid、Cassandra等,也可自己实现Connector。支持通过JDBC/ODBC连接,提供了ANSI SQL语法支持,支持窗口函数,join,聚合,复杂查询等。

执行层

sql即接口,这也是数据服务的核心所在。

所谓的模板化开发即提供包含占位符的query(sql,query dsl等),参数映射关系和结果映射关系实现数据接口。

系统监控

为数据服务全栈提供监控告警支持

支持系统

元数据,数据资产,数据血缘三兄弟既支持开发系统又与数据服务打通,数据服务的后台,运维系统如发布系统,权限支持,用于外界查询接口详情的在线文档。

六、提问

  1. 数据服务如何提供接口? 
    1. 方案之一。http://dubbo.apache.org/zh/docs/v2.7/user/examples/generic-reference/
  2. 接口有鉴权吗? 
    1. 每个接口都会有鉴权,以及用于追踪每个接口数据流向的功能。
  3. 接口升级有兼容吗?删减参数和结果字段,接口逻辑调整等造成不兼容
    1. 增加版本号功能。dubbo本身提供了version属性来控制接口的升级,解决多版本并存的问题,但是需要消费者与提供者一起合作,可以yy的是gateway的时候通过路由和版本等功能进行接口升级。
  4. 服务市场。数据服务有那些应用场景? 
    1. magician,boss-board数据产品,data-center数据服务,报表数据源
  5. 成本管理? 
    1. 数据服务使用情况,接口的使用情况(业务数量,请求数量,业务重要性)
  6. 业务价值思考? 
    1. 降本增效。降本:改变业务流程,节省了多少资源(时间,人力,金钱。。。),增效:效率增效,时间增效
  7. 资源隔离? 
    1. 单个接口不会耗尽整个“系统”的资源,如线程、network、存储资源。考虑增加sql耗时统计自动增加熔断机制,后期考虑sql执行计划。
  8. 数据?服务? 
    1. 数据:功能核心以数据查询下载即取数方向走,接口只是一种简单形式。核心功能以支持多样数据源查询功能为主
    2. 服务:做好在线服务功能,因为接口的开发形式在改变,在微服务架构中的接口文档,服务发现,限流熔断监控告警,路由,发布等功能存在兼容问题,后期以解决这些问题为主

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

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

相关文章

leetcode做题笔记203. 移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2: 输入&#xff1a…

redis archive github

https://github.com/redis/redis/releases/tag/7.2.2https://github.com/redis/redis/releases/tag/7.2.2

JS38 高频数据类型

题目来源: 高频数据类型_牛客题霸_牛客网 (nowcoder.com) JS38 高频数据类型 描述 请补全JavaScript代码,要求找到参数数组中出现频次最高的数据类型,并且计算出出现的次数,要求以数组的形式返回。 注意: 1. 基本数据…

【VASP】QVASP 的使用

【VASP】QVASP 的使用 QVASP 的介绍Qvasp 安装使用、测试和算例ELF电荷局域函数计算输入文件简述 QVASP 的介绍 下载地址:https://sourceforge.net/projects/qvasp/ qvasp定位于开发包含VASP输入文件前处理、输出文件后处理的基本功能,同时&#xff0c…

threejs(6)-操控物体实现家居编辑器

// 导入threejs import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; // 导入lil.gui import { GUI } from "three/examples/jsm/libs/lil-gui.module.min.js";…

使用ControlNet生成视频(Pose2Pose)

目录 ControlNet 介绍 ControlNet 14种模型分别是用来做什么的 ControlNet 运行环境搭建 用到的相关模型地址 ControlNet 介绍 ControlNet 是一种用于控制扩散模型的神经网络结构,可以通过添加额外的条件来实现对图像生成的控制。它通过将神经网络块的权重复制到…

排序-基数排序

排序思路:抽象实现多个桶用来储存所需要排序的基数,再递归的调用到每一次数上(通俗点讲,先按个位进行分类,再按十位进行分类,依次排到最高位,最后将所有分类的数连在一起就是排完的序列&#xf…

Pytorch代码入门学习之分类任务(三):定义损失函数与优化器

一、定义损失函数 1.1 代码 criterion nn.CrossEntropyLoss() 1.2 损失函数简介 神经网络的学习通过某个指标表示目前的状态,然后以这个指标为基准,寻找最优的权重参数。神经网络以某个指标为线索寻找最优权重参数,该指标称为损失函数&am…

M1安装python3.12

1.下载pkg文件 Python Releases for macOS | Python.org 2.安装 下一步下一步即可 3.配置环境变量 不配置也可以,直接python3.12即可进入python环境。 4.python3.12改为python 每次少敲4次键盘也挺爽的。效果: 实现步骤: python3.12的默…

DeepinV20实现使用CapsLock键切换输入法

概览 起因参考资料解决问题1. 删除CapsLock键映射关系2. 新建CapsLock键映射关系3. 建立配置文件4. **注销用户或者重启电脑**5. 修改切换输入法快捷键6. 测试输入 起因 看同事的MacBook可以使用CapsLock键切换输入法,而我作为Shift党CapsLock键几乎不使用&#xf…

HackTheBox-Starting Point--Tier 1---Appointment

文章目录 一 题目二 实验过程 一 题目 Tags Web、Databases、Injection、Apache、MariaDB、PHP、SQL、Reconnaissance、SQL Injection译文:Web、数据库、注入、Apache、MariaDB、PHP、SQL、侦察、SQL 注入Connect To attack the target machine, you must be on …

Spring Boot拓展XML格式的请求和响应

在我们开发过程中,我们经常使用的参数绝大多少事HTML和JSON格式的请求和响应处理,但是我们在实际开发过程中,我们可能经历一些,比如对于XML格式的请求,我们在后端应该如何接收,并且如何将XML格式的参数变成…

电源控制系统架构(PCSA)电源控制挑战

安全之安全(security)博客目录导读 下图显示了一个简化的SoC示例,这个例子是从high-level的功能层面来说明的。 该示例以移动设备为中心,但可用于演示在任何SoC配置中高层次的电源管理挑战。 除了示例所示的主要功能(包括处理器、通信功能和公共系统功能…

P1966 [NOIP2013 提高组] 火柴排队

洛谷的一道原题,方法有很多,树状数组以及排序,对刚学树状数组的人来说用排序会比较好理解。 本题最重要的结论就是,要保证两个数组中相同位置的差最小,但是不一定两个数组中数值相同,所以只需要保证相同位…

Kafka - 图解生产者消息发送流程

文章目录 发送原理1. 主线程 (main thread):2. Sender 线程:3. RecordAccumulator: 发送原理小结重要参数 发送原理 Kafka的Producer发送消息采用的是异步发送的方式。 在消息发送的过程中,涉及到了两个线程:main线程和Sender线程…

vue3 联合搜索

划到下方可以直接观看完整代码 目录 前言 用法 1. 数据绑定和事件处理 2. 列表渲染和条件过滤 解析 完整代码 前言 在现代的前端开发中,Vue.js 是一个非常流行的 JavaScript 框架,用于构建用户界面。Vue 提供了一种简洁的方式来构建交互式和动态的网…

顺序表的定义与实现(数据结构与算法)

一、顺序表的定义 1. 顺序表的定义 #define MaxSize 10 //定义最大长度 typedef struct{ ElemType data[MaxSize]; //用静态的“数组”存放数据元素int length; //顺序表的当前长度 …

【MATLAB源码-第58期】基于蛇优化算法(SO)和粒子群优化算法(PSO)的栅格地图路径规划最短路径和适应度曲线对比。

操作环境: MATLAB 2022a 1、算法描述 粒子群算法 (Particle Swarm Optimization, PSO) 1. 算法概述 粒子群算法是一种基于群体智能的优化算法,模拟鸟群觅食的行为。算法中的每个粒子代表问题的一个可能解,并且具有位置和速度两个属性。粒…

【计算机网络】什么是HTTPS?HTTPS为什么是安全的?

【面试经典题】 前言: HTTP最初的设计就是用于数据的共享和传输,并没有考虑到数据的安全性,如窃听风险,篡改风险和冒充风险。HTTPS是在 HTTP 的基础上引入了一个加密层。HTTPS通过数据加密,数据完整性检验和身份认证…

ES性能优化最佳实践- 检索性能提升30倍!

Elasticsearch是被广泛使用的搜索引擎技术,它的应用领域远不止搜索引擎,还包括日志分析、实时数据监控、内容推荐、电子商务平台、企业级搜索解决方案以及许多其他领域。其强大的全文搜索、实时索引、分布式性能和丰富的插件生态系统使其成为了许多不同行…