系统软件架构

系统软件架构,第1张

一、系统总体架构

根据用户需求完成航空物探数据库系统概要设计,确定软件的总体功能,说明软件的结构,定义软件的接口,系统运行环境和安全策略。在系统整体构架和需求分析的基础上构建了整个系统开发的总体架构(图4-1)。

图4-1 航空物探信息系统架构

二、系统软件结构

本信息系统采用C/S架构(图4-2),系统通过局域网和航空物探资料数据库服务器(包括Oracle数据库服务器和ArcSDE空间数据库服务器)连接。数据库采用大型关系型数据库Oracle 10g作为其后台数据库,通过ArcSDE对空间数据及其属性数据进行管理。使用Microsft Visual StudioNET 2003中的C#语言和ESRI的Engine组件来开发信息系统。

三、系统设计

根据航空物探的业务需求、数据安全性、易开发、易维护等要求,将信息系统软件分成数据采集软件(C/S)、应用软件(C/S)两部分(图4-3)。

数据采集软件用于航空物探数据入库和入库数据质量控制。应用软件主要用于提供中心内部的数据查询统计、数据加工处理等服务。两个软件的具体功能在后继的第六、第七章中详细论述。

图4-2 航空物探信息系统软件结构

图4-3 信息系统软件关系图

大数据架构师岗位的主要职责概述 篇1

职责:

1、负责大数据平台及BI系统框架设计、规划、技术选型,架构设计并完成系统基础服务的开发;

2、负责海量埋点规则、SDK标准化、埋点数据采集、处理及存储,业务数据分布存储、流式/实时计算等应用层架构搭建及核心代码实现;

3、开发大数据平台的核心代码,项目敏捷开发流程管理,完成系统调试、集成与实施,对每个项目周期技术难题的解决,保证大数据产品的上线运行;

4、负责大数据平台的架构优化,代码评审,并根据业务需求持续优化数据架构,保证产品的可靠性、稳定性;

5、指导开发人员完成数据模型规划建设,分析模型构建及分析呈现,分享技术经验;

6、有效制定各种突发性研发技术故障的应对预案,有清晰的隐患意识;

7、深入研究大数据相关技术和产品,跟进业界先进技术;

任职要求

1、统计学、应用数学或计算机相关专业大学本科以上学历;

2、熟悉互联网移动端埋点方法(点击和浏览等行为埋点),无埋点方案等,有埋点SDK独立开发经验者优选;

3、熟悉Hadoop,MR/MapReduce,Hdfs,Hbase,Redis,Storm,Python,zookeeper,kafka,flinkHadoop,hive,mahout,flume,ElasticSearch,KafkaPython等,具备实际项目设计及开发经验;

4、熟悉数据采集、数据清洗、分析和建模工作相关技术细节及流程

5、熟悉Liunx/Unix *** 作系统,能熟练使用shell/perl等脚本语言,熟练掌握java/python/go/C++中一种或多种编程语言

6、具备一定的算法能力,了解机器学习/深度学习算法工具使用,有主流大数据计算组件开发和使用经验者优先

7、熟悉大数据可视化工具Tableau/echarts

8、具有较强的执行力,高度的责任感、很强的学习、沟通能力,能够在高压下高效工作;

大数据架构师岗位的主要职责概述 篇2

职责:

根据大数据业务需求,设计大数据方案及架构,实现相关功能;

搭建和维护大数据集群,保证集群规模持续、稳定、高效平稳运行;

负责大数据业务的设计和指导具体开发工作;

负责公司产品研发过程中的数据及存储设计;

针对数据分析工作,能够完成和指导负责业务数据建模。

职位要求:

计算机、自动化或相关专业(如统计学、数学)本科以上学历,3年以上大数据处理相关工作经验;

精通大数据主流框架(如Hadoop、hive、Spark等);

熟悉MySQL、NoSQL(MongoDB、Redis)等主流数据库,以及rabbit MQ等队列技术;

熟悉hadoop/spark生态的原理、特性且有实战开发经验;

熟悉常用的数据挖掘算法优先。

大数据架构师岗位的主要职责概述 篇3

职责:

1、大数据平台架构规划与设计;

2、负责大数据平台技术框架的选型与技术难点攻关;

3、能够独立进行行业大数据应用的整体技术框架、业务框架和系统架构设计和调优等工作,根据系统的业务需求,能够指导开发团队完成实施工作;

4、负责数据基础架构和数据处理体系的升级和优化,不断提升系统的稳定性和效率,为相关的业务提供大数据底层平台的支持和保证;

5、培养和建立大数据团队,对团队进行技术指导。

任职要求:

1、计算机相关专业的背景专业一类院校毕业本科、硕士学位,8年(硕士5年)以上工作经验(至少拥有3年以上大数据项目或产品架构经验);

2、精通Java,J2EE相关技术,精通常见开源框架的架构,精通关系数据库系统(Oracle MySQL等)和noSQL数据存储系统的原理和架构;

3、精通SQL和Mapreduce、Spark处理方法;

4、精通大数据系统架构,熟悉业界数据仓库建模方法及新的建模方法的发展,有DW,BI架构体系的专项建设经验;

5、对大数据体系有深入认识,熟悉Kafka、Hadoop、Hive、HBase、Spark、Storm、greenplum、ES、Redis等大数据技术,并能设计相关数据模型;

6、很强的学习、分析和解决问题能力,可以迅速掌握业务逻辑并转化为技术方案,能独立撰写项目解决方案、项目技术文档;

7、具有较强的内外沟通能力,良好的团队意识和协作精神;

8、机器学习技术、数据挖掘、人工智能经验丰富者优先考虑;

9、具有能源电力行业工作经验者优先。

