六、数据技术篇—— 数据服务

  • 6.1 架构演进
  • 6.2 技术架构@
  • 6.3 最佳实践@
    • 6.3.1 性能
    • 6.3.2 稳定性

6.1 架构演进

DWSOA

由需求驱动,一个需求开发几个接口,编写接口文档,开放给业务方调用。

缺点:接口力度粗,灵活度低,扩展性差,复用率低,开发效率低

OpenAPI

数据按照统计粒度聚合,同样维度的数据形成一张逻辑表,能有效收敛接口数量。

SmartDQ

OpenAPI接口变多,且带来大量对象关系映射的维护工作量。这里再抽象一层,用DSL(Domain Specific Language,领域专用语言) 来描述取数需求,采用标准的SQL语法,可以用对象关系对象映射框架,把接口减少到一个,且只需要关心逻辑表的结构(不需要关心地标数据,可以只变更映射关系,对调用法无感)。数据服务接口一定要尽可能抽象,接口数量尽可能收敛

OneService

在满足简单的查询服务需求,满足个性化的垂直业务场景、实时数据推送、定时任务。

6.2 技术架构@

元数据模型:多种数据源 -> 物理表(具体数据源的一张表,要指明主键)-> 逻辑表(类似于视图,是一张虚拟表,可看作若干主键相同的物理表构成的大宽表)-> 主题

查询数据库:底层支持多种数据源 1. 实时任务写入 2.离线数据同步

服务层:元数据配置,物理表和逻辑表映射

主处理模块流程

  1. DSL解析:对查询DSL进行语法解析,构建查询树
  2. 逻辑Query构建:遍历查询树,通过查找元数据模型,转变为逻辑Query
  3. 物理Query构建:通过查找物理表和逻辑表映射,变成物理Query
  4. Query拆分:如果设计多张物理表且查询条件允许拆分,变为多个SubQuery
  5. SQL执行:SubQuery组装成SQL语句,交给DB执行
  6. 结果合并:返回结果合并

其他模块: 日志记录,性能稳定优化

6.3 最佳实践@

6.3.1 性能

资源分配

如何合理的进行资源分配,能够提升性能?

  1. 剥离计算资源。有些指标要多天数据的集合或者有复杂的逻辑计算,这些计算逻辑在调用接口时处理成本很高,推荐在底层的数据公共层处理
  2. 查询资源分配。查询接口分为:GET接口(基本转为KV查询,时间短代价小)和 List接口(响应时间长,返回记录多,序列化和网络传输,代价高)。两个独立线程池(一个的话,快的会被慢的堵住)
  3. 执行计划优化。方案一:查询拆分,并发执行。方案二:查询优化,符合条件的List请求变成GET

缓存优化

  1. 元数据缓存。接口查询会频繁调用元数据信息(场景一:解析出映射关系,逻辑Query变成物理Query。场景二:SQL安全检查,调用参数是否合法,LIMIT是否超过上限。场景三:字段权限检查)
  2. 模型缓存。把解析后的模型缓存在本地,类似于找个公式直接去套用就可以,可以省了DSL->SQL 的解析时间
  3. 结果缓存。把复杂、响应时间比较长,变动比较少的数据缓存。

查询能力

  1. 合并查询。日期是今天的话,展示的是实时数据;昨天的话是离线数据,需要切换原因:两者数据存储的数据源不同,且查询方式不同,离线产出时间不定(可能延迟,但精准),实时对成本和性能考虑,用的算法不精准。可以使用离线数据,实时数据作为兜底
  2. 推送服务。前端不是一致请求数据,而是监听数据提供者,推送的方式。设计一:对生产者监听做好消息过滤。设计二:重要消息单线程运转。设计三:消息推送基于Socket实现,基于高性能异步事件的网络通信框架Netty。设计四:多线程。设计五:设计优先级保障重要的主题。设计六:缓存

6.3.2 稳定性

发布系统

  1. 元数据隔离。三个环境:日常环境、预发环境和线上环境,与之对应三套元数据,每个环境只会访问对应的元数据。要在预发环境测试后上线。
  2. 隔离划分。 需要一:资源划分,确定最小隔离单位,隔离的力度控制在逻辑表层面。需要二:资源独占,修改时禁止其他用户改动。需要三:增量更新,同步用户修改的部分

隔离

  1. 机房隔离。双机房容灾,保障内部调用优先
  2. 分组隔离。调用者的优先级分层,明确服务对象和保障等级。动态调整规则

安全限制

  1. 返回最大记录数。强制LIMIT限制
  2. 必传字段。逻辑表配置主键
  3. 超时时间。超时查询能终止并释放资源

监控

  1. 调用日志采集。基础信息(调用时间、接口名),调用者信息(名称、IP地址),调用信息(调用指标,筛选条件),性能指标(响应时间、是否走缓存),错误信息(出错原因、类型)
  2. 调用监控。性能趋势图(总体QPS趋势图、响应时长区间分布),零调用统计,慢SQL查找,错误排查

限流和降级

都是为了不再消耗系统资源

  1. 限流。应用内的QPS保护,超出阈值后续的请求立即失败返回,不再继续处理。
  2. 降级。方法一:限流措施,QPS为0对应所有访问全部立即失败。方法二:修改元数据,存在为你的资源置为失效状态。

