软件项目投标用技术部分

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

方案技术展现

1.1总体概要

遵循《*****项目》设计原则要求

目标

➢必须满足项目的各项功能需求;

➢架构必须满足简单、安全升级扩展、伸缩;

➢全面、准确地界定系统架构涉及的范围;

➢清楚定义内部系统与外部系统的边界以及交互约定;

➢确定各微服务的具体职责,微服务间的交互协议和交互过程;

➢确定系统的开发、部署、运维平台的相应规范;

➢为系统设计和后续编码、测试、维护提供原则、基础和规范;

1.1.1关键质量属性

系统的质量属性

1、可用性:与系统故障及其相关后果有关,系统不能就规范中所说明的服务出现故障。

2、可修改性:是有关变更的成本问题,关注变更什么(artifact),何时变更(environment),由谁变更(source)。

3、性能:与时间有关,事件发生时,系统必须对其做出相应处理。

4、安全性:衡量系统在向合法用户提供服务的同时,阻止非授权使用的能力。主要关注的是数据和服务的安全性。

5、可测试性:通过测试揭示软件缺陷的容易程度。

6、易用性:关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持种类。

7、响应速度:查询不超1秒,其他平均不超1秒

架构的质量属性

1、概念完整性:在各个层次上统一项目设计的根本指导思想

2、正确性和完整性:架构能够满足项目的各种需求和运行时的资源要求的必要条件;

3、可构建性:保证能够由指导开发小组在规定的时间里即时开发系统,并允许在开发过程作些更改的架构属性.

1.1.2架构设计原则

本架构着重考虑项目的互用性、扩展性、灵活性、扩充性为原则,采用微服务,公众号服务采用微服务架构,并且使用当今流行的Docker容器部署。

微服务架构的演进历史

➢单体应用架构– Monolithic:业务错综复杂、相互依赖、紧耦合、高风险

基于简单的MVC分层架构,比较流行的技术栈是SSH或SSM。

➢面向服务架构– SOA:业务分拆、松耦合、分层、服务治理、稳定性提高了、风险降低了

SOA服务化架构,解决了传统企业异构系统之间的互通和互联网企业快速开发迭代的服务化架构,最典型的SOA框架是阿里巴巴开源的Dubbo框架

➢微服务架构– MSA:基于SOA,更细粒度、敏捷性、灵活部署、精准扩展、自主开发部署

MSA微服务架构,通过将功能分解到各个离散的服务中移实现对解决方案的解耦。

微服务架构设计的十二个基本要素

➢基准代码:一份基准代码,多份部署

➢依赖:显式声明依赖关系

➢配置:在环境中存储配置

➢后端服务:把后端服务当作附加资源

➢构建,发布,运行:严格分离构建和运行

➢进程:以一个或多个无状态进程运行应用

➢端口绑定:通过端口绑定提供服务

➢并发:通过进程模型进行扩展

➢易处理:快速启动和优雅终止可最大化健壮性

➢开发环境与线上环境等价:尽可能的保持开发,预发布,线上环境相同

➢日志:把日志当作事件流

➢管理进程:后台管理任务当作一次性进程运行

1.2技术概要

1.2.1 Web端结构及框架的技术规范

Vuejs是当前最流行的前端框架,开源免费,以数据驱动和组件化的思想构建的,双向绑定。采用虚拟dom技术。比直接操作dom的效率高3倍。同时,虚拟dom技术无关浏览器厂商与型号,研发人员不再关心各浏览器细节。关注重心可以向业务实现倾斜。用于业务逻辑的研发的时间有效增加,对于交付时间与交付质量有更有保障。

1.2.2系统所使用数据库的技术规范

公众号服务采用mysql做为数据库, 作为核心事务数据库。

随着当今企业纷纷采用大数据,其信息架构不断发展演变。大数据时代新的信息架构采用Hadoop,spark 等新兴技术,数据仓库基于hbase构建而成,部分数据由mysql导入,部分数据从日志中采集。

1.2.3数据库集群方案

➢LVS+Keepalived+MySQL

集群搭建架构图如下:

根据业界主流指标测算,以及我们的多次压测结果表明,按照我们的集群方案,单台mysql 服务器(8核6G的配置)每秒并发可以实现550左右,即单台服务器一秒钟可以同时支持550条订单记录并行写入,如果发生更大并发,通过异步写入、消息队列等处理,可以解决并发10万以上的业务需要。即在处理高并发时,我们针对热点数据采用内存数据库,

redis或Hazelcast、消息组件采用Kafka,对数据采用异步处理、服务器可以伸缩扩展。原则上在硬件资源足够的情况下,能最多做到每秒100万并发。

附:我们压测抽样情况截图:

所有数据均不删除,实现问题可追溯。

1.2.4服务开发语言及工具

本次系统采用Java开源的编程语言来开发,它具有以下有点:简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。

开发框架则采用当前流行的Springboot框架,致力于将各种现有流行技术整合为一个整体的框架并使之完全融合,springboot生成的应用程序无关平台性,可以在任何安装有java 环境的计算机上运行,安全可靠。Springboot的主要贡献有社区贡献,可以强力有效的持续支撑。

缓存则采用Hazelcast,它是一个优秀的缓存框架,为集群而生,默认自带集群,使用哈希算法直接在内存存放数据。平均寻址时间少于0.1秒,一个优秀的缓存框架,将系统常用的数据存放于内存之中,能有效的提高系统性能。

1.2.5后端开发工具

后端开发工具使用IDEA.

IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS 整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。

1.2.6前端开发工具

前端开发工具使用Visual Studio Code。

Visual Studio Code(简称VS Code/VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、GIT 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持Win、Mac以及Linux,运行流畅

1.2.7后端框架

➢核心框架:Spring Boot 1.4.2

➢安全框架:Apache Shiro 1.3

➢数据库:Mysql 5.7

➢持久层框架:MyBatis 3.4.2

➢数据库连接池:Alibaba Druid 1.0

➢缓存框架:Hazelcast 3.7

➢消息队列框架:Kafka 1.0.9 Hazelcast

➢RPC框架:gRPC 1.0.3

➢搜索引擎框架:Elasticsearch 2.4.0

➢日志管理:SLF4J 1.7

➢测试框架:PowerMock 1.6.6、TestNG 6.10

➢工具类:Apache Commons、Lombok

1.2.8前端框架

➢JS框架:Vue,Angular2

➢CSS框架:Twitter Bootstrap

➢富文本编辑:CKEditor

相关文档
最新文档