大数据架构师岗位的主要职责概述 篇4

职责:

1参与公司数据平台系统规划和架构工作,主导系统的架构设计和项目实施,确保项目质量和关键性能指标达成;

2统筹和推进制造工厂内部数据系统的构建,搭建不同来源数据之间的逻辑关系,能够为公司运营诊断、运营效率提升提供数据支持;

3负责数据系统需求对接、各信息化系统数据对接、软件供应商管理工作

5根据现状制定总体的数据治理方案及数据体系建立,包括数据采集、接入、分类、开发标准和规范,制定全链路数据治理方案;深入挖掘公司数据业务,超强的数据业务感知力,挖掘数据价值,推动数据变现场景的落地,为决策及业务赋能;

6定义不同的数据应用场景,推动公司的数据可视化工作,提升公司数据分析效率和数据价值转化。

任职要求:

1本科以上学历,8年以上软件行业从业经验,5年以上大数据架构设计经验,熟悉BI平台、大数据系统相关技术架构及技术标准;

2熟悉数据仓库、熟悉数据集市,了解数据挖掘、数据抽取、数据清洗、数据建模相关技术;

3熟悉大数据相关技术:Hadoop、Hive、Hbase、Storm、Flink、Spark、Kafka、RabbitMQ;

4熟悉制造企业信息化系统及相关数据库技术;

5具备大数据平台、计算存储平台、可视化开发平台经验,具有制造企业大数据系统项目开发或实施经验优先;

6对数据敏感,具备优秀的业务需求分析和报告展示能力,具备制造企业数据分析和数据洞察、大数据系统的架构设计能力,了解主流的报表工具或新兴的前端报表工具;

7有较强的沟通和组织协调能力,具备结果导向思维,有相关项目管理经验优先。

大数据架构师岗位的主要职责概述 篇5

职责:

1负责产品级业务系统架构(如业务数据对象识别,数据实体、数据属性分析,数据标准、端到端数据流等)的设计与优化。协助推动跨领域重大数据问题的分析、定位、解决方案设计,从架构设计上保障系统高性能、高可用性、高安全性、高时效性、分布式扩展性,并对系统质量负责。

2负责云数据平台的架构设计和数据处理体系的优化,推动云数据平台建设和持续升级,并制定云数据平台调用约束和规范。

3结合行业应用的需求负责数据流各环节上的方案选型,主导云数据平台建设,参与核心代码编写、审查;数据的统计逻辑回归算法、实时交互分析;数据可视化方案等等的选型、部署、集成融合等等。

4对云数据平台的关注业内技术动态,持续推动平台技术架构升级,以满足公司不同阶段的数据需求。

任职要求:

1熟悉云计算基础平台,包括Linux(Ubuntu/CentOS)和KVM、OpenStack/K8S等基础环境,熟悉控制、计算、存储和网络;

2掌握大型分布式系统的技术栈,如:CDN、负载均衡、服务化/异步化、分布式缓存、NoSQL、数据库垂直及水平扩容;熟悉大数据应用端到端的相关高性能产品。

3精通Java,Python,Shell编程语言,精通SQL、NoSQL等数据库增删改查的 *** 作优化;

4PB级别实战数据平台和生产环境的实施、开发和管理经验;

5熟悉Docker等容器的编排封装,熟悉微服务的开发和日常调度;

6计算机、软件、电子信息及通信等相关专业本科以上学历,5年以上软件工程开发经验,2年以上大数据架构师工作经验。

大数据架构师岗位的主要职责概述 篇6

职责描述:

1、负责集团大数据资产库的技术架构、核心设计方案,并推动落地;

2、带领大数据技术团队实现各项数据接入、数据挖掘分析及数据可视化;

3、新技术预研,解决团队技术难题。

任职要求:

1、在技术领域有5年以上相关经验,3年以上的架构设计或产品经理经验;

2、具有2年以上大数据产品和数据分析相关项目经验;

3、精通大数据分布式系统(hadoop、spark、hive等)的架构原理、技术设计;精通linux系统;精通一门主流编程语言,java优先。

大数据架构师岗位的主要职责概述 篇7

岗位职责:

1、基于公司大数据基础和数据资产积累,负责大数据应用整体技术架构的设计、优化,建设大数据能力开放平台;负责大数据应用产品的架构设计、技术把控工作。

2、负责制定大数据应用系统的数据安全管控体系和数据使用规范。

3、作为大数据技术方案到产品实现的技术负责人,负责关键技术点攻坚工作,负责内部技术推广、培训及知识转移工作。

4、负责大数据系统研发项目任务规划、整体进度、风险把控,有效协同团队成员并组织跨团队技术协作,保证项目质量与进度。

5、负责提升产品技术团队的技术影响力,针对新人、普通开发人员进行有效辅导,帮助其快速成长。

任职资格:

1、计算机、数学或相关专业本科以上学历,5—20xx年工作经验,具有大型系统的技术架构应用架构数据架构相关的实践工作经验。

2、有分布式系统分析及架构设计经验,熟悉基于计算集群的软件系统架构和实施经验。

3、掌握Hadoop/Spark/Storm生态圈的主流技术及产品,深入了解Hadoop/Spark/Storm生态圈产品的工作原理及应用场景。

4、掌握Mysql/Oracle等常用关系型数据库,能够对SQL进行优化。

5、熟悉分布式系统基础设施中常用的技术,如缓存(Varnish、Memcache、Redis)、消息中间件(Rabbit MQ、Active MQ、Kafka、NSQ)等;有实践经验者优先。

6、熟悉Linux,Java基础扎实,至少3—5年以上Java应用开发经验,熟悉常用的设计模式和开源框架。

大数据架构师岗位的主要职责概述 篇8

