我们按照ADMEMS方法论的理论指导,结合《Pandora数据工厂之多租户项目介绍》进行预架构阶段的架构分析过程实践,找到关键功能性需求和非功能性需求(关键质量及约束)等。
一、功能需求
1. 采用“职责协作链”来梳理关键功能
模拟不同类型的用户如何通过系统实现业务需求的过程,借助系统化的思维模拟跟踪各环节,梳理清晰后即可得出清晰的职责链,这样便可以找出各链上的关键功能点,这些关键点即是关键功能。
2. 功能列表
3. 关键性需求
“功能列表≠全部需求”,架构师为了全方位、多角度地把握需求,应当重视并应用“需求结构化”。下表为运用ADMEMS矩阵对Pandora数据工厂多租户系统的需求进行结构化梳理的结果。
| 功能 | 质量 | 约束 |
业务需求 | 业务目标、和业务愿景 |
|
|
|
|
| |
|
|
| |
|
|
| |
用户级需求 | 用户 |
|
|
|
|
| |
|
|
| |
|
|
| |
开发级需求 |
|
|
|
三、质量属性
1. 开发期质量
\ | 要求 | 说明 |
可扩展性 | 高 |
|
可重用性 | 低 |
|
可测试性 | 中 |
|
易理解性 | 低 |
|
可维护性 | 高 |
|
可移植性 | 高 |
|
2. 运行期质量
\ | 要求 | 说明 |
性能 | 高 | 数据的高吞吐量 |
安全性 | 高 | 数据安全性 |
易用性 | 中 |
|
持续可用性 | 高 | 使用生命周期长 |
可伸缩性 | 高 |
|
互操作性 | 低 |
|
可靠性 | 高 |
|
鲁棒性 | 高 |
|
四、系统约束
约束类型 | 具体说明 |
业务环境约束 |
|
使用环境约束 |
|
开发环境约束 |
|
技术环境约束 |
|
五、确定关键功能、关键质量属性及关键约束
1. 确定业务级功能、质量和约束
| 功能 | 质量 | 约束 |
业务需求 | 业务目标、和业务愿景 |
|
|
|
|
| |
|
|
| |
|
|
| |
|
|
|
|
|
|
|
|
2. 确定用户级功能、质量和约束
| 功能 | 质量 | 约束 |
|
|
|
|
用户级需求 | 用户 |
|
|
|
|
| |
|
|
| |
|
|
| |
|
|
|
|
3. 确定开发级功能、质量和约束
| 功能 | 质量 | 约束 |
|
|
|
|
|
|
|
|
开发级需求 |
|
|
|
4. 将约束衍生为质量属性及功能、将质量属性衍生为功能
| 功能 | 质量 | 约束 |
业务需求 | 业务目标、和业务愿景 |
|
|
|
|
| |
|
|
| |
|
|
| |
用户
|
|
|
|
|
|
|
|
5. 将关键约束衍生为功能
6. 根据功能提炼出非功能性需求
7. 形成统一的二维表(形成关键结果)
| 功能 | 质量 | 约束 |
业务级需求 | 业务目标、和业务愿景
|
|
|
用户级需求 | 用户
管理员
|
|
|
开发级需求 |
|
|
|
六、关键性技术
1. 资源池
Hadoop资源池(pool),或者作业池。 每个pool里有一定量的资源(管理员配置),每个用户属于某个pool,其提交的作业可使用这个pool中的资源。资源的分配主要是依据CPU虚拟核数和内存量。
2. 公平调度
是一种赋予作业(job)资源的方法,它的目的是让所有的作业随着时间的推移,都能平均的获取等同的共享资源。当单独一个作业在运行时,它将使用整个集群。当有其它作业被提交上来时,系统会将任务(task)空闲时间片(slot)赋给这些新的作业,以使得每一个作业都大概获取到等量的CPU时间。
3、Kerberos
Kerberos可以将认证的密钥在集群部署时事先放到可靠的节点上。集群运行时,集群内的节点使用密钥得到认证。只有被认证过节点才能正常使用。企图冒充的节点由于没有事先得到的密钥信息,无法与集群内部的节点通信。
4、Sentry
Sentry是一个Hadoop的授权模块,为了对正确的用户和应用程序提供精确的访问级别,包括一个核心授权提供者和一个结合层。可以实现对hive、hbase细粒度级、基于角色的授权。
七、技术分析
目前大数据生态里,各框架已经实现的多租户的情况:
框架 | 现状 | 说明 |
Hadoop yarn | 计算资源(CPU和内存)已经具备多租户 |
|
hbase | 命名空间和表授权 |
|
hdfs | ACL控制和配额 |
|
hive | 库和表授权 |
|