数据服务系统0到1落地实现方案

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 基于业务场景做好服务的划分和设计,以及公共服务的基础构建,确保业务层的架构合理且可扩展,是否合理的基本考量就是,不断的新增业务场景是否需要做系统的大刀阔斧的改版,如果服务能力不断丰富,系统的改造成本很小,自然架构合理。

一、基于业务

数据服务通常有很多种业务模式,也就导致系统的架构与业务都会很复杂,不同的业务都具有自身的能力和复杂度,数据管理本身就是一件不容易的事情,所以在系统架构初期都会考虑服务能力的业务场景:

17-1.png

API服务:基于Http模式的数据服务,通过请求获取数据,例如风控模型,评分,反欺诈等各种业务;

平台服务:综合性的服务能力集成系统,客户的自定义服务需求很低,具有完整流程的数据服务能力,例如自动化数字营销平台,提供营销的全流程管理能力;

采集服务:通常客户以埋点的方式提交相关点击事件,采集系统基于全渠道进行汇总分析并向客户反馈;

可视化分析:这里分为两大块,数据分析与可视化,数据可以加载多方数据源联合分析,基于前端组件做高度自动化分析,例如常见的数据洞察系统;

工具私有化:基于积累的技术能力,把数据管理的系统直接销售给客户,部署在客户自己本地的服务上;

数据服务的场景,不同的业务需要各自场景下的数据支撑,但是不同的业务都需要相同的运营,结算,订单等基础功能,理解不同的业务场景,需要找出共同点与不同点,很简单的思路:相同点在公共服务中开发,业务不同点在独立的服务中开发,方便系统的不断扩展与演进。

二、业务层架构

不同的数据服务能力,最大的不同点就是需要依赖核心数据的支撑,从业务层面看系统架构层,还需要的功能复杂公共功能,这些需要在架构初期就考虑好,不然随着业务发展很快就要面临重构问题。

17-2.png

客户运营:每个客户的接入都需要一套完整的流程,服务说明,计费规则,合同管理,充值,服务开通停用,账单等一系列配套功能,通常都有两个入口:客户登录端,服务方运营端。

支付结算:功能最复杂的系统模块,提供支付能力,例如聚合多个支付渠道,用来解决客户的充值退款,或者服务方自己的支付需求,并提供各种结算账单的数据输出,对账平账能力。

订单管理:客户的每次请求,或者每个服务的使用,产生的计费动作都需要详细的订单记录,涉及单价,单号,时间很多关键因素,作为结算的核心依据,也是业务数据最集中爆发的地方。

权限体系:在数据服务体系中,权限系统的设计更侧重解决公司主体层面的需求,不同的商务团队负责不同的服务运营,客户管理等,所以需要清晰的体系化权限管理,给不同的角色的商务人员分配合理的权限。

日志集成:在详细的日志体系中,正常的业务日志数据可以用来在服务异常时的数据补全分析,异常的日志数据可以给开发用来分析系统问题和瓶颈不断的优化服务能力。

基于业务场景做好服务的划分和设计,以及公共服务的基础构建,确保业务层的架构合理且可扩展,是否合理的基本考量就是,不断的新增业务场景是否需要做系统的大刀阔斧的改版,如果服务能力不断丰富,系统的改造成本很小,自然架构合理。

三、数据中心

不同的业务服务场景需要依赖核心数据能力,这是服务卖点,通常会把支撑服务能力的核心数据单独部署并提供各种服务场景,通常理解为数据中心,同时业务服务自身也会产生各种数据,这里会根据服务的部署方式独立存储。

17-3.png

服务能力:数据中心作为多个业务公共依赖,不但要提供数据基础的查询能力,在处理海量数据任务时,还需要提供一定的调度和计算机制。

部署方式:根据数据特点通常会以集群、分库分表、OLAP引擎、数仓等多种方式存储,并根据数据特点提供统一的服务能力对业务层开放。

数据更新:数据是需要实时或者定时更新,数据来源通常是经过大数据计算和处理后的各种数据,还有就是业务层校验有误的数据,或者在使用过程不断优化的数据。

数据中心的独立架构部署是非常有必要的操作,大部分的数据都是具有联动性的,数据间的联动处理完全不用耦合到业务层面,数据的流动校正安全性管理等等都可以在数据中心统一管理,规避掉数据混合部署带来的系列复杂问题。

四、大数据底层

数据服务能力的最底层需要海量数据处理的能力做支撑,所以用到很多大数据组件技术,对数据做存储、计算、分析、搬运等等操作。

17-4.png

数据存储:大数据底层最常见的存储就是文件形式,结构化的数据库存储,半结构化的日志型文件,还有一些非结构化数据。

计算能力:对于海量数据的处理需要依赖各种并行计算,离线任务,实时计算等多种方式,达到快速处理的目的。

数据搬运:数据处理完成之后并不会在底层直接提供服务能力,通常会把数据同步到上面数据中心,在对业务提供服务能力,这里搬运可以是数据输出,也可能是待处理的数据输入。

大数据的底层组件则是系统的核心能力,对数据的精准计算分析确保服务的能力,并且不断的对现有架构做自动化和工具化管理,这点非常重要,海量数据管理的流程人工介入越多则说明效率越低下,尤其在底层向数据中心推送数据或者数据接收的过程,需要约定好策略保证数据安全稳定的自动传输。