岗位职责:

1、负责公司大数据平台架构的技术选型和技术难点攻关工作;

2、依据行业数据现状和客户需求,完成行业大数据的特定技术方案设计与撰写;

3、负责研究跟进大数据架构领域新兴技术并在公司内部进行分享;

4、参与公司大数据项目的技术交流、解决方案定制以及项目的招投标工作;

5、参与公司大数据项目前期的架构设计工作;

任职要求:

1、计算机及相关专业本科以上,5年以上数据类项目(数据仓库、商务智能)实施经验,至少2年以上大数据架构设计和开发经验,至少主导过一个大数据平台项目架构设计;

2、精通大数据生态圈的技术,包括但不限于MapReduce、Spark、Hadoop、Kafka、Mongodb、Redis、Flume、Storm、Hbase、Hive,具备数据统计查询性能优化能力。熟悉星环大数据产品线及有过产品项目实施经验者优先;

3、优秀的方案撰写能力,思路清晰,逻辑思维强,能够根据业务需求设计合理的解决方案;

4、精通ORACLE、DB2、mySql等主流关系型数据库,熟悉数据仓库建设思路和数据分层架构思想;

5。熟练掌握java、R、python等1—2门数据挖掘开发语言;

6。熟悉云服务平台及微服务相关架构思想和技术路线,熟悉阿里云或腾讯云产品者优先;

7、有烟草或制造行业大数据解决方案售前经验者优先;

8、能适应售前支持和项目实施需要的短期出差;

大数据架构师岗位的主要职责概述 篇9

岗位职责:

1、负责相关开源系统/组件的性能、稳定性、可靠性等方面的深度优化;

2、负责解决项目上线后生产环境的各种实际问题,保障大数据平台在生产上的安全、平稳运行;

3、推动优化跨部门的业务流程,参与业务部门的技术方案设计、评审、指导;

4、负责技术团队人员培训、人员成长指导。

5、应项目要求本月办公地址在锦江区金石路316号新希望中鼎国际办公,月底项目结束后在总部公司办公

任职要求:

1、熟悉linux、JVM底层原理,能作为技术担当,解决核心技术问题;

2、3年以上大数据平台项目架构或开发经验,对大数据生态技术体系有全面了解,如Yarn、Spark、HBase、Hive、Elasticsearch、Kafka、PrestoDB、Phoenix等;

3、掌握git、maven、gradle、junit等工具和实践,注重文档管理、注重工程规范优先;

4、熟悉Java后台开发体系,具备微服务架构的项目实施经验,有Dubbo/Spring cloud微服务架构设计经验优先;

5、性格开朗、善于沟通,有极强的技术敏感性和自我驱动学习能力,注重团队意识。

大数据架构师岗位的主要职责概述 篇10

职责描述:

1、负责大数据平台框架的规划设计、搭建、优化和运维;

2、负责架构持续优化及系统关键模块的设计开发,协助团队解决开发过程中的技术难题;

3、负责大数据相关新技术的调研,关注大数据技术发展趋势、研究开源技术、将新技术应用到大数据平台,推动数据平台发展;

4、负责数据平台开发规范制定,数据建模及核心框架开发。

任职要求:

1、计算机、数学等专业本科及以上学历;

2、具有5年及以上大数据相关工作经验;

3、具有扎实的大数据和数据仓库的理论功底,负责过大数据平台或数据仓库设计;

4、基于hadoop的大数据体系有深入认识,具备相关产品(hadoop、hive、hbase、spark、storm、 flume、kafka、es等)项目应用研发经验,有hadoop集群搭建和管理经验;

5、熟悉传统数据仓库数据建模,etl架构和开发流程,使用过kettle、talend、informatic等至少一种工具;

6、自驱力强、优秀的团队意识和沟通能力,对新技术有好奇心,学习能力和主动性强,有钻研精神,充满激情,乐于接受挑战;

数据库优化是系统工程,性能的提升靠整体。本课程将面面俱到的讲解提升数据库性能的各种因素,让你在最短的时间从小白到资深,将数据库整体架构了然于胸

第1章 实例和故事 试看7 节 | 50分钟

决定电商11大促成败的各个关键因素。

收起列表

视频:1-1 什么决定了电商双11大促的成败 (04:04)试看

视频:1-2 在双11大促中的数据库服务器 (06:03)

视频:1-3 在大促中什么影响了数据库性能 (07:55)

视频:1-4 大表带来的问题 (14:13)

视频:1-5 大事务带来的问题 (17:27)

作业:1-6 讨论题在日常工作中如何应对高并发大数据量对数据库性能挑战

作业:1-7 讨论题在MySQL中事务的作用是什么?

第2章 什么影响了MySQL性能 试看30 节 | 210分钟

详细介绍影响性能各个因素,包括硬件、 *** 作系统等等。

收起列表

视频:2-1 影响性能的几个方面 (04:08)试看

视频:2-2 CPU资源和可用内存大小 (10:54)

视频:2-3 磁盘的配置和选择 (04:44)

视频:2-4 使用RAID增加传统机器硬盘的性能 (11:30)

视频:2-5 使用固态存储SSD或PCIe卡 (08:35)

视频:2-6 使用网络存储SAN和NAS (07:16)

视频:2-7 总结:服务器硬件对性能的影响 (03:27)

视频:2-8 *** 作系统对性能的影响-MySQL适合的 *** 作系统 (03:50)

视频:2-9 CentOS系统参数优化 (11:43)

视频:2-10 文件系统对性能的影响 (03:29)

视频:2-11 MySQL体系结构 (05:29)

视频:2-12 MySQL常用存储引擎之MyISAM (13:23)

视频:2-13 MySQL常用存储引擎之Innodb (10:44)

