现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.
系统架构设计高级技能 · Web架构
一、Web架构介绍
Web架构 高性能、高可用、可维护、应变、安全。
1.1 Web架构涉及技术
1.2 单台服务器到数据库与Web服务器分离
1.3 应用服务器集群
应用服务器集群,将产生如下问题:
- 用户的请求由谁来转发到具体的应用服务器。
- 用户如果每次访问到的服务器不一样,那么如何维护session的一致性(负载均衡和有无状态问题)。
那如何解决呢?可以用负载均衡技术解决。
二、负载均衡
2.1 引入负载均衡
2.2 负载均衡技术
2.3 应用层负载均衡
2.3.1 HTTP重定向
HTTP重定向就是应用层的 请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群。
特点:实现简单,但性能较差。
2.3.2反向代理服务器
在用户的请求到达 反向代理 服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache、nginx都可以充当反向代理服务器。
特点:部署简单,但代理服务器可能成为性能的瓶颈。
2.4 传输层负载均衡
2.4.1 DNS域名解析负载均衡
DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。
特点:效率比HTTP重定向高,减少维护负载均衡服务器成本。但一个应用服务器故障,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。
2.4.2 基于NAT的负载均衡
基于NAT的负载均衡将一个外部IP地址映射为多个IP地址,对每次连接请求动态地转换为一个内部节点的地址。
特点:技术较为成熟,一般在网关位置,可以通过硬件实现。像四层交换机一般就采用了这种技术。
2.5 负载均衡 - 静态与动态算法
-
静态算法(不考虑动态负载)
(1)轮转算法,轮流将服务请求(任务)调度给不同的节点(即:服务器)。
(2)加权轮转算法,考虑不同节点处理能力的差异。
(3)源地址哈希散列算 法,根据请求的源IP地址,作为散列键从静态分配的散列表找出对应的节点。
(4)目标地址哈希散列算法,根据请求目标IP做散列找出对应节点。
(5)随机算法,随机分配,简单,但不可控。 -
动态算法(考虑动态负载)
(1)最小连接数算法,每个节点处理能力相同的情况下,新请求分配给当前活动请求数量最少的节点。
(2)加权最小连接数算法:考虑节点处理能力不同,按最小连接数分配。
(3)加权百分比算法:考虑了节点的利用率、硬盘速率、进程个数等,使用利用率来表现剩余处理能力。 -
硬件负载均衡:F5
-
软件负载均衡:LVS、Nginx、HAprox
2.6 Session共享机制
2.7 有状态与无状态
-
无状态服务(stateless service) 对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。
-
有状态服务(stateful service) 则相反,它会在自身保存一些数据,先后的请求是有关联的。
判断以下构件是有状态服务还是无状态服务:
(1)ldentification Bean(身份认证构件)有状态
(2)ResPublish Bean(资源发布构件)无状态
(3)ResRetrieval Bean(资源检索构件)无状态
(4)onlineEdit Bean(在线编辑构件)有状态
(5)Statistics Bean(统计分析构件)无状态
三、持久化技术 - ORM
ORM (Object Relational Mapping),对象与关系数据之间的映射。
映射关系表
面向对象 | 关系数据库 |
---|---|
类(class | 数据库的表(table) |
对象(object) | 记录(record,行数据) |
对象的属性(attribute | 字段(field) |
实现技术对比表
维度 Hibernate | MyBatis |
---|---|
对比 强大、复杂、间接、SQL无关 (HQL语句) | 小巧、简单、直接、SQL有关 |
可移植性 好(不关心具体数据库) | 差(根据数据库SQL编写) |
复杂多表关联 | 不支持 |
四、数据库技术
- 主从数据库结构特点:
1、一般:一主多从,也可以多主多从。
2、主库做写操作,从库做读操作。 - 主从复制步骤:
1、主库(Master)更新数据完成前, 将操作写binlog日志文件。
2、从库(Salve) 打开I/O线程与主库连接, 做binlog dump process, 并将事件写入中继日志。
3、从库执行中继日志事件,保持与主库一致。
数据库技术的详细讲解请见 →点击 数据库设计
五、缓存技术
5.1 用缓存缓解数据库压力
常见缓存技术:
-
MemCache: Memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcache通过在内存里维护一个统一的巨大的hash表, 它能够用来存储各种格式的数据, 包括图像、视频、文件以及数据库检索的结果等。
-
Redis: Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库, 并提供多种语言的API。
-
Squid: Squid是一个高性能的代理缓存服务器, Squid支持FTP、gopher、HTTPS和HTTP协议。
缓存与数据库的协作:
- 数据读取
1、根据key从缓存读取
2、若缓存中没有, 则根据key在数据库中查找
3、读取到“值”之后,更新缓存 - 数据写入
1、根据key值写数据库
2、根据key更新缓存
5.2 Redis与Memcache能力比较
5.3 内存数据库 - Redis集群切片的常见方式
5.4 内存数据库 - Redis分布式存储方案
5.5 Redis数据分片方案
5.6 Redis数据类型
5.7 Redis的持久化的两种方式
Redis的持久化主要有两种方式:RDB和AOF。
- RDB: 传统数据库中快照的思想。指定时间间隔将数据进行快照存储。
- AOF: 传统数据库中日志的思想, 把每条改变数据集的命令追加到A OF文件末尾, 这样出问题了,可以重新执行AOF文件中的命令来重建数据集。
5.8 Redis的淘汰机制
5.9 Redis常见问题
5.9.1 缓存雪崩
解决方案:
1、 使用锁或队列: 保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落
到底层存储系统上。
2、 为key设置不同的缓存失效时间: 在固定的一个缓存时间的基础上+随机一个时间作为缓存失效时间。
3、 二级缓存: 设置一个有时间限制的缓存+一个无时间限制的缓存。避免大规模访问数据库。
5.9.2 缓存穿透
查询无数据返回->直接查数据库
解决方案:
1、如果查询结果为空,直接 设置一个默认值存放到缓存 ,这样第二次到缓冲中获取
就有值了。设置一个不超过5分钟的过期时间,以便能正常更新缓存。
2、 设置布隆过滤器 , 将所有可能存在的数据哈希到一个足够大的bitmap中, 一个一
定不存在的数据会被这个bitmap拦截掉, 从而避免了对底层存储系统的查询压力。
5.9.3 缓存预热
系统上线后,将相关需要缓存数据直接加到缓存系统中。
解决方案:
1、设直接写个缓存刷新页面,上线时手工操作。
2、设数据量不大时,可以在项目启动的时候自动进行加载。
3、设定时刷新缓存。
5.9.4 缓存更新
除Redis系统自带的缓存失效策略, 常见采用以下两种:
1、定时清理过期的缓存。
2、当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。
5.9.5 缓存降级
降级的目的是保证核心服务可用 ,即使是有损的,而且有些服务是无法降级的(如电商的购物流程等);
在进行降级之前要对系统进行梳理,从而梳理出哪些必须保护,哪些可降级。
五、并发分流 - CDN
CDN的全称是Content Delivery Network ,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。
CND内容分发网络
六、数据编码
6.1 XML
扩展标记语言(Extensible Markup Language,XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
-
优点:
(1)格式统一,符合标准。
(2)容易与其他系统进行远程交互,数据共享比较方便。 -
缺点:
(1)XML文件庞大,文件格式复杂,传输占带宽。
(2)服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护。
(3)客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码。
(4)服务器端和客户端解析XML花费较多的资源和时间。
6.2 JSON
JSON(JavaScript 0bject Notation) 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。
-
优点:
(1)数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。
(2)易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取。
(3)支持多种语言,包括ActionScript、C、 C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、Ruby等服务器端语言,便于服务器端的解析。
(4)因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。 -
缺点:
(1)某些领域XML更通用。
七、Web应用服务器
Web应用服务器可以理解为两层意思:
(1)WEB服务器,其职能较为单一,就是把浏览器发过来的Request请求返回Html页面。
(2)应用服务器,进行业务逻辑的处理。
-
Apache:Web服务器,市场占有率60%左右。它可以运行在几乎所有的Unix、Windows、Linux系统平台上。
-
IIS,早期Web服务器,目前小规模站点仍有应用。
-
Tomcat,开源、运行Servlet和JSP Web应用软件的基于Java的Web应用软件容器。
-
JBOSS,JBOSS是基于J2EE的开放源代码的应用服务器。一般与Tomcat或Jetty绑定使用。
-
WebSphere,一种功能完善、开放的Web应用程序服务器,它是基于Java的应用环境,用于建立、部署和管理lnternet和Intranet Web应用程序。
-
WebLogic,BEA WebLogic Server是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。
-
Jetty, Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。
八、REST
REST (Representational State Transfer,表述性状态转移) 是一种通常使用HTTP和XML进行基于Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。
REST的5个原则:
(1)网络上的所有事物都被抽象为资源。
(2)每个资源对应一个唯一的资源标识。
(3)通过通用的连接件接口对资源进行操作。
(4)对资源的各种操作不会改变资源标识。
(5)所有的操作都是无状态的。
九、响应式Web设计
响应式Web设计是一种网络页面设计布局 ,其理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局。例如,满足手机端,平板,PC端等多种设备下的全部适应。
方法与策略:
(1)采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小。
(2)响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率。
十、中台
中台是一套结合互联网技术和行业特性,将企业核心能力以共享服务形式沉淀,形成“大中台、小前台”的组织和业务机制,供企业快速低成本的进行业务创新的企业架构。中台又可以进一步细分,比如业务中台、数据中台、XX中台。本质上,都是对企业通用能力在不同层面的沉淀,并对外能力开放。
中台的践行者
Supercell,芬兰移动游戏巨头,2015年世界游戏前10占5席,员工仅200多人,因使用中台,具有小团队快速开发能力,后被腾讯86亿美金收购。
阿里,2015年参观Supercell,而后推行中台。
-
业务中台 :提供重用服务,例如学员中心、课程中心之类的开箱即用可重用能力。
-
数据中台 :提供数据整合分析能力,帮助企业从数据中学习改进,调整方向。
-
技术中台 :提供技术重用组件能力,帮助解决基础技术平台的复用。如,中间件、分布式存储、AI、负载均衡等基础设施。
业务中台 vs 数据中台
(1)多个电商渠道使用一个下单服务,一个订单接口同时为多个前台系统提供服务。
(2)多个前台系统,根据一个用户的手机号,获取对应的画像、用户的标签。
(3)将多个支付通道,抽象建立成一个支付API,暴露给前台业务系统。
(4)通过一个订单编号,来获取可能的商品推荐清单,从而做到交叉销售。
数据中台必备的4个核心能力:
(1)数据汇聚整合能力
(2)数据提纯加工能力
(3)数据服务可视化
(4)价值变现方面
十一、云计算
云计算 是集合了大量计算设备和资源,对用户屏蔽底层差异的分布式处理架构,其用户与提供实际服务的计算资源是相分离的。
优点:超大规模、虚拟化、高可靠性、高可伸缩性、按需服务、成本低【前期投入低、综合使用成本也低】。
-
按照服务类型分类:
(1) Saas(软件即服务) ,基于多租户技术实现,直接提供应用程序。
(2) Paas(平台即服务) ,虚拟中间件服务器、运行环境和操作系统。
(3) laaS(基础设施即服务) ,包括服务器、存储和网络等服务。 -
按照部署方式分类:
(1) 公有云,面向互联网用户需求,通过开放网络提供云计算服务。
(2) 私有云,面向企业内部提供云计算服务。
(3) 混合云,兼顾以上两种情况的云计算服务,公有云和私有云通过网络进行数据与应用的交互。
架构图如下:
(1)管理层,提供对所有层次云计算服务的管理功能。
(2)用户访问层,方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口。
(3)应用层,提供软件服务,如:财务管理、客户关系管理、商业智能。
(3)平台层,为用户提供对资源层服务的封装,使用户可以构建自己的应用。
(4)资源层,提供虚拟化的资源,从而隐藏物理资源的复杂性。如:服务器、存储。
十二、边缘计算
边缘计算 是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务,其本质是计算处理职能的本地化。
十三、Web系统分层
十四、物联网架构
(1)应用层 ,应用服务智能终端。
(2)平台层 ,操作系统软件开发设备管理平台连接管理平台。
(3)网络层 ,接入网核心网业务网专有网络通信标准/协议。
(3)感知层 ,传感器芯片通信模组感知类智能设备/装置。
十五、大数据架构
十五、工业设备检测系统设计 - SSM框架
Spring是一个轻量级的企业级应用开发框架, 于2004年由Rod Johnson发布了1.0版本, 经过多年的更新迭代, 已经逐渐成为Java开源世界的第一框架, Spring框架号称Java EE应用的一站式解决方案, 与各个优秀的MVC框架如Spring MVC、Struts 2、JSF等可以无缝整合, 与各个OR M框架如Hibernate、My Bat is、JPA等也可以无缝衔接,其他各种技术也因为Spring的存在而被很容易地整合进项目开发之中, 如Red is整合、Log4J整合等等。Spring MVC是Spring框架体系中的全功能MVC模块。Spring MVC是基于Java语言实现MVC设计模式的请求驱动类型的轻量级Web框架, 目的是将Web开发模块化及代码简化。其提供了Dispatcher Servlet前端控制器分派请求, 同时提供灵活的配置处理程序映射、视图解析, 并支持文件上传, 目前已经是众多MVC框架中的佼佼者。MyBatis的前身是Apache社区的一个开源项目iBatis, 于2010年更名为My Bat is。My Bat is是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架, 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集, 使得开发人员更加关注SQL本身和业务逻辑, 不用再去花费时间关注整个复杂的JDBC操作过程。
在设计架构考虑的质量属性:
1、性能
性能(performance) 是指系统的响应能力, 即要经过多长时间才能对某个事件做出响应, 或者在某段时间内系统所能处理的事件的个数。
2、可靠性
可靠性(reliability) 是软件系统在应用或系统错误面前, 在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
3、可用性
可用性(availab i ity) 是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
4、安全性
安全性(security) 是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。
5、可修改性
可修改性(modifi abi ity) 是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
6、易用性
软件开发工具应有十分友好的用户界面,用户乐于使用;工具应能剪裁和定制,以适应特定用户的需要;工具应能提示用户的交互操作,提供简单有效的执行方式;工具还应能检查用户的操作错误,尽可能自动改正错误。
该工业设备检测系统拟采用工业控制领域中统一的数据访问机制,实现与各种不同设备的数据交互,说明采用标准的数据访问机制的原因?
该工业设备检测系统需与不同设备进行数据交互,采用标准的数据访问机制,可以在硬件供应商和软件开发商之间建立一套完整的规则。只要遵循这套规则,数据交互对两者来说都是透明的,硬件供应商只需考虑应用程序的多种需求和传输协议,软件开发商也不必了解硬件的实质和操作过程,实现对设备数据采集的统一管理。
十六、物流车辆管理系统设计
某公司拟开发一个物流车辆管理系统,该系统可支持各车辆实时位置监控、车辆历史轨迹管理、违规违章记录管理、车辆固定资
产管理、随车备品及配件更换记录管理、车辆寿命管理等功能需求。其非功能性需求如下:
(1)系统应支持大于50个终端设备的并发请求;
(2)系统应能够实时识别车牌,识别时间应小于1s;
(3)系统应7x24小时工作;
(4)具有友好的用户界面;
(5) 可抵御常见SQL注入攻击;
(6)独立事务操作响应时间应小于3s;
(7)系统在故障情况下,应在1小时内恢复;
(8)新用户学习使用系统的时间少于1小时。
面对系统需求,公司召开项目组讨论会议,制订系统设计方案,最终决定基于分布式架构设计实现该物流车辆管理系统,应用Kafka、Red is数据缓存等技术实现对物流车辆自身数据、业务数据进行快速、高效的处理。
对该系统的架构设计方案进行分析可知, 该物流车辆管理系统应基于层次型架构风格进行设计。图从下到上依次为数据存储层、分布式通信处理层、逻辑处理层和表现层。随后,选择相关的技术以支持各层所需完成的任务。
物流车辆管理系统设计架构图,如图:
软件质量属性有可用性、可修改性、性能、安全性、可测试性、易用性等六种。
可用性关注的是系统产生故障的可能性和从故障中恢复的能力;
性能关注的是系统对事件的响应时间;
安全性关注的是系统保护合法用户正常使用系统、阻止非法用户攻击系统的能力;
可测试性关注的是系统发现错误的能力;
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。
该物流车辆管理系统需抵御常见的SQL注入攻击, 什么是SQL注入攻击, 并列举出抵御SQL注入攻击的方式。
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展, 使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大的一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果, 获得某些他想得知的数据, 这就是所谓的SQL Injection, 即SQL注入。SQL注入攻击属于数据库安全攻击手段之一, 可以通过数据库安全防护技术实现有效防护, 数据库安全防护技术包括:数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。为了抵御SQL注入攻击, 可以采用如下方式:使用正则表达式、使用参数化的过滤性语句、检查用户输入的合法性、用户相关数据加密处理、存储过程来执行所有的查询、使用专业的漏洞扫描工具等。
SQL注入攻击, 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串, 最终达到欺骗服务器执行恶意的SQL命令。
可以通过以下方式抵御SQL注入攻击:
· 使用正则表达式;
· 使用参数化的过滤性语句;
· 检查用户输入的合法性;
· 用户相关数据加密处理;
· 存储过程来执行所有的查询;
· 使用专业的漏洞扫描工具。
十七、银行信息系统设计
某银行拟将以分行为主体的银行信息系统,全面整合为由总行统一管理维护的银行信息系统,实现统一的用户账户管理、转账汇款、自助缴费、理财投资、贷款管理、网上支付、财务报表分析等业务功能。但是,由于原有以分行为主体的银行信息系统中,多个业务系统采用异构平台、数据库和中间件, 使用的报文交换标准和通信协议也不尽相同, 使用传统的EAI解决方案根本无法现新的业务模式下异构系统间灵活的交互和集成。因此,为了以最小的系统改进整合现有的基于不同技术实现的银行业务系统,该银行拟采用基于ESB的面向服务架构(SO A) 集成方案实现业务整合。
什么是面向服务架构(SOA) 以及ESB在SO A中的作用与特点?
从应用的角度定义, 可以认为SOA是一种应用框架, 它着眼于日常的业务应用, 并将它们划分为单独的业务功能和流程, 即所谓的服务。SOA使用户可以构建、部署和整合这些服务, 且无需依赖应用程序及其运行平台, 从而提高业务流程的灵活性。这种业务灵活性可使企业加快发展速度,降低总体拥有成本,改善对及时、准确信息的访问。SOA有助于实现更多的资产重用、更轻松的管理和更快的开发与部署。
从软件的基本原理定义, 可以认为SOA是一个组件模型, 它将应用程序的不同功能单元(称为服务) 通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。
SOA是一个组件模型, 它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立气和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和作用,将各种服务进行连接与整合;换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统通用的方式进行交互。
ESB作用与特点:
1、SOA的一种实现方式, ESB在面向服务的架构中起到的是总线
2、描述服务的元数据和服务注册管理;
3、在服务请求者和提供者之间传递数据,以及对这些数据进行转式等;
4、发现、路由、匹配和选择的能力,以支持服务之间的动态交互持、服务质量保证、可管理性和负载平衡等。
银行信息系统的实际需求可知,在信息整合的过程中,银行使用企业服务平台构建全行应用系统的整合平台。在纵向上,连接总分行各个系统;在横向上,连接各业务应用系统和业务系统等。企业服务平台采用分级部署的方式,包括两个部分:一部分是部署在总行系统间的企业服务平台;另一部分是部署在分行系统间的企业服务平台。这两个企业服务平台之间互联互通,形成企业应用集成的总体框架。银行信息系统的SO A架构模型中, 通过ESB进行连接整合, 能很好地支撑各业务流程。在操作客户关系管理中, 客户信息是分散在各个业务子系统中, 是不能共享的, 通过基于ESB的体系架构整合后, 可以实现全方位的客户管理。客户经理可以通过整合后的客户关系管理系统,一次性地查阅目标客户的基本信息、产品账户信息、地址联系信息、事件信息、资源信息、关系信息、风险信息、统计分析信息等,这就真正实现了以客户为中心的转变过程,摆脱了从前以账户为中心的局部模式。
基于该信息系统整合的实际需求, 项目组完成了基于SOA的银行信息系统架构设计方案。该系统架构图如图:
针对银行信息系统的数据交互安全性需求,列举可实现信息系统安全保障的措施?
SOA环境中, 需要解决的安全问题包括:
(1)机密性:机密性又称为保密性,是指非法非授权用户访问数据,导致数据机密泄漏,在传输层和消息层对机
密性的需求是不同的,可以依靠数据加密来保证数据机密性。
(2)完整性:是指数据的正确性、一致性和相容性。保证数据的完整性可以通过数字签名来实现。
(3)可审计性:审计是一种事后监视的措施,跟踪系统的访问活动,发现非法访问,达到安全防范的目的。不同
的系统可能需要不同的审计等级。
(4)认证管理:实际指的是服务请求者和服务提供者两者在服务调用的时候互相认证对方的身份,防止非授权非
法实体来获取服务,是系统安全的第一道安全屏障。
(5) 授权管理:授权管理的目的是阻止Web服务的未授权使用。
(6) 身份管理:在SO A架构中, 身份管理和传统系统中的身份管理比较相像。服务请求者和服务提供者两者的身份对两者来说是至关重要的,否则就会存在非法用户在服务请求者和服务提供者之间进行消息传递,太容易导致数据的泄密和篡改。
列举可实现信息系统安全保障的措施:
1、引入https协议或采用加密技术对数据先加密再传输
2、采用信息摘要技术对重要信息进行完整性验证
3、防火墙系统
4、安全检测
5、网络扫描
十八、新商品交易平台设计
某电子商务企业因发展良好,客户量逐步增大,企业业务不断扩充,导致其原有的B2C商品交易平台已不能满足现有业务需求。因此,该企业委托某软件公司重新开发一套商品交易平台。该企业要求新平台应可适应客户从手机、平板设备、电脑等不同终端设备访问系统,同时满足电商定期开展“秒杀”、“限时促销”等活动的系统高并发访问量的需求。面对系统需求,软件公司召开项目组讨论会议, 制定系统设计方案。讨论会议上, 王工提出可以应用响应式Web设计满足客户从不同设备正确访问系统的需求。同时, 采用增加镜像站点、CDN内容分发等方式解决高并发访问量带来的问题。李工在王工的提议上补充, 仅仅依靠上述外网加速技术不能完全解决高用户并发访问问题,如果访问量持续增加,系统仍存在崩溃可能。李工提出应同时结合负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等方法设计系统架构。经过项目组讨论, 最终决定综合王工和李工的思路,完成新系统的架构设计。
什么是“响应式Web设计", 列举响应式Web设计的实现方式?
响应式web设计是指我们设计与开发的页面可以根据用户的行为(比如改变浏览器的窗口大小) 和不同的设备环境(比如系统平台、屏幕分辨率以及横竖屏等)做出相应的响应来调整页面的布局,以提供用户可感知的、流畅的阅读和操作体验。响应式设计一般遵循“设计先行,内容优先,移动优先"的原则。就是说,如果一个页面想要响应PC端和移动终端包括用户的一些行为等,那么设计师至少需要设计两套以上页面的设计图(PC端一套,移动终端一套),交互设计师也需先根据终端进行交互设计,把需求中最重要的内容展示在移动小屏幕上,然后前端工程师据此设计开发出响应式框架。
响应式web设计是指我们设计与开发的页面可以根据用户的行为和不同的设备环境做出相应的响应来调整页面的布局, 以提供用户可感知的、流畅的阅读和操作体验。
实现方式:
(1)流式布局
(2)弹性布局(如弹性图片)
(3)媒体查询
综合王工和李工的提议,项目组完成了新商品交易平台的系统架构设计方案。新系统架构图如图:
根据李工的提议,新的B2C商品交易平台引入了主从复制机制。请针对B2C商品交易平台的特点,简要叙述引入该机制的好处?
1、提升性能
交易平台要求高并发,主从复制方式一主多从,不同的用户请求可以从不同的从数据库读取数据,提高并发度。
2、可扩展性更优
如果采用单台数据库服务器,则访问量持续增加时,数据库瓶颈暴露,且无法迅速解决问题。而主从结构可以快速增加从服务器数量,以满足需求。
3、提升可用性
一主多从,一台从服务器出现故障不影响整个系统正常工作。
4、相当于负载均衡
一主多从分担任务,相当于负载均衡。
5、提升数据安全性
系统中的数据冗余存放多份,不会因为某台机器硬件故障而导致数据丢失。