云时代的系统架构设计研究
2020-02-02周海军朱军红李军
周海军 朱军红 李军
[摘 要]移动应用的普及,对系统应用架构设计提出了新的要求,反向代理技术、分布式数据库技术、NoSQL技术、内存数据库、全文检索、人工智能各项技术已成为架构设计者的必备知识,只有掌握了这些技术才能设计出满足上亿用户量的应用系统。
[关键词]云时代;反向代理;数据库;事务管理;人工智能
doi:10.3969/j.issn.1673 - 0194.2020.02.072
[中图分类号]F239.1[文献标识码]A[文章编号]1673-0194(2020)02-0-02
1 云时代信息系统开发的特点
进入云时代云平台可以提供各种解决方案供用户选择使用,开发软件时有很多的设计者不再考虑系统运行的硬件环境配置,不用考虑系统的运行维护,软件出资方只需要付费就可得到想要的服务,应用开发人员可将精力主要关注于软件功能实现上。这种时代特色给人们带来了便利,忽视系统架构设计的思潮也在现实中逐渐蔓延。然而对架构设计不了解者开发出的软件不能在实际应用中灵活多变,在系统用户量大,并发用户多,业务数据跨部门、跨企业、跨系统多,系统要求“7×24小时”可用,希望能够有效利用历史数据进行大数据运算为商业提供决策依据实现商业利益最大化的今天,设计一个需要广泛与应用的信息系统利用云平台提供的功能显然不能满足业务扩充的需要,设计者必须具备分布式应用、微服务架构等理念应用多种技术。
2 云时代应用的技术
2.1 反向代理技术
在家里或是在野外,人们通过路由器或一个手机热点可以实现多台设备同时上网,这个过程中使用了正向代理技术,多个客户机连接一台代理服务器将连接互联网的需求提交到了代理服务器,然后有代理服务器将需求转发到网络服务器,网络服务器将客户需求的资源发给代理服务器,代理服务器再将收到的信息发送给客户机。在正向代理过程中,代理服务器的前端是多客户后端的单服务器,解决的是IP地址不够用的问题。但是一个全球几十亿人都能访问的热门网站如何保证系统能够流畅,同时满足每个访问者的浏览需求,就使用了反向代理技术,一个网站对外公开一个域名所用的访问者都可通过该域名访问网站,在客户看来,一个网站就是一个地址,其实在公开的域名背后采用了反向代理技术,使用多台的服务器通过反向代理服务器与互联网相连接,反向代理服务器将众多用户需求分配到了不同的服务器上,使用多台服务器为用户提供网络服务。反向代理服务器是为提高系统效率与系统可用性设计的,最为出名的反向代理服务器是俄罗斯的Nginx,利用Nginx可实现网站对外提供一个虚拟服务器地址,然后通过多台服务器与Nginx连接,Nginx可以将客户访问负载分配到不同的服务器以实现高效率系统运行。反向代理技术是负载均衡的一种,为了适应海量并发访问,在网络各层中都有不同的负载均衡解决方案,其中在IP层应用的硬件设备F5就是其中的一种,作为应用系统开发结构的设计者,理解应用相关负载均衡技术对设计高可用性系统非常有益。
2.2 分布式数据库技术
高并发的系统中,单一的数据库已不能满足系统负载需求,Oracle提供了分布式的解决方案,但是高昂的价格让人望而却步,国内的淘宝网为了适应日益增长的业务需求,开发了自己的数据库中间件,采用了SQL拦截技术将访问数据库的各类查询语句(Select,Update,Insert)通过中间件拦截,然后将语句分配在不同的数据库服务中进行查询运算,并通过中间件将查询结果合并发送给客户机。通过数据库中间件不但可以实现数据库分布化管理,还可以提供数据备份实现系统故障下的系统自动切换,保证系统的高可用性。数据库中间件在此推荐使用Mycat,目前国内采用该方案的应用解决方案越来越多,Mycat能够实现目前流行的数据库Oracle,Mysql,SQL Server,Mongodb的分布式管理。
2.3 关系数据与NoSQL的融合
目前,各类应用需求的发展关系数据库已不能满足实际需求,大量的音像视频与文档资料需要在数据库中管理与应用,关系数据库中存放大的文件或者在关系数据库中存放文件路径的管理模式,已不能适应快速的资源检索,近年来兴起的非关系数据库已经成为关系数据库的重要补充,Mongodb就是一个不错的开源非关系数据库代表,Mongodb不但是开源,而且是一个分布式的数据库,基于文件目录管理的管理理念可将分布在不同服务器上的数据纳入一个数据库中进行管理,NoSQL数据库为访问检索数据提供了高效便捷的访问接口,目前在各种应用系统中都采用关系数据库与非关系数据库系统结合应用的解决方案。管理图片、视频及文档资料采用NoSQL数据库,管理其他信息采用关系数据库。
2.4 内存数据库技术
为了应对秒杀抢购这种短时间内完成很多事物处理的应用场景,克服数据库访问磁盘数据效率低下的问题,近年来兴起了内存数据库技术,典型的内存数据库有Redis Memcached,内存数据库大都支持分布式,可将数据存放在不同机器的内存中供应用访问,但是内存数据库一般都采用简单的key-value结构。内存数据库系统将对数据库的修改暂时存放在内存中,然后定时(时间间隔很短)的将数据写入磁盘做长期保存,在开发实时性要求较高的系统时设计者采用内存数据库技术。
2.5 最终一致性的事务管理
云时代环境下一个业务应用跨越一个以上数据库的业务处理随处可见,分布式的数据管理可造成同一数据库的不同数据表存放在不同的服务器上,一个交通违章处理业务就需要修改公安局违章数据库的罚分信息,同时还要修改驾驶员的银行账户信息以及公安局开戶行的银行信息。这样一个普通的业务至少要修改3个不在同一地方的数据库。过去对一个数据操作通过数据库事务确保业务成功完成或彻底失败的业务处理显然已不再可用,为了保证系统的高可用性及数据的一致性,系统设计必须采用新的机制确保业务提交正常完成。通常确保系统高可用、数据一致的可行做法是采用消息通信日志管理,消息通信可以直接使用操作系统的消息队列进行信息传递。日志管理则是设计者自行设计一套日志系统,在提交业务的同时记录其他联动数据操作的日志,然后再查询联动数据操作是否正常修改,正常修改则确定整个业务完成,删除对应的日志信息;如果没有正常修改则再利用日志信息在联动的数据库上执行补救性的修改,如果补救性修改不能完成则进行业务回滚。
2.6 全文检索技术
目前,站内搜索,全文搜索的需求在与日俱增,大型搜索引擎Google、 Baidu等采用的技术对外没有公开,一般的应用使用不到其中的技术,但是采用Java5开发的Solr却是一个触手可及的全文搜索服务器,性能高,提供了层面搜索、命中醒目显示并且支持多种输出格式(包括XML/XSLT和JSON格式),易于安装和配置,附带了一个基于HTTP的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。
2.7 人工智能技術
目前,人工智能已经广泛应用在了各个领域,利用大数据进行机器学习以及深度机器学习可以找出商业运行规律,可以提高企业的经济效益,美国一家证券公司采用人工智能技术开发了自动的股票交易系统,该公司的交易完全由人工智能系统自动完成,结果一年后该公司的收益达到了整个行业的3倍。当前用于人工智能开发的框架很多,其中知名度最高的是Google的TensorFlow,然而简捷好用的则是PyTorch框架。
3 分布式系统运行架构
为了实现系统的高并发,海量数据存储,确保系统24小时可用,大型应用系统采用负载均衡技术满足现实需求,本结构中使用了10台应用服务器,通过反向Nginx代理服务器对外提供服务,在网络层利用F5实现了IP负载均衡。来自网络的服务请求首先通过F5负载载均衡器,Nginx服务器负责将需求分解到具体的服务器上进行数据处理,然后将处理结果发送给数据请求者,这是一个典型的三层负载均衡的架构,如图1所示。
主要参考文献
[1]邹华.基于云计算的高校信息管理系统的设计研究[J].网络安全技术与应用,2015(2).
[2]马永锋,陆键,项乔君,等.省域公路出行者信息服务系统架构设计研究[J].公路交通科技,2007(10).
[3]左冰,周光涛,唐雄燕.未来互联网实验服务系统架构设计研究报告[J].科技创新导报,2016(11).
[4]崔嘉,洪贝.基于云智慧的设备远程监测系统架构设计研究[J].仪表技术,2016(6).
[5]易瑜.基于云计算养猪信息化管理系统的架构设计[J].职教与经济研究,2014(3).
[6]刘燕.基于云计算信息处理系统体系结构设计[J].科技通报,2012(8).