视频:2-14 Innodb存储引擎的特性(1) (15:24)

视频:2-15 Innodb存储引擎的特性(2) (08:44)

视频:2-16 MySQL常用存储引擎之CSV (09:19)

视频:2-17 MySQL常用存储引擎之Archive (06:08)

视频:2-18 MySQL常用存储引擎之Memory (10:40)

视频:2-19 MySQL常用存储引擎之Federated (11:21)

视频:2-20 如何选择存储引擎 (04:33)

视频:2-21 MySQL服务器参数介绍 (08:04)

视频:2-22 内存配置相关参数 (09:24)

视频:2-23 IO相关配置参数 (10:01)

视频:2-24 安全相关配置参数 (06:13)

视频:2-25 其它常用配置参数 (03:41)

视频:2-26 数据库设计对性能的影响 (04:36)

视频:2-27 总结 (01:32)

作业:2-28 讨论题你会如何配置公司的数据库服务器硬件?

作业:2-29 讨论题你认为对数据库性能影响最大的因素是什么

作业:2-30 讨论题做为电商的DBA,建议开发选哪种MySQL存储引擎

第3章 MySQL基准测试8 节 | 65分钟

了解基准测试,MySQL基准测试工具介绍及实例演示。

收起列表

视频:3-1 什么是基准测试 (02:20)

视频:3-2 如何进行基准测试 (09:00)

视频:3-3 基准测试演示实例 (11:18)

视频:3-4 Mysql基准测试工具之mysqlslap (13:30)

视频:3-5 Mysql基准测试工具之sysbench (11:07)

视频:3-6 sysbench基准测试演示实例 (17:11)

作业:3-7 讨论题MySQL基准测试是否可以体现出业务系统的真实性能

作业:3-8 实 *** 题参数不同取值对性能的影响

第4章 MySQL数据库结构优化14 节 | 85分钟

详细介绍数据库结构设计、范式和反范式设计、物理设计等等。

收起列表

视频:4-1 数据库结构优化介绍 (06:52)

视频:4-2 数据库结构设计 (14:49)

视频:4-3 需求分析及逻辑设计 (11:00)

视频:4-4 需求分析及逻辑设计-反范式化设计 (06:44)

视频:4-5 范式化设计和反范式化设计优缺点 (04:06)

视频:4-6 物理设计介绍 (05:17)

视频:4-7 物理设计-数据类型的选择 (18:59)

视频:4-8 物理设计-如何存储日期类型 (13:37)

视频:4-9 物理设计-总结 (02:37)

图文:4-10 说明MyISAM和Innodb存储引擎的5点不同

作业:4-11 讨论题判断表结构是否符合第三范式要求如不满足要如何修改

作业:4-12 实 *** 题请设计一个电商订单系统的数据库结构

作业:4-13 讨论题以下那个字段适合作为Innodb表的主建使用

作业:4-14 讨论题请为下表中的字段选择合适的数据类型

第5章 MySQL高可用架构设计 试看24 节 | 249分钟

详细介绍二进制日志及其对复制的影响、GTID的复制、MMM、MHA等等。

收起列表

视频:5-1 mysql复制功能介绍 (04:58)

视频:5-2 mysql二进制日志 (22:05)

视频:5-3 mysql二进制日志格式对复制的影响 (09:37)

视频:5-4 mysql复制工作方式 (03:08)

视频:5-5 基于日志点的复制 (20:06)

视频:5-6 基于GTID的复制 (22:32)

视频:5-7 MySQL复制拓扑 (13:58)

视频:5-8 MySQL复制性能优化 (09:23)

视频:5-9 MySQL复制常见问题处理 (08:31)

视频:5-10 什么是高可用架构 (14:09)

视频:5-11 MMM架构介绍 (08:09)

视频:5-12 MMM架构实例演示(上) (09:16)试看

视频:5-13 MMM架构实例演示(下) (18:55)

视频:5-14 MMM架构的优缺点 (08:01)

视频:5-15 MHA架构介绍 (10:02)

视频:5-16 MHA架构实例演示(1) (13:11)

视频:5-17 MHA架构实例演示(2) (16:54)

视频:5-18 MHA架构优缺点 (05:14)

视频:5-19 读写分离和负载均衡介绍 (11:42)

视频:5-20 MaxScale实例演示 (18:25)

作业:5-21 讨论题MySQL主从复制为什么会有延迟,延迟又是如何产生

作业:5-22 实 *** 题请为某互联网项目设计9999%MySQL架构

作业:5-23 讨论题如何给一个已经存在的主从复制集群新增一个从节点

作业:5-24 讨论题给你三台数据库服务器,你如何设计它的高可用架构

第6章 数据库索引优化8 节 | 65分钟

介绍BTree索引和Hash索引,详细介绍索引的优化策略等等。

收起列表

视频:6-1 Btree索引和Hash索引 (20:09)

视频:6-2 安装演示数据库 (01:19)

视频:6-3 索引优化策略(上) (17:33)

视频:6-4 索引优化策略(中) (13:02)

视频:6-5 索引优化策略(下) (12:30)

作业:6-6 讨论题一列上建立了索引,查询时就一定会用到这个索引吗

作业:6-7 讨论题在定义联合索引时为什么需要注意联合索引中的顺序

作业:6-8 实 *** 题SQL建立索引,你会考虑那些因素

第7章 SQL查询优化9 节 | 62分钟

详细介绍慢查询日志及示例演示,MySQL查询优化器介绍及特定SQL的查询优化等。

收起列表

视频:7-1 获取有性能问题SQL的三种方法 (05:14)

视频:7-2 慢查询日志介绍 (08:57)

视频:7-3 慢查询日志实例 (08:27)

