571
社区成员
发帖
与我相关
我的任务
分享大数据时代,为了更加细致的分析问题,提高精细化运营能力,生成更多的价值,各个公司都在尽可能的收集数据以供分析,并针对这些数据建立了一套收集-过滤-处理-存储体系。
由于有些数据的时效性较强,必须在规定的时间内完成分析才能发挥价值,因此实时性处理链路应运而生,它要求在规定的时间内完成需要进行的操作。但在短时间内对大量数据进行处理并不是一件简单的事情,相比对时间要求不高的离线存储,有更多的因素会对数据处理过程产生干扰,导致数据被错误处理或者没有按时处理,数据也就失去了价值甚至产生负价值。
而数据的处理过程往往很长很复杂,需要经过网络传输、跨越多个服务器、被不同组件处理,数据的输出结果往往难以预期,很难得知数据链路输出的结果是否正确。所以实时处理链路急需一种行之有效的方法来判断有多少数据被正确处理、发生错误处理的原因等信息,以供人们监控链路是否正常运行以及对数据链路进行优化。
实时处理:数据出现后,在分钟/秒级别内被处理完成
离线处理:数据出现后,在天级别内被处理完成
链路:由多个组件组成的、依次对数据进行处理的流水线。一般包括数据采集器、数据过滤器、数据处理器、数据存储器等。
链路的数据质量:数据从输入链路到最终输出这一过程中,是否按预期的逻辑被及时准确处理。
数据丢失:数据没有按时到达指定组件,可能超出规定时间后才到达,也可能永远不会到达。
针对数据处理链路的常见问题设计一套评价模型,包括评价方法和评价指标,然后按照这套模型设计出一个应用程序,在大数据实时处理链路对数据进行加工时,监控数据的处理过程和结果,发现错误处理及时告警,以确保输出数据的可靠性。
4.1 检测链路问题并自动报警
数据处理链路将自身运行过程中产生的数据上报给评价系统,评价系统处理数据进行评价产生结果呈现给管理员,如果有问题,及时发出警告。

4.2 查看记录
管理员可以查看历史数据,历史数据以可视化图表的形式呈现。如实时展示链路的运行情况,是否有错误发生;展示过去一周/月/季度发生的问题,同其他模型进行对比等。
![]()

4.3操作链路
管理员可以对监控的链路进行操作,包括对链路的添加、更改组件和删除三种功能
添加:添加并监控一条新链路,需要登记该链路的组件名、组件类型等。
更改:修改链路的某些信息,或增删其中的某些组件。
删除:删除该链路,放弃对它的监控。

4.4 参数设置
用户可以对系统的参数进行个性化设置,如设置报警方式:通过邮件、短信、电话等;
设置报警级别,如警告、异常、严重等,以及登录注册等功能。
![]()

根据以上需求分析和相关领域知识,可以得到如下数据模型:
5.1 组件属性有id、类型、功能、输入数据和输出数据等属性,有获取参数,检查输出数据是否正确等函数
组件聚合成链路,链路有id、名、功能、组件数量等参数,有获取参数、增删改组件等功能。

5.2 监控器用于监控链路,根据链路的功能进行特定的检查。
监控器与链路是关联关系,监控器可以从已有的监控器模板派生而出,一个实例化的监控器对应一条链路,包括id、监控类型、监控方法、监控计数、时间等属性和获取参数、核验等方法。

5.3 不同的用户可以设置不同的偏好信息,组成最终的监控规则。

由此数据库中存储的的静态表格为:
5.4 用户信息表
| 字段名 | 类型 | 描述 |
| 账户 | str | 用户名 |
| 密码 | str | 用户密码 |
| 链路表id | int | 该用户名下的链路表 |
| 报警级别 | int | 警告、异常、错误 |
| 报警路径 | str | 邮箱、电话、短信 |
| 监控器id | int | 用户已经定义的监控器模板 |
5.5 链路表
| 字段名 | 类型 | 描述 |
| 链路id | int | 唯一标识 |
| 组件表id | int | 链路包含的组件表 |
| 监控器表id | int | 链路包含的监控器表 |
| 链路功能 | Str | 描述链路功能 |
| 错误记录 | Str | 错误记录 |
5.6 监控器表
| 字段名 | 类型 | 描述 |
| 监控器id | int | 唯一标识 |
| 监控类型 | str | 描述可以监控哪种组件 |
| 功能 | str | 监控方法 |
| 输入数据 | str | 对输入数据的要求 |
| 输出数据 | str |
对输出数据的要求
|
项目有四个主要部分:
组件模块和监控器模块逻辑上也属于链路的一部分。

数据库
各种功能都要和数据库进行交互。如登录需要查询数据库中的用户账户和密码,权限管理需要查询数据库中该用户的权限,告警需要在数据库中存储告警方式(手机、短信、邮件)、地址和告警级别等。
因此数据库的设计应该采用单例模式,只能产生一个实例化的对象,防止多个对象同时操作数据库引起错误。
登录、权限管理、告警
使用命令模式,将登录请求、权限的修改请求、告警参数的修改请求封装为一个对象,传递给数据库的实例对象,交给数据库的实例对象进行数据的增加、查询、改动和删除。
同时使用交互者模式,由控制器决定由哪个对象来处理这些请求,控制器根据请求参数的不同分配不同的对象。
链路信息
由于一条链路包括多个组件和监控器,因此可以采用建造者模式,将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
链路本身是一个对象,其成员包含了许多其他对象,即组件和监控器,并且有固定的顺序和位置信息。使用者可以先不创建链路,而是先创建组件和监控器的对象,然后再根据这些对象创建链路对象。
组件信息、监控信息
由于组件和监控器有很多种结构,实例化后的对象也不可能完全一致,因此可以使用外观模式,为复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。可以设计一个访问组件和监控器的通用接口,用户可以通过这个接口控制组件和监控器。
作者:280