大数据之路—— 数据服务相关推荐

  1. 大数据之路—— 数据整合和管理体系

    九.数据模型篇-- 数据整合和管理体系 9.1 体系架构图 9.2 名词术语 9.3 指标体系 9.4 模型设计 9.4.1 基本原则 9.5 模型实施 大数据建设方法论的核心:从业务架构设计到模型设 ...

  2. 万字总结阿里大数据之路-数据技术篇(建议收藏)

    目录 一.日志采集 1.1 浏览器的页面日志采集 1.2 无线客户端的日志采集 1.3 日志采集的挑战案例 二.数据同步 2.1 数据同步基础 2.2 数据同步策略 2.2.1 批量数据同步 2.2. ...

  3. 大数据之路——数据同步

    三.数据技术篇-- 数据同步 3.1 数据同步基础 @ 3.1.1 直连同步 3.1.2 数据文件同步 3.1.3 数据库日志解析同步 3.2 数据仓库同步方式 3.2.1 批量数据同步 3.2.2 ...

  4. 阿里巴巴大数据之路——数据模型篇

    阿里巴巴大数据之路--数据模型篇 一.概述 1.什么是数据模型? 数据模型就是数据的组织和存储方法.主要关注的是从业务.数据存取和使用角度合理存储数据. 2.典型数据仓库建模方法论 ER模型 纬度模型 ...

  5. 大数据之路:阿里巴巴大数据实践,附339页PPT下载

    7份关于大数据的资料都整理好了,需要的自取,获取方式:转发+私信我回复:大数据 1.<大数据之路:阿里巴巴大数据实践> 2014年,马云提出,"人类正从IT时代走向DT时代&qu ...

  6. 品《阿里巴巴大数据实践-大数据之路》一书(上)

    7月有人推荐阿里巴巴刚出的这本书<阿里巴巴大数据实践-大数据之路>,到亚马逊一看才是预售状态,拍下直到8月才拿到. 翻看目录一看,欢喜的很,正好出差两天就带在身边,由于在机场滞留超过12个 ...

  7. 阿里大数据之路 总述

    大数据之路 一.总述 1. 数据采集 2. 数据计算 3. 数据服务 4. 数据应用 一.总述 数据有序.有结构地分类和存储,从而产生价值. ​ 实时:数据量大,要实时.准确 ​ 离线:采集.存储.计 ...

  8. 淘宝补单可以补金币数据吗?大神导航,一个神奇的网站,从此开启大神之路!

    不看你一定会后悔! 大神导航,一个神奇的网站,从此开启大神之路! 轻松导航,不仅有最新资讯,还有最近使用记录.常用推荐,方便用户使用!图标精美,良心精美.简易搜索,功能齐全,免费高质量素材任意挑选! ...

  9. 《大数据之路:阿里巴巴大数据实践》-第3篇 数据管理篇 -第15章 数据质量

    <大数据之路:阿里巴巴大数据实践>系列丛书  第1章 总述 第1篇 数据技术篇  第2章 日志釆集  第3章 数据同步  第4章 离线数据开发  第5章 实时技术  第6章 数据服务  第 ...

  10. 淘宝走过的大数据之路

    回顾丨13年来,淘宝走过的大数据之路 来源:CSDN大数据 时间:2016-11-07 10:19:15 作者: - 淘宝大数据之路 - 2003年至今淘宝网从零开始飞速发展,走过了13个年头,支撑淘 ...

最新文章

  1. 静态库与动态库详细剖析
  2. format函数使用matlab,Matlab基本函数-format函数
  3. html让空间高度跟随父级,CSS子元素跟父元素的高度一致的实现方法
  4. mysql路径猜解_猜解数据库(MYSQL)信息
  5. 无法打开登录所请求的数据库 sa。登录失败。 用户 sa 登录失败。
  6. Win9x 与 WinME 磁盘共享密码破解实战
  7. 官宣 | 千呼万唤,Apache Flink 1.11.0 正式发布啦!(内含福利)
  8. Matlab Astar算法简单对比分析
  9. @JoinColumn 与mappedBy
  10. 简单用Python+OpenCv实现AI人脸识别--(4)-训练人脸识别模型
  11. [AS3.0.1]蓝牙的基本使用,搜索和配对
  12. JS敏感信息泄露:不容忽视的WEB漏洞
  13. xlsx模块 前端_node模块之xlsx使用
  14. 相对路径遍历Relative Path Traversal
  15. cvpr论文什么级别(cvpr论文什么级别,有奖金吗)
  16. Java网络编程与NIO详解14:Tomcat 常见面试题汇总
  17. 运行docker run显示is already in use by container
  18. Android之MVP模式
  19. 椭圆曲线:超级完整的椭圆曲线学习记录
  20. C语言递归函数——汉诺塔问题笔记

热门文章

  1. 小米11青春版 MIUI12安装谷歌条件GMS点击登录没反应的解决办法
  2. java对象转map_java中实现map与对象相互转换的几种实现
  3. matlab fft 与fftshift的理解
  4. 计算机二级excel中mid的用法,Excel中怎么使用Mid函数
  5. 知识图谱构建流程及算法
  6. 微信小程序开发工具格式化代码快捷键以及更改快捷键
  7. 天猫国际2018年续签规则升级
  8. 【PMP】PMBOK 笔记 第11章 项目风险管理
  9. java面试之Servlet/JSP面试题
  10. oracle卸载报错,oracle卸载