视频:7-4 实时获取性能问题SQL (02:21)

视频:7-5 SQL的解析预处理及生成执行计划 (16:02)

视频:7-6 如何确定查询处理各个阶段所消耗的时间 (09:35)

视频:7-7 特定SQL的查询优化 (10:34)

作业:7-8 讨论题如何跟据需要对一个大表中的数据进行删除或更新

作业:7-9 讨论题如何获取需要优化的SQL查询

第8章 数据库的分库分表5 节 | 48分钟

详细介绍数据库分库分表的实现原理及演示案例等。

收起列表

视频:8-1 数据库分库分表的几种方式 (04:34)

视频:8-2 数据库分片前的准备 (13:53)

视频:8-3 数据库分片演示(上) (11:40)

视频:8-4 数据库分片演示(下) (17:02)

作业:8-5 讨论题对于大表来说我们一定要进行分库分表吗

第9章 数据库监控7 节 | 29分钟

介绍数据库可用性监控、性能监控、MySQL主从复制监控等

收起列表

视频:9-1 数据库监控介绍 (04:46)

视频:9-2 数据库可用性监控 (07:20)

视频:9-3 数据库性能监控 (09:39)

视频:9-4 MySQL主从复制监控 (06:16)

作业:9-5 讨论题QPS是否可以真实的反映出数据库的负载情况

作业:9-6 讨论题如何正确评估数据库的当前负载状况

作业:9-7 实 *** 题开发一个简单监控脚本,监控mySQL数据库阻塞情况

C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。。

B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过>

参考资料:

>

软件架构

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。

软件体系结构是构建计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。

软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难。特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征。

在“软件构架简介”中,David GArlan 和 Mary Shaw 认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。”[GS93]

但构架不仅是结构;IEEE Working Group on Architecture 把其定义为“系统在其环境中的最高层概念”[IEEE98]。构架还包括“符合”系统完整性、经济约束条件、审美需求和样式。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。

在 Rational Unified ProcESs 中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互。

从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟。一个软件架构师需要有广泛的软件理论知识和相应的经验来事实和管理软件产品的高级设计。软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象 *** 作、逻辑和流程。

是一般而言,软件系统的架构(ArchitECture)有两个要素:

·它是一个软件系统从整体到部分的最高层次的划分。

一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。

详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(TASk-flow)。所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。

·建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。

在建造一个系统之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改。显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察。

历史

早在1960年代,诸如E·W·戴克斯特拉就已经涉及软件架构这个概念了。自1990年代以来,部分由于在 Rational Software Corporation 和MiCROSoft内部的相关活动,软件架构这个概念开始越来越流行起来。

卡内基梅隆大学和加州大学埃尔文分校在这个领域作了很多研究。卡内基·梅隆大学的Mary Shaw和David Garlan于1996年写了一本叫做 Software Architecture perspective on an emerging DIscipline的书,提出了软件架构中的很多概念,例如软件组件、连接器、风格等等。 加州大学埃尔文分校的软件研究院所做的工作则主要集中于架构风格、架构描述语言以及动态架构。

计算机软件的历史开始于五十年代,历史非常短暂,而相比之下建筑工程则从石器时代就开始了,人类在几千年的建筑设计实践中积累了大量的经验和教训。建筑设计基本上包含两点,一是建筑风格,二是建筑模式。独特的建筑风格和恰当选择的建筑模式,可以使一个独一无二。

下面的照片显示了中美洲古代玛雅建筑,Chichen-Itza大金字塔,九个巨大的石级堆垒而上,九十一级台阶(象征着四季的天数)夺路而出,塔顶的神殿耸入云天。所有的数字都如日历般严谨,风格雄浑。难以想象这是石器时代的建筑物。

图1、位于墨西哥Chichen-Itza(在玛雅语中chi意为嘴chen意为井)的古玛雅建筑。(摄影:作者)

软件与人类的关系是架构师必须面对的核心问题,也是自从软件进入历史舞台之后就出现的问题。与此类似地,自从有了建筑以来,建筑与人类的关系就一直是建筑设计师必须面对的核心问题。英国首相丘吉尔说,我们构造建筑物,然后建筑物构造我们(We shape our buildings, and afterwaRDS our buildings shape us)。英国下议院的会议厅较狭窄,无法使所有的下议院议员面向同一个方向入座,而必须分成两侧入座。丘吉尔认为,议员们入座的时候自然会选择与自己政见相同的人同时入座,而这就是英国政党制的起源。Party这个词的原意就是"方"、"面"。政党起源的关键就是建筑物对人的影响。

在软件设计界曾经有很多人认为功能是最为重要的,形式必须服从功能。与此类似地,在建筑学界,现代主义建筑流派的开创人之一Louis Sullivan也认为形式应当服从于功能(FORMs follows function)。

几乎所有的软件设计理念都可以在浩如烟海的建筑学历史中找到更为遥远的历史回响。最为著名的,当然就是模式理论和XP理论。

架构的目标是什么

正如同软件本身有其要达到的目标一样,架构设计要达到的目标是什么呢?一般而言,软件架构设计要达到如下的目标:

·可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。

·安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。

