处理模式
模式名称 | 常见场景 | 常见框架 |
---|
批处理 | 夜间几个小时,无人值守 | hive spark datax |
流处理 | 7*24H一直运行,无人值守 | maxwell, flink, flume, kafka |
即席处理 | 人机交互 | 接口访问 web页面 |
数据治理的意义
- 数据质量低:数据错误,不准确或不一致,导致决策依据不可靠
- 数据孤岛:各部门和系统之间的数据无法有效整合,形成数据孤岛,降低数据的利用价值和沟通效率(数据负责人走了之后无人可以看懂)。
- 数据安全风险:缺乏有效的数据保护措施
- 规范性问题:在数据使用、存储和传输过程中,可能无法满足规范性要求,增加数据的理解难度,降低利用率
- 计算存储的冗余
数据治理的方案
1.数据中台
提供一个大而全的平台,将数据建模、数据开发、数据运营、指标可视化…都放到一个平台中。优点是好用,缺点是开发周期长,租用费用贵。
2.数据治理考评
通过设定各种治理项指标,对指标进行考核评分排名,结果导向倒逼开发人员不断改进数据治理的各项问题。优点:成本低,直击问题本身。缺点:缺少工具。
主要指标:
- 规范
- 存储
- 计算
- 长期五产出
- 长期无访问
- 计算中有错误
- 简单加工:sql语句中没有任何join、group by、union函数的复杂计算
- 计算中存在数据倾斜
- 质量
- 安全
架构
数据来源:
- hive元数据:字段名、表名、备注
- hdfs元数据:访问权限、访问写入时间、数据量大小
- dolphinscheduler调度器:sql定义,运行时间
- spark的运行日志,分析数据倾斜
- 手工录入信息:owner, 安全级别,生命周期
Web服务
web框架前世今生
- 各类老框架:php \ perl \ asp \ c#(.net 必须跑在window系统)
- ssh框架 = struts(1,2) + spring + hibernate
- ssm框架 = springmvc + spring + mybatis(ibatis)
- springboot = ssm的基础上包装的便于使用的框架
- 特点
- 节省大量配置,约定大于配置
- 内置web服务容器,打包部署服务非常方便
- 非常方便整合各种第三方框架,starter机制对接
- 和java学习时的不同点
- main函数只是启动程序服务器,业务逻辑在其他函数中
- 程序逻辑是MVC三层架构的
为什么要分层?
- 提高代码的复用,减少重复代码的反复编写
- 结构清晰,方便定位问题的出错位置
使用规范:
- 尽量逐层调用
- 控制层:每个类一般代表一种业务请求,每个方法代表某个特定的业务请求
- 服务层:每个类代表一种业务操作
- 数据层:每个类代表一张表,每个方法代表对该表的一跳SQL语句
SpringBoot项目特点
- 本质上还是一个maven的java项目
- 预加入了一些依赖
- 多了一个配置文件application.properties
- 多了一个启动程序Application, 主方法,直接运行即可
参数
- 路径查找使用@RequestMapping(“/”), 用来标记类或方法
- 定义参数的方法:
@RequestParam("name")
来定义参数,使用@RequestParam("name")
来获取参数。一般用于查询,赋予多个条件@RequestMapping("/info/{id}")
, 使用@PathVariable("id")
放在函数列表中来获取参数。用于依靠一个唯一值参数进行查询
- 请求方式request method
- get查询: 实际上的读操作,@GetMapping
- post写入,非幂等性写入,实际上的写操作,@PostMapping
- put写入,幂等性写入,基本上不用
- delete删除,偶尔会用
- 请求体参数:发送时使用postman工具将数据写出Json格式放入到请求体中,使用
@RequestBody
来获取post发送过来的数据。 - 如果需要把键值对参数封装到一个bean对象中,可以在参数列表中什么注解都不加,spring boot会帮你自动封装数据信息到bean对象中。
- 状态码
- 1xx:访问中
- 2xx:访问成功
- 3xx:重定向,跳转
- 4xx:
- 400: bad request 参数个数或类型不匹配
- 403:禁止访问,权限问题或IP被禁
- 404:not found 路径资源不匹配
- 405:method not allowed 请求方式不匹配
- 5xx:
- 500: 服务器内部错误,查看java console异常
- xxx: 自定义状态码
容器与组件
Spring 容器启动时:
- 以单例饿汉方式的方式创建所有组件,启动服务器时就创建,常见的组件为@RestController, @Service, @Mapper, @Component
- 会扫描所有的@Autowired,会自动装配所有组件的引用