软件全文档获取:本文末个人名片直接获取,或者进主页。
原文:
- 关于本文档
- 编写目的
本文档为应用开发中间件的总体设计文档。本文档主要阐述应用开发中间件的设计原则、设计思路、逻辑结构、技术选型以及组件功能特性。为中间件的后续设计与开发提供指导。
-
- 预期读者
本文档的预期读者包括中间件的设计、开发、测试人员,业务应用的设计、开发、测试人员。
- 项目概要
- 建设背景
- 建设目标
- 建设内容
- 总体设计
- 需求规定
- 本系统要求部署应满足较低的运行环境,且对部署环境无附加要求。
- 能按照相关业务标准,建立统一的组织机构、用户认证及权限安全管理。
- 系统应具有可扩展性和易维护性。适应业务管理规则的变更,提供灵活定制功能。
- 系统开发应符合组件标准、支持组件化程序设计和部署。
- 要求系统性能稳定、可靠。人机界面友好,易操作性强,输入输出方便,图标生成美观,检索查询简单快捷,帮助信息完成。
- 安全性能:通过安全认证和授权控制等实现授权访问;同时整个系统具备数据备份、冗灾恢复、和应急相应功能。出现异常情况,应有应急解决方案。
- 数据处理能力需求:一般查询及浏览,在网络状况允许的情况下,应做到即时响应。在数据导入、导出等长事务处理,应提供详细进程报告信息显示。
- 网络数据传输要满足【XXX业务】的安全要求,保护信息在网上传输的机密性、完整性。
- 开发中如使用第三方控件,应不影响系统部署环境,不增加系统部署成本。
- 设计原则
本系统设计综合运用信息技术系统化工程思想,遵循以下原则:
-
-
- 先进性
-
先进性是对系统的最基本要求,它是最大限度地提高系统的生存寿命、减少项目重复投资的重要手段。本系统应充分考虑一定时期内业务的增长情况,在技术平台、整体架构等方面必须具有一定的前瞻性,具备先进的应用基础,才能适应较高层次的软件应用与扩展。另外在考虑先进性的同时兼顾系统成熟稳定性,尽量选用技术成熟,经过实践检验、有大量成功案例的企业级技术。
-
-
- 实用性
-
在符合软件工程设计思想的前提下,优先采用成熟技术,满足系统功能的实用性、用户界面的友好性及用户使用的方便灵活性,在总体方案设计及后续系统开发的过程中,针对实际地区具体特点,提出切实可行、密切结合实际的解决方案,从而保证总体方案设计及后续系统的真正实用。
-
-
- 规范性
-
在电子政务各个系统中,业务构成繁多,多个不同系统的广泛互联、实现更高层次的信息与资源共享是构建系统的最主要的目标之一,而标准规范是系统间衔接、信息共享的基础,规范化和标准化就是使整个系统适应这一潮流的保障。系统的开发与应用要标准化、规范化,这主要包括两个方面的内容:一方面系统的开发与数据的标准要严格遵循现有的国家和国土资源行业标准,优先采用国家或行业已有标准,在标准缺位情况下,按照急用先行原则,加快急需标准的研制和应用;另一方面软件的开发应按照软件工程的规范进行。
-
-
- 安全性
-
在网络系统、应用软件系统层次上的总体设计应分别考虑安全控制,细致全面地考虑各种可能遇到的情况,规划出合理的解决方案,为整个系统的安全、可靠运行提供保障。另外,系统运行时要有严格的管理机制,从技术、制度上充分保证系统具有稳定、快速、可靠、连续的运行性能。
-
-
- 可维护性
-
维护性是保证软件系统充分发挥功用、满足实际需求、延长使用周期的重要因素,也是最大限度地保护用户投资的有效手段。可维护性不仅仅体现在对软件系统所存在问题进行被动修改的方便性上,更主要是体现在对软件系统进行适应性扩充和完善时所具备的灵活性上。
-
-
- 可扩展性
-
可扩展性是系统将来更新、扩展和升级的重要保障。当前【XXX】相关业务模式在不断的变化,【XXX】管理也朝着更灵活、服务内容更广泛的方向发展,因此系统设计应充分考虑【XXX】的长远发展目标,采用先进的设计思想和开发手段,全面支持各种应用功能的扩展,为整个软件系统功能的完善、更新提供条件。
-
- 平台设计思路
- 全面对象化和组件化
- 平台设计思路
为了降低开发成本、加快开发速度并提高系统的可管理性,系统必须采用面向对象编程和组件开发方法。
面向对象设计和编程有许多优点,无论对于程序开发者以及用户都是如此。面向对象为软件产品的扩展和质量保证中的许多问题提供了解决办法,在一定时间的积累后,可以大大提高开发效率,并可提高软件的质量以及降低其维护费用,其主要优点如下:
- 面向对象方法依照问题空间的实际逻辑来理解业务逻辑,并可以直接将现实世界中的实体以及实体间的相互关系和相互作用直接转化为程序的业务逻辑。这样有利于业务理解和系统设计。
- 所谓信息,实际就是反映现实世界的数据。由于面向对象方法是直接模拟的现实世界的逻辑,因此,一旦现实世界情况发生变化导致需求变化,程序可以同样模拟变化,这样,系统有良好的可修改可扩展性。
- 面向对象里的聚合和继承方法,可以大幅度减少冗余的代码,并充分重用现有代码;
- 数据封装的概念帮助开发者理解和分解问题,降低程序的逻辑复杂度,有利于提高程序开发速度并提高系统稳定性。
- 面向对象的方法,更有利于分解问题,将大的系统分解为若干部分,以便从小到大逐步集成并且有利于开发人员分工协作。
- 面向对象方法,更有利于控制软件的复杂度,有利于提高系统的扩展和重构能力。
目前,在软件开发领域,组件技术能够提高软件开发的生产效率已经成为软件开发人员的共识。组件技术使近二十年的面向对象技术进入成熟的实用阶段。在组件技术的概念模式下,软件系统可以被看作相互协同工作的部件的集合,其中每个部件都会提供特定的服务,发出特定的消息,并以标准的形式公布出来,以便使其他对象了解和调用。组件开发方式有以下优势:
- 比面向更加彻底的封装,不仅具有面向对象的好处,还有易于分发和重用的优势。
- 组件在物理上独立,便于系统升级。
- 接口简单,物理上独立,便于开发人员协作开发,并最终集成为一个完整的软件系统。
-
- 良好的系统架构
-
良好的系统架构设计是保证系统稳定性和可重用性、可扩展性的关键因素之一,本系统应该在数据交换需求的基础上,精心设计,以达到良好的效果,提高数据交换系统的可维护性以及降低本系统和以后类似系统的开发成本,支持二次开发,缩短开发周期,并提高系统的稳定性,系统应该高度重视系统的可重用性。
-
-
- 先进实用的技术体系
-
系统采用先进的、成熟的技术、平台,且有较好的前瞻性、扩充性,充分考虑数据交换、网络硬件情况的复杂性。基于Sun Microsystems公司技术成熟稳定的Java体系标准,融合基于Web的多层次架构和改进的C/S两层架构,保证建成的系统具有良好的稳定性、可扩展性和安全性。同时在满足金土工程规范、符合软件工程设计思想的前提下,总体方案的设计要适应领导的日常工作习惯,做到简洁易懂。
-
- 系统体系架构
- 概述
- 系统体系架构
应用体系结构决定了系统的最根本特性,如可维护性、可扩展性、可靠性、安全性等。目前流行的应用程序体系结构模型主要有客户机/服务器(C/S)、浏览器/服务器(B/S)及N层(三层或以上)体系结构等模型。本系统充分考虑灵活性、开放性及可扩展性,选择多层应用体系结构模型作为应用体系结构。
-
-
- 技术路线
-
- 优先采用面向服务的技术构架及中间件平台思想,强调技术的实用性、安全性、可靠性、先进性,保障系统的可扩充性、易维护性、开放性和统一性。
- 系统的开发和运行基于目前业界流行且较为成熟的SpringBoot。
- 在标准研制和技术选择上,采用国家或行业已有标准,在标准缺位情况下,按照急用先行的原则,加快急需标准的研制和应用;优先采用成熟技术,强调技术的实用性、安全性、可靠性、先进性和可操作性,从标准和技术上保障系统的可扩充性、易维护性、开放性和统一性。
- 系统支持在多用户在线、多事务并发等规模化应用模式,对用户提交的请求进行快速反应。多客户端分布式应用模式,节约开发和维护成本,规范数据格式和运行规则,以便进行数据库和应用系统集中管理,平台应该对多客户端的分布式应用提供完善的支持。针对海量数据的多用户/多系统调用等情况,通过建立缓冲池等措施,有效的改善速度,保证应用系统的正常运行。
- 系统的运行采用B/S结构,用户只要使用IE浏览器便可登陆使用本系统,对于部分复杂的图形处理功能则采用C/S模式运行。减少了客户端系统的维护工作。
- 系统概述
- 网络环境
- 系统概述
基于【XXX】专网。不与互联网物理隔离。
-
-
- 数据库平台
-
数据库平台使用PostgreSQL,它是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。PostgreSQL的起源可以追溯到1986年,作为加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上进行了30多年的积极开发。
PostgresSQL凭借其经过验证的架构,可靠性,数据完整性,强大的功能集,可扩展性以及软件背后的开源社区的奉献精神赢得了良好的声誉,以始终如一地提供高性能和创新的解决方案。PostgreSQL在所有主要操作系统开始使用PostgreSQL从未如此简单。PostgreSql提供了许多功能,旨在帮助开发人员构建应用程序,管理员保护数据完整性并且构建容错环境,并帮助你管理数据,无论数据集的大小。除了免费和开源之外,Postgre SQL还具有高度的可扩展性。例如,你可以定义自己的数据类型,构建自定义SQL函数(此sql函数在另一篇帖子讨论:点此跳转),甚至可以编写来自不同编程语言的代码,而不需要重新编译数据库。
PostgreSql试图符合SQL标准,在这种标准中,这种一致性不会与传统特性相矛盾,或者可能导致糟糕的架构决策。支持SQL标准所需的许多功能,但是有时候语法或者功能略有不同。随着时间的推移,可以预期进一步向一致性迈进。从2018年10月发布的11版本开始,PostgreSQL符合SQL:2011核心一致性的179个强制性功能中的至少160个,在此之前,没有任何关系型数据库符合此标准的完全符合。
数据类型:
基本类型:Integer, Numeric, String, Boolean;
结构类型:Date/Time, Array, Range, UUID;
文档类型:JSON/JSONB, XML, Key-value(Hstore);
几何类型:Point, Line, Circle, Polygon;
自定义类型:Composite, Custom Types;
数据的完整性:唯一性,不为空,主键、外键、排除约束、显式锁定,咨询锁定、并发性,性能。
索引:高级索引、复杂的查询计划期/优化器、交互、多版本并发控制(MVCC)、读取查询的并行化和构建B树索引、表分区,Sql标准中定义的所有事物隔离级别,包括Serializable即时表达式汇编(JIT)、可靠性,灾难恢复,预写日志(WAL),复制:异步,同步,逻辑,时间点恢复(pitr),主动备用,表空间、
安全性、身份验证:GSSAPI, SSPI, LDAP, SCRAM-SHA-256, 证书等。
强大的访问控制系统、列和行级安全性、可扩展性、存储的功能和程序。
程序语言:PL/PGSQL, Perl, Python (more)。
外部数据包装器:使用标准SQL接口连接到其他数据库或流。
许多提供附加功能的扩展,包括PostGIS。
国际化,文本搜索,支持国际字符集,例如通过ICU校对,全文检索。
对比Mysql:
PostgreSQL的稳定性极强,Innodb等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足的进步,然而很多Mysql用户都遇到过Server级的数据库丢失的场景---Mysql系统库是MyISAM的,相较而言,PG数据库在这方面要好一些。
任何系统都有他的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍然可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而MySQL明细出现一个波峰后下滑。
PG多年在GIS领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG中有大量的字典、数组、bitmap等数据类型,相比之下MaySQL就差很多,insagram就是因为PG的空间数据库扩展POSTGIS远远强于MySQL的my spatial而采用PGSQL的。
PG的“无锁定”特性非常突出,甚至包括vacuum这样的整理数据空间的操作,这个和PGSSQL的MVCC实现有关系。
PG的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。
PG有极其强悍的SQL编程能力,有丰富的统计函数和统计语法支持,比如分析函数(Oracle的叫法,PG里面叫Window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MySQL就差的很远,很多分析功能那个都没有,腾讯内部数据存储主要是Mysql,但是主要的数据分析就是Hadoop+PGsql。
PG的有很多中集群架构可以选择,plproxy可以支持语句级的镜像或者分片,slony可以进行字段级的同步设置,standby可以构建WAL文件级或者流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。
一般关系型数据库的字符串有限定长度8k左右,无限长Text类型的功能受限,只能作为外部大数据访问。而PG的TEXT类型可以直接方法,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库就可以省略了
对于web应用来说,复制的特性很重要,Mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate, 是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时pgsql还提供stream复制。
Pgsql对于numa架构的支持要比mysql强一些,比mysql对于读的性能要好些,pgsql提交可以完全异步,而mysql的内存表不够实用(表锁原因)
-
-
- 操作系统
-
本项目服务端采用Microsoft Windows 2016及以上操作系统。
操作系统是构建整个系统的基础,是整个系统安全可靠的保证。Microsoft Windows 2016及以上操作系统功能强大、适用于多用途的网络环境,易用性、灵活性以及扩展的Internet/Intranet和通讯服务能最大程度地满足各种规模的政府计算环境的需要。目前Windows操作系统在中国成为了最流行的选择,除了投资小以外,最主要的是基于Windows应用平台有一整套非常成功的应用解决方案,而且,各种大型的应用软件基本都支持Windows,系统的成功应用有较大保证。
本项目可适用Windows10,及国产操作系统、App支持安卓及鸿蒙系统。
-
-
- 开发工具
-
使用开发工具主要采用两种类型的开发工具:一是Web应用程序开发工具;二是C/S开发工具。在本系统中,Web开发工具采用Visual Studio 2015、IDEA等工具。
-
- 技术路线
结合【XXX项目】实际情况,设计符合现有情况的系统建设技术路线。
具体技术路线如下所示
-
-
- 采用面向服务的体系架构(SOA)
-
【XXX项目】建设采用面向服务的架构(Service Oriented Architecture,SOA)是基于开放的Internet标准和协议,支持网络服务(Web Services)的描述、发布、发现和使用的一种应用架构,是一种很独特的架构,它由很多强调互联协作,本地透明的组件和网际联接构成,被认为是下一代应用系统开发的架构。
SOA支持将应用作为链接服务或可重复的任务进行集成,在需要时通过网络访问这些服务和任务。这个网络可以完全包含在平台内部局域网,或是基于政务网;可以采用不同的技术,通过对不同的服务根据应用需求进行组合与展现,使最终用户感觉这些服务似乎就跟安装在本地桌面上一样。平台根据需要将这些服务组装为按需应用程序——即相互连接的服务提供者和使用者集合,彼此结合以完成特定任务,使应用业务能够适应不断变化的情况和需求。
-
-
- 多源异构数据整合技术
-
本项目数据整合涉及XXXX,各原始数据的多源、异构、多态和海量等特征表明了数据高度的复杂性,由此决定了数据的整合与整理是一项巨大、艰巨而又繁重的工作任务。在制定统一的数据整合、整理以及数据建库的标准规范前提下,以最大限度地满足数据库所需的数据内容和整理工作内容。从数据来源、业务内容、空间参数、存储格式、数学基础、标准化程度、数据规模、存储介质、应用需求、工作程度、数据更新等方面调研分析各类数据源的现状。在此基础上,选择和开发有关数据整理软件,对数据进行完整性检查、标准化处理,数据项补充、数据格式转换、坐标转换、拓扑重建、数据入库、构建数据索引等工作。
-
-
- 采用C/S与B/S模式结合的架构
-
采用 C/S 与 B/S 模式结合的多层体系架构:数据管理应采用 C/S 架构,高效实现各类数据管理功能,包括空间和非空间数据的入库、检查、编辑和处理;业务管理应采用 B/S 架构,为各领导和数据管理人员提供基于浏览器的统一环境,通过 Web 浏览器即可访问系统,并基于 WEBGIS 技术实现图形辅助审查功能。采用多层技术体系结构,可以明确地分离了表现层和业务逻辑,能够保证应用服务逻辑的一致性和稳定性、结构的开放性、功能的可扩展性和可维护性、开发的可并行性,同时兼顾了经济性。
-
-
- 使用信息资源规划(IRP)方法
-
信息资源规划是指对管理所需要的信息,全面系统的做好从采集、处理、传输到使用的规划。【XXX】项目采用信息资源规划方法梳理【XXX】等数据,再用这些数据生成模型来指导【XXX】的数据整合和系统开发,加快数据整合的进度、提高数据共享接口和系统开发的效率,从而稳步推进项目建设。
-
-
- 应用工作流技术实现流程再造
-
流程再造工作具有时间跨度长、流程多变的特点,指挥中心项目系统要适应对这种“变化”的快速响应能力,必须引入工作流技术。工作流技术主要是面向具有特定流程性特点的业务而提出的一个自动化实现模型,其目的是提高业务的处理效率、降低成本、控制业务处理的进程和质量。【XXX项目业务】具有典型的流程性特点,而且具有多样化特点,需要进行流程再造。工作流思路的引入为实现这些业务流程再造的自动化、创建无纸化办公环境、快速进行流程再造提供了崭新的思路。
-
-
- 基于服务总线架构实现跨科室信息协同共享
-
采用企业服务总线ESB(EnterpriseServiceBus)可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。ESB是传统中间件技术与XML、Web服务等技术结合的产物,提供了网络中最基本的链接中枢,是构筑企业神经系统的必要元素。采用ESB可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合,在本平台建设中运用ESB对已有各系统实现应用集成。
通过提供前置库、数据推送等数据交换服务方式,实现【XXX】协同共享。
-
-
- 满足系统兼容性及扩展性
-
系统提供多种形式的二次开发接口,满足不同层次的系统兼容性能及扩展需求。系统提供的二次开发接口包括:业务和数据扩展工具、用户自定义存储过程接口、脚本编辑接口、插件接口、客户端二次开发平台接口、组件(各种中间件引擎)二次开发接口等,预留出多种层次的接口,支持二次开发,满足与【XXX】等系统衔接的需要。
-
- 系统总体设计
- 设计原则
- 系统总体设计
-
- 先进性、易用性原则
在技术上,采用当前先进而且成熟的技术,使得设计更加合理、更为先进。在软件开发思想上,严格按照软件工程的标准和面向对象的理论来设计,管理和开发,保证系统开发的高起点。
该系统的最终用户是【XXX】人员,因此,必须要考虑到系统的简易性、通俗性。系统应提供美观实用、友好﹑直观的中文图形化用户管理界面,充分考虑办公人员的习惯,方便易学、易于操作。
-
- 可移植性和开放性原则
系统具有可移植性和开放性,支持跨平台部署和应用。支持国产主流软件,包括操作系统、数据库、应用中间件等。
-
- 标准化和规范化原则(兼容性原则)
标准化、规范性是一个大型信息系统建设的基础,也是系统与其他系统兼容和进一步扩充的根本保证,平台考虑与其他应用系统的集成,并预留出多种层次的接口,支持二次开发。整个系统的规范标准的制订完全遵照国家规范标准和有关行业规范标准。
-
- 高性能和稳定性原则
在系统设计、开发和应用时,应从系统结构、技术措施、软硬件平台、技术服务和维护相应能力等方面综合考虑,确保系统较高的性能和较低的故障率。平台具有健壮性和容错保障机制,保障系统在故障发生后能够恢复到故障发生时的状态,信息不丢失,信息内容一致。
-
- 适应性和可扩充性原则
系统的数据内容随着系统的运行而动态变化。除了一些基础数据库相对稳定之外,随着【XXX】工作的不断深入和发展,各类数据库以及业务管理模式将可能发生变化。同时,各种办公流程以及相关表格也可能发生变化,系统应能够适应变化,进行动态修改和扩充。
-
- 安全性、可靠性原则
系统的安全性是一个优秀系统的必要特征,系统应遵循安全性原则,充分考虑网络安全、用户权限和数据保密等情况,强化系统和数据安全机制、措施,包括采用多种身份鉴别技术,保障登录系统的用户身份合法有效;对登录系统中的用户设置访问控制策略,应将对不动产登记数据资源;对数据库连接数、网络会话数、进程资源占用量等资源进行控制功能,保障各个应用系统运行在最佳状态等。
-
- 协作性和独立性原则
系统功能模块首先需要充分体现所属的业务部门的处理流程,同时也要为整个系统的综合目标服务,最后形成一个各子系统相对独立又自成体系的层次完整的系统。
-
- 经济、时效性原则
系统建设尽可能利用现有的资源条件(软件、硬件、数据和人员),按“统筹规划、分步实施”的原则在规定的时间内高质量、高效率实现系统建设目标。
-
-
- 设计思路
-
严格遵循【XXX】法律法规和规范,按照【XXX】的要求,紧紧围绕目标任务,以应用服务为导向,以数据为核心,以网络等基础设施为基础,以管理制度和技术标准为保障,立足现有信息化基础,顺应信息技术发展方向,高起点规划和设计,周密部署,建成【XXX】认可的信息管理基础平台。
-
-
- 框架设计
- 基础设施层
- 框架设计
-
基础设施层也称基础设施即服务层(IaaS),是将计算资源、存储资源、网络资源等物理资源进行整合,形成可按需动态扩展的高性能计算环境、大容量存储环境,满足海量不动产登记数据存储、高并发用户登记业务办理和信息共享查询,以及登记业务系统接入平台的需要。
-
-
-
- 平台层
-
-
平台层也称平台即服务层(PaaS),是【XXX】平台的枢纽,负责对物理资源、数据资源、应用服务、通用资源、专业GIS平台服务资源等进行统一管理、监控与调度,负责提供应用开发和部署的环境。
在基础架构平台支持下,开发、采购并融合应有的公共服务,如工作流服务、GIS服务、表单服务等,构成【XXX项目】的应用开发与集成框架,实现系统与数据的集成共享和关联互动。
-
-
-
- 数据层
-
-
数据资源层也称数据即服务层(DaaS),由存储数据及其他数据组成,负责数据的统一组织与管理,对应用层的【XXX】管理系统等系统提供数据支撑。
-
-
-
- 应用层
-
-
应用层也称软件即服务层(SaaS),面向各科室,通过网络提供生态环境监测信息的查询、分析、交换、共享服务。服务对象包括各科室。通过统一应用服务门户向用户呈现。
-
-
-
- 标准和制度保障体系
-
-
标准和制度保障体系包括数据和应用服务方面和技术标准规范及管理制度,确保本项目系统各组成部分之间,以及平台与外部系统交互能够有效衔接,规范运转。
-
-
-
- 安全保障体系
-
-