·可扩展性(SCAlable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。

·可定制化(CuSTomizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。

·可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展

·可维护性(MAIntainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费

·客户体验(Customer Experience)。软件系统必须易于使用。

·市场时机(Time to Market)。软件用户要面临同业竞争,软件提供商也要面临同业竞争。以最快的速度争夺市场先机非常重要。

架构的种类

根据我们关注的角度不同,可以将架构分成三种:

·逻辑架构、软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等。

比如下面就是笔者亲身经历过的一个软件系统的逻辑架构图

图2、一个逻辑架构的例子

从上面这张图中可以看出,此系统被划分成三个逻辑层次,即表象层次,商业层次和数据持久层次。每一个层次都含有多个逻辑元件。比如WEB服务器层次中有HTML服务元件、Session服务元件、安全服务元件、系统管理元件等。

·物理架构、软件元件是怎样放到硬件上的。

比如下面这张物理架构图描述了一个分布于北京和上海的分布式系统的物理架构,图中所有的元件都是物理设备,包括网络分流器、代理服务器、WEB服务器、应用服务器、报表服务器、整合服务器、存储服务器、主机等等。

图3、一个物理架构的例子

·系统架构、系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。

系统架构的设计要求架构师具备软件和硬件的功能和性能的过硬知识,这一工作无疑是架构设计工作中最为困难的工作。

此外,从每一个角度上看,都可以看到架构的两要素:元件划分和设计决定。

首先,一个软件系统中的元件首先是逻辑元件。这些逻辑元件如何放到硬件上,以及这些元件如何为整个系统的可扩展性、可靠性、强壮性、灵活性、性能等做出贡献,是非常重要的信息。

其次,进行软件设计需要做出的决定中,必然会包括逻辑结构、物理结构,以及它们如何影响到系统的所有非功能性特征。这些决定中会有很多是一旦作出,就很难更改的。

根据作者的经验,一个基于数据库的系统架构,有多少个数据表,就会有多少页的架构设计文档。比如一个中等的数据库应用系统通常含有一百个左右的数据表,这样的一个系统设计通常需要有一百页左右的架构设计文档。

构架描述

为了讨论和分析软件构架,必须首先定义构架表示方式,即描述构架重要方面的方式。在 Rational Unified Process 中,软件构架文档记录有这种描述。

构架视图

我们决定以多种构架视图来表示软件构架。每种构架视图针对于开发流程中的涉众(例如最终用户、设计人员、管理人员、系统工程师、维护人员等)所关注的特定方面。

构架视图显示了软件构架如何分解为构件,以及构件如何由连接器连接来产生有用的形式 [PW92],由此记录主要的结构设计决策。这些设计决策必须基于需求以及功能、补充和其他方面的约束。而这些决策又会在较低层次上为需求和将来的设计决策施加进一步的约束。

典型的构架视图集

构架由许多不同的构架视图来表示,这些视图本质上是以图形方式来摘要说明“在构架方面具有重要意义”的模型元素。在 Rational Unified Process 中,您将从一个典型的视图集开始,该视图集称为“4+1 视图模型”[KRU95]。它包括:

用例视图:包括用例和场景,这些用例和场景包括在构架方面具有重要意义的行为、类或技术风险。它是用例模型的子集。

逻辑视图:包括最重要的设计类、从这些设计类到包和子系统的组织形式,以及从这些包和子系统到层的组织形式。它还包括一些用例实现。它是设计模型的子集。

实施视图:包括实施模型及其从模块到包和层的组织形式的概览。 同时还描述了将逻辑视图中的包和类向实施视图中的包和模块分配的情况。它是实施模型的子集。

进程视图:包括所涉及任务(进程和线程)的描述,它们的交互和配置,以及将设计对象和类向任务的分配情况。只有在系统具有很高程度的并行时,才需要该视图。在 Rational Unified Process 中,它是设计模型的子集。

配置视图:包括对最典型的平台配置的各种物理节点的描述以及将任务(来自进程视图)向物理节点分配的情况。只有在分布式系统中才需要该视图。它是部署模型的一个子集。

构架视图记录在软件构架文档中。您可以构建其他视图来表达需要特别关注的不同方面:用户界面视图、安全视图、数据视图等等。对于简单系统,可以省略 4+1 视图模型中的一些视图。

构架重点

虽然以上视图可以表示系统的整体设计,但构架只同以下几个具体方面相关:

模型的结构,即组织模式,例如分层。

基本元素,即关键用例、主类、常用机制等,它们与模型中的各元素相对。

几个关键场景,它们表示了整个系统的主要控制流程。

记录模块度、可选特征、产品线状况的服务。

构架视图在本质上是整体设计的抽象或简化,它们通过舍弃具体细节来突出重要的特征。在考虑以下方面时,这些特征非常重要:

系统演进,即进入下一个开发周期。

在产品线环境下复用构架或构架的一部分。

评估补充质量,例如性能、可用性、可移植性和安全性。

向团队或分包商分配开发工作。

决定是否包括市售构件。

插入范围更广的系统。

构架模式

构架模式是解决复发构架问题的现成形式。构架框架或构架基础设施(中间件)是可以在其上构建某种构架的构件集。许多主要的构架困难应在框架或基础设施中进行解决,而且通常针对于特定的领域:命令和控制、MIS、控制系统等等。

构架模式示例

[BUS96] 根据构架模式最适用的系统的特征将其分类,其中一个类别处理更普遍的结构问题。下表显示了 [BUS96] 中所提供的类别和这些类别所包含的模式。

类别 模式

结构 层

管道和过滤器

黑板

分布式系统 代理

交互系统 模型-视图-控制器

表示-抽象-控制

自适应系统 反射

微核

软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难。特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征。

在“软件构架简介”中,David Garlan 和 Mary Shaw 认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。”[GS93]

但构架不仅是结构;IEEE Working Group on Architecture 把其定义为“系统在其环境中的最高层概念”[IEEE98]。构架还包括“符合”系统完整性、经济约束条件、审美需求和样式。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。

在 Rational Unified Process 中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互。

为阐明其含义,下面将详述其中的两个;完整说明请参见 [BUS96]。模式以下列广泛使用的形式来表示:

模式名

环境

问题

影响,描述应考虑的不同问题方面

解决方案

基本原理

结果环境

示例

模式名

环境

需要进行结构分解的大系统。

问题

必须处理不同抽象层次的问题的系统。例如:硬件控制问题、常见服务问题和针对于不同领域的问题。最好不要编写垂直构件来处理所有抽象层次的问题。否则要在不同的构件中多次处理相同的问题(可能会不一致)。

影响

系统的某些部分应当是可替换的

构件中的变化不应波动

相似的责任应归为一组

构件大小 -- 复杂构件可能要进行分解

解决办法

将系统分成构件组,并使构件组形成层叠结构。使上层只使用下层(决不使用上层)提供的服务。尽量不使用非紧邻下层提供的服务(不跳层使用服务,除非中间层只添加通过构件)。

示例:

1 通用层

严格的分层构架规定设计元素(类、构件、包、子系统)只能使用下层提供的服务, 服务可以包括事件处理、错误处理、数据库访问等等。 相对于记录在底层的原始 *** 作系统级调用,它包括更明显的机制。

2 业务系统层

上图显示了另一个分层示例,其中有垂直特定应用层、水平层和基础设施层。注意:此处的目标是采用非常短的业务“烟囱”并实现各种应用程序间的通用性。 否则,就可能有多个人解决同一问题,从而导致潜在的分歧。

有关该模式的深入讨论,请参见指南:分层。

模式名

黑板

环境

没有解决问题的确定方法(算法)或方法不可行的领域。例如 AI 系统、语音识别和监视系统。

问题

多个问题解决顾问(知识顾问)必须通过协作来解决他们无法单独解决的问题。各顾问的工作结果必须可以供所有其他顾问访问,使他们可以评估自己是否可以参与解决方案的查找并发布其工作结果。

影响

知识顾问参与解决问题的顺序不是确定的,这可能取决于问题解决策略

不同顾问的输入(结果或部分解决方案)可能有不同的表示方式

各顾问并不直接知道对方的存在,但可以评估对方发布的工作

解决办法

多名知识顾问都可访问一个称为“黑板”的共享数据库。黑板提供监测和更新其内容的接口。控制模块/对象激活遵循某种策略的顾问。激活后,顾问查看黑板,以确定它是否能参与解决问题。如果顾问决定它可以参与,控制对象就可以允许顾问将其部分(或最终)解决方案放置于黑板上。

示例:

以上显示了使用 UML 建模的结构或静态视图。 它将成为参数化协作的一部分,然后会绑定到实参上对模式进行实例化。

构架风格

软件构架(或仅是构架视图)可以具有名为构架风格的属性,该属性减少了可选的形式,并使构架具有一定程度的一致性。样式可以通过一组模式或通过选择特定构件或连接器作为基本构件来定义。对给定系统,某些样式可作为构架描述的一部分记录在构架风格指南(Rational Unified Process 中设计指南文档的一部分)中。样式在构架的可理解性与完整性方面起着主要的作用。

构架设计图

构架视图的图形描述称为构架设计图。对于以上描述的各种视图,设计图由以下统一建模语言图组成 [UML99]:

逻辑视图:类图、状态机和对象图。

进程视图:类图与对象图(包括任务 - 进程与线程)。

实施视图:构件图。

部署视图:配置图。

用例视图:用例图描述用例、主角和普通设计类;顺序图描述设计对象及其协作关系。

构架设计流程

在 Rational Unified Process 中,构架主要是分析设计工作流程的结果。当项目再次进行此工作流程时,构架将在一次又一次迭代中不断演化、改进、精炼。由于每次迭代都包括集成和测试,所以在交付产品时,构架就相当强壮了。构架是精化阶段各次迭代的重点,构架的基线通常会在此阶段结束时确定。

架构师

软体设计师中有一些技术水平较高、经验较为丰富的人,他们需要承担软件系统的架构设计,也就是需要设计系统的元件如何划分、元件之间如何发生相互作用,以及系统中逻辑的、物理的、系统的重要决定的作出。

这样的人就是所谓的架构师(Architect)。在很多公司中,架构师不是一个专门的和正式的职务。通常在一个开发小组中,最有经验的程序员会负责一些架构方面的工作。在一个部门中,最有经验的项目经理会负责一些架构方面的工作。

但是,越来越多的公司体认到架构工作的重要性,并且在不同的组织层次上设置专门的架构师位置,由他们负责不同层次上的逻辑架构、物理架构、系统架构的设计、配置、维护等工作。

        数据仓库作为全行或全公司的数据中心和总线,汇集了全行各系统以及外部数据,通过良好的系统架构可以保证系统稳定性和处理高效性,那如何保障系统数据的完备性、规范性和统一性呢?这里就需要有良好的数据分区和数据模型,那数据分区在第三部分数据架构中已经介绍,本节将介绍如何进行数据模型的设计。

1、各数据分区的模型设计思路:

       数据架构部分中提到了在数据仓库中主要分为以下区域,那各数据区域的主要设计原则如下:

       (1)主数据区:主数据区是全行最全的基础数据区,保留历史并作为整个数据仓库的数据主存储区,后续的数据都可以从主数据区数据加工获得,因此主数据区的数据天然就要保留所有历史数据轨迹。

        1) 近源模型区:主要是将所有入数据仓库的数据表按历史拉链表或事件表(APPEND算法)的方式保留所有历史数据,因此模型设计较简单,只需要基于源系统表结构,对字段进行数据标准化后,增加保留历史数据算法所需要的日期字段即可。

        2)整合模型区:该模型区域按主题方式对数据进行建模,需要对源系统表字段按主题分类划分到不同的主题区域中,并主要按3范式的方式设计表结构,通过主题模型的设计并汇总各系统数据,可以从全行及集团角度进行客户、产品、协议(账户、合同)分析,获得统一视图。比如说,全行有多少客户、有多少产品?通过主题模型事先良好的设计和梳理,可以很快获得相关统计数据。

       主数据区的模型设计按顶层设计(自上而下)为主,兼顾应用需求(自下而上)的方式,即需要有全局视角,也要满足应用需求。那顶层设计主要是需要从全行数据角度对源系统的主要业务数据进行入仓,获得全行客户、业务数据的整体视角,同时又保存所有交易明细数据,满足后续的数据分析需求;应用需求指源系统数据的入仓也需要考虑当前集市、数据应用系统的数据需求,因为数据需求是千变万化的,但是只要保留全面的基础的业务数据,就有了加工的基础,当前的数据需求只是考虑的一部分,更多的需要根据业务经验以及主题模型进行数据入仓和模型设计。

        主数据模型的设计主要自上而下,近源模型层虽然比较简单,但设计步骤和整合模型类型,分为以下几个步骤:

       步骤1:系统信息调研,筛选入仓的系统并深入了解业务数据;

       步骤2:对入仓系统进行表级筛选和字段筛选,并将字段进行初步映射;

        步骤3:根据入仓字段按一定规范设计逻辑模型;

       步骤4:对逻辑模型进行物理化;

       (2)集市区:集市区的设计表结构设计主要按维度模型(雪花模型、星形模型)进行设计,主要是为了方便应用分析,满足数据应用需求,集市区一般以切片的形式保留结果历史数据,但保留期限不会太长,比如只保留月末数据以及当前月份的每日切片数据。

       数据集市需要从数据仓库获得基础数据,对于仓内集市,可以直接访问或通过视图访问,减少数据存储,仓外集市则需要从数据仓库获得批量数据作为基础数据进行存储加工。因此仓外集市还需要设计基础数据的保留策略。

      集市区的设计步骤如下:

       (3)接口区:接口区的设计完全根据数据应用系统的接口方式来进行,一般也是维度模型(事实表+维度表)方式,接口区之前也提到过,不做复杂计算,只做简单关联,可以将复杂计算放到集市或指标汇总层加工。

        (4)指标汇总区:作为集市接口区和主数据区的中间层,主要是提供基于各集市和接口数据的共性需求,基于主模型区数据进行统一加工。即面向所有的应用需求来设计,那中间层一般采用维度模型,按从细粒度到粗粒度的方式逐步汇总。由于各数据应用及集市的需求不断变化,指标汇总区也是不断进行完善,许多一开始在集市的加工由于其它集市或应用也需要,则会从集市转移到指标汇总层。常见的数据就是客户、账户、合同等常用的数据实体的宽表(事实表),统一进行汇总后供各数据应用使用。

        另外指标汇总层也包括共性指标的加工,指标可以通过基础指标配置指标计算加工方式获得衍生指标,那这些基础指标和衍生指标的定义、口径以及加工方式可以由指标管理系统来维护并集成到数据标准系统和元数据管理系统中。

        指标汇总区设计步骤如下:

        (5)非结构化数据存储区:非结构化存储区的设计不仅需要考虑非结构化数据本身的存储,同时需要考虑非结构化数据所带有的结构化属性,因此在设计时主要考虑以下几点:

         1)存储路径规划:是需要将非结构化数据按源系统、类型、日期、外部来源等角度进行存储路径的规划,分门别类,便于管理。

         2)对非结构化数据的元数据建立索引:比如对于凭证的影像,需要有账户、流水号、客户名等相关结构化数据,以便完整描述影像的来源,通过对这些结构化数据建立索引,方便查找。

         3)对部分文档内容建立索引:对于部分文档如合同电子版、红头文件PDF需要建立内容索引,以便快速搜索查找文件内容,一般可用支持HADOOP的ElasticSearch来实现。

         4)设立计算区和结果区:由于非结构化数据往往需要使用MAPREDUCE或程序化语言进行处理,也会产生中间临时文件和结果数据,因此需要规划计算区和结果区来存放这些数据。

        (6)历史数据存储区:历史数据区作为历史数据的归档,即包括结构化数据,也包括非结构化数据,对于历史数据除了存储也需要方便查找,历史数据区的规划设计需要考虑非结构化数据存储区的存储、索引设计外,还需要考虑以下几点:

        1)压缩,由于历史数据使用频率低,可以选择压缩率较高的算法,降低存储空间。

         2)容量规划:由于历史数据归档会越来越大,因此需要提前进行容量规划以及历史数据清理。比如10年以上的数据进行删除。

         3)可设计一个管理系统对历史数据进行归档、查找以及管理。

        (7)实时数据区:实时数据区需要使用部分批量数据来和实时流数据进行关联加工,因此可从主数据区获得所需要的数据后进行存放在实时数据区的关联数据区,同时对于加工结果不仅可以推送到KAFKA等消息中间件,同时也可输出到实时数据区的结果区进行保留。

        (8)在线查询区:在线查询区主要在线提供计算结果查询,常用HBASE来实现,设计按照接口来分别存放到不同的HBASE表,字段内容也主要是接口字段内容。HBASE表可以根据应用或者接口类型进行分目录和分用户。由于在线查询区和实时数据区考虑到作业的保障级别以及资源竞争,往往会单独建立一套集群,与批量作业集群进行隔离,在线查询的结果计算可以在批量集群计算后加载到在线查询区。

        后续将分别对主数据区、集市及汇总指标层模型设计进行介绍,敬请关注。

以上就是关于系统软件架构全部的内容,包括:系统软件架构、大数据架构师岗位的主要职责概述、扛得住的MySQL数据库架构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10187227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存