五、整体考虑

对一个复杂系统的设计,首先最关键的就是清晰的整理出业务模式,对业务模式进行分析,根据业务特点做系统架构可以避免很多弯路,例如上面的数据服务系统:

17-5.png

首先从大的层面看,系统拆分业务服务,数据中心,大数据底层能力这三大块,并且要求各个大模块之间不存在强耦合关系,确保模块之间可以独立的扩展;

其次确定各个模块需要的实现的核心功能,业务层保证基本的服务能力,然后把每个业务都需要的基础功能向下抽取封装,拆分出业务服务和公共服务,支撑业务能力;

然后确定各个模块之间协作的方式,例如业务与数据中心的通信能力,接口标准,数据安全等细节,或者数据中心与底层大数据之间的数据搬运模式,确保数据流通能力;

最后各个模块具体的细节实现,这里需要考量的就是根据业务模式,如果可以选择相同的组件和架构方式,尽量统一架构选型和组件依赖,降低不同模块之间的壁垒;

上述完整的系统架构从开始搭建到提供稳定的服务能力,大概耗时七个月的时间,期间不断的演进和升级,并且不断上线新的服务模块并进行系统监控,直至业务服务相对完善和系统相对稳定。

END


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
9月前
基于VisualGLM-6B大模型的本地部署与推理
本文是基于清华开源的VisualGLM-6B 支持图像中英文的多模态对话语言模型,进行了一系列本地的简单部署,包括环境配置、模型部署、演示推理、模型微调(官方提供的代码),由于个人电脑显存不足,最后是在阿里云服务器交互式平台DSW终端进行微调和训练操作的。
297 17
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
Reve Image:设计师失业警告!AI秒出海报级神图,排版自动搞定
Reve Image 是 Reve 推出的全新 AI 图像生成模型,专注于提升美学表现、精确的提示遵循能力以及出色的排版设计,能生成高质量的视觉作品。
422 29
Reve Image:设计师失业警告!AI秒出海报级神图,排版自动搞定
|
11月前
|
存储 前端开发 JavaScript
React中组件通信方式有哪些
本文首发于微信公众号“前端徐徐”,探讨了 React 组件通信的多种方式,包括 Props、回调函数、Ref、Context、Redux、消息发布-订阅和全局事件。每种方式都有其独特的优势和适用场景,如 Props 适用于简单的父子组件通信,Redux 适合复杂的状态管理。文章通过示例详细介绍了这些通信方式的实现和注意事项,帮助开发者选择最适合项目需求的通信方式。
178 2
React中组件通信方式有哪些
|
10月前
|
监控 前端开发 JavaScript
前端稳定性工具-Sentry
【11月更文挑战第9天】Sentry 是一个开源的错误和性能监控平台,支持多种编程语言和框架。它能够捕获前端应用中的各种错误和性能问题,提供详细的错误信息和用户行为关联,帮助开发团队快速定位和解决问题,优化应用性能。但需注意隐私保护、数据准确性和成本控制。
921 3
|
API 数据安全/隐私保护 开发者
​收不到验证码邮件该怎么办?
在日常生活中,收不到邮箱验证码会带来不便。解决方法包括:检查垃圾邮件文件夹并调整过滤设置;确认邮箱地址无误或使用备用邮箱;检查邮箱存储空间并设置自动清理;了解邮件服务提供商状态或尝试其他服务。使用AOKSend可确保验证码邮件顺利送达:注册账户,获取API密钥,配置SMTP设置,并利用分析工具优化邮件发送策略。遵循这些建议,能有效解决收不到验证码的问题。
|
11月前
|
Java Nacos 微服务
微服务中间件之Nacos
Nacos是阿里巴巴开源的动态服务发现、配置管理和服务管理平台,支持服务注册与发现、配置管理及服务健康监测。采用Spring Cloud、Spring Boot、Raft算法等技术,适用于微服务架构和云原生应用,提供简单易用的安装部署方式和丰富的应用场景。
2060 4
|
存储 Linux
linux上SVN出现 "Unable to connect to a repository at URL 'svn://xx.xx.xx.xx/xxx' 和 No repository ...
centos上安装了svn, 有时候会不知道什么原因出现客户端小乌龟无法连接或无法提交等情况
644 5
|
数据处理 数据库 流计算
FlinkCDC的性能如何
FlinkCDC的性能如何
|
机器学习/深度学习 自然语言处理 算法
Scikit-Learn与深度学习:融合与比较
【4月更文挑战第17天】本文比较了Scikit-Learn与深度学习框架在机器学习中的应用。Scikit-Learn以其易用性和丰富算法库深受喜爱,适合结构化数据处理,但面对复杂问题和大规模数据时可能力不从心。深度学习则以强大的神经网络解决图像、语音等任务,但需大量计算资源且解释性差。两者可互补,如预处理后输入深度学习模型,或在集成学习中融合。选择工具应考虑问题性质和资源,未来两者有望进一步融合创新。
|
Dubbo Java 测试技术
技术汇总:第十章:Maven Profile动态选择配置文件
技术汇总:第十章:Maven Profile动态选择配置文件
724 0