首页> 中国专利> 一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法

一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法

摘要

本发明公开了一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法,包括以下步骤:S10,利用LVS与NGINX技术搭建负载均衡服务器架构,在NGINX上运用Lua胶水语言实现用户访问限制;S20,搭建Django应用服务器框架,实现接受用户数据与返回用户数据;S30,存储与提取Redis数据库主从集群,Redis保存数据,以及返回用户所需求数据。本发明能够实现负载均衡轻松实现五万多以上用户并发数,既保证了满足大量用户需求又加快用户翻译速度,提高了用户体验。

著录项

  • 公开/公告号CN112905332A

    专利类型发明专利

  • 公开/公告日2021-06-04

    原文格式PDF

  • 申请/专利号CN201911216008.0

  • 发明设计人 程知群;田刚;刘国华;尉倞浩;

    申请日2019-12-03

  • 分类号G06F9/50(20060101);G06F40/58(20200101);

  • 代理机构33303 杭州昱呈专利代理事务所(普通合伙);

  • 代理人雷仕荣

  • 地址 311400 浙江省杭州市富阳区银湖街道富闲路9号银湖创新中心6号9层937室

  • 入库时间 2023-06-19 11:16:08

说明书

技术领域

本发明属于数据库领域,具体涉及一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法。

背景技术

随着5G时代的到来,会有越来越多的网络用户,服务器的抗压能力显得越来越重要,比如12306购票网站以及淘宝双11同时几十万上百万用户同时在线,在这种高并发的情况下不可能会有一台服务器满足所有需求,也没有一台主机会承受这么大的压力,无论硬件与软件条件都达不到。

选择一个好的服务器架构非常重要,使用LVS(LinuxVirtualServer,即Linux虚拟服务器)+NGINX(engine x,高性能HTTP和反向代理web服务器)架构,LVS作为负载均衡服务器,NGINX作为反向代理服务器。为了必须减少不必要的资源开销并且具有转发功能,使用Lua语言,Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,可以嵌到NGINX里面的脚本语言,可以与NGINX结合实现复杂控制,大大提高运行速度。Python语言近来越来越受欢迎,作为Python成熟的应用服务器框架,Django是一个不错的选择,Django是一个开放源代码的Web应用框架。进行数据交互不能缺少数据库,比如MySQL,Oracle等关系型数据库,还有Redis,Memcached等非关系型数据库。把上述结合在一起就能解决一些瓶颈限制解决一些特定的问题。

发明内容

鉴于以上存在的技术问题,本发明用于提供一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法。

包括以下步骤:

S10,利用LVS与NGINX技术搭建负载均衡服务器架构,在NGINX上运用Lua胶水语言实现用户访问限制;

S20,搭建Django应用服务器框架,实现接受用户数据与返回用户数据;

S30,存储与提取Redis数据库主从集群,Redis保存数据,以及返回用户所需求数据。

优选地,所述S10包括以下步骤:

S11,搭建LVS服务器,同步请求转发策略;

S12,搭建NGINX服务器集群,把NGINX运行的IP与LVS服务器的虚拟IP绑定,并且在配置文件中利用Lua对于特定IP或者用户访问进行限制操作,实现NGINX转发的复杂控制。

优选地,所述S20包括以下步骤:

S21,布局前端界面:选择HTML或者PHP,美化用户上传文件的界面,选择本地PDF并且上传至后台服务器;现用户响应渲染在网页,通过页面或者直接保存到用户本地,完成响应;

S22,Redis(Remote Dictionary Server,远程字典服务)集群与Django连接,配置Django与Redis的交互通信;

S23,配置uWSGI,实现NGINX与uWSGI的连接,两者之间将采用soket来通讯方式,采用特定端口与uWSGI通讯;uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。

S24,爬虫程序爬取英语词库,根据出现频率,保存高频词汇到Redis数据库。

优选地,所述S30包括以下步骤:

S31,数据存入,在与Redis测试连接成功完成后,Redis存储结构为key/value格式,把英文词汇作为key保存,把中文翻译作为value保存;

S32,数据提取,根据用户请求的单词在数据库中找到特定value中文,回应数据并渲染在页面,Redis通过哨兵模式,根据需要实现不同功能。

采用本发明具有如下的有益效果:

1、利用Python的web框架Django搭建翻译服务器,可以与其他的缓存系统联用,提高了页面的加载速度。利用Python在人工智能与统计学的优点,可以实现对数据的最优化,有利于数据筛选,Python还集成了语音阅读的库,还可以实现一遍阅读一遍翻译;

2、打破NGINX负载均衡的瓶颈,提高并发,利用LVS的优点可以实现百万级用户访问并发,大大减轻单一主机的压力;

3、利用Redis的存储结构,实现列表存储以及内存运行速度,大大节省了传统的I/O交互;

4、Redis可以搭建集群与主从结构,避免了数据库挂掉而导致服务器不能工作的缺点,它提供的持久化也可以大大减轻服务器宕机带来的危害。

附图说明

图1为本发明实施例的一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法的步骤流程图;

图2为本发明又一实施例的一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法的步骤流程图;

图3为本发明一实施例的一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法的负载均衡服务器架构图;

图4为本发明一实施例的一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法的服务器框架连接数据库集群架构图;

图5为本发明一实施例的一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法的服务器与服务器应用框架通信架构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

参见图1,一种基于LVS负载均衡Django架构实现英文PDF在线快速翻译方法的步骤流程图,S10,利用LVS与NGINX技术搭建负载均衡服务器架构,在NGINX上运用Lua胶水语言实现用户访问限制;

S20,搭建Django应用服务器框架,实现接受用户数据与返回用户数据;

S30,存储与提取Redis数据库主从集群,Redis保存数据,以及返回用户所需求数据。

具体实施例中

S10包括以下步骤:

S11,搭建LVS服务器,同步请求转发策略;在Linux系统,建立一个虚拟IP(VIP),在具体的Nginx服务器是要设置回环的IP,即在lo网卡上设置VIP的地址。把虚拟IP添加到路由,根据具体需求为后面部署所连接的服务器集群;

LVS选择DR(Direct Routing)模式,LVS可以使用两块网卡配置不同IP,LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在本地Server上,同时在本地Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务器。这个虚拟IP一般称为LVS的VIP,即Virtual IP。本地IP与后面的NGINX连接,NGINX与后面的Django相连接。在这里本地IP与NGINX必须是同一网段因为采取的是直接路由的方式,就是不经过IP直接通过Mac地址通信;

S12,搭建NGINX服务器集群,把NGINX运行的IP与LVS服务器的虚拟IP绑定,并且在配置文件中利用Lua对于特定IP或者用户访问进行限制操作,实现NGINX转发的复杂控制。

在NGINX服务器主机阶段要配置与本地IP的路由,在NGINX配置文件中还要代理后面Django的IP地址,这里使用uWSGI协议,在配置文件中通过Lua语言限制访问用户或者返回内容。Lua作为脚本语言在NGINX可以作为胶水把其他内容联合起来。Lua也能配置Redis,MySQL等数据库在一定程度上大大提高了效率。NGINX可以通过用户访问静态文件与动态文件实现不同代理把动态文件直接通过NGINX与Lua实现返回,把静态文件代理到Django大大提高效率。

S20包括以下步骤:

S21,布局前端界面:选择HTML或者PHP,美化用户上传文件的界面,选择本地PDF并且上传至后台服务器;现用户响应渲染在网页,通过页面或者直接保存到用户本地,完成响应;

既然是服务器肯定分成给前端与后端,前端是直接与用户交互所以前端页面布局的好坏直接影响户用体验。这里主要实现PDF文件的上传与翻译完成后文件保存到本地。Django在接受用户请求时需要判断是否是PDF文件,如果不是就返回404页面,如果是PDF文件再判断是否是英文,如果不是提醒用户上传错误。在Django是MVT模式,必须在设置文件中添加前端模板的相对路径,对于跳转URL要正确重写路径;

S22,Redis集群与Django连接,配置Django与Redis的交互通信;Django可以连接多种数据库MySQL,Memcached等。通过修改配置文件通过Redis启动IP与端口号实现。这里选择Redis的原因是因为它是内存数据库,不同与I/O接口进行交互。还有Redis提供持久化,可以把Redis数据保存到硬盘,方便下次使用。Redis实现session共享,由于HTTP协议是无状态的,考虑到安全以及方便,把用户sessionid也保存到数据库,实现无论分配到哪一个服务器都有用户信息;

S23,配置uWSGI,实现NGINX与uWSGI的连接,两者之间将采用soket来通讯方式,采用特定端口与uWSGI通讯;确保此端口没有被其它程序采用。这样可以把访问NGINX的请求通过uWSGI协议发送到Django。用于接收前端服务器转发的动态请求并处理后发给web应用程序。uWSGI服务器收到请求后,根据wsgi协议解析并回调Django应用,Django应用则根据请求进行Redis读取等工作,然后再逆向返回NGINX与LVS;

S24,爬虫程序爬取英语词库,根据出现频率,保存高频词汇到Redis数据库,作为服务器必须有自己数据源,供用户访问,如果调用其他api接口速度太慢,不适合做高并发服务器,这里我选择通过爬虫爬取公开数据,并保存到Redis。借助持久化的优点我们可以实时的更新最新数据,这样就会获得大量的数据源。

为了给本地提供丰富的数据源,这里需要用Python写爬虫程序,获得大量英语单词并且判断是否重复,若重复就保留一个。碰上一词多义的情况就以数组列表的形式保留下载。这也是Redis的优点之一,它可以储存list列表形式。

S30包括以下步骤:

S31,数据存入,在与Redis测试连接成功完成后,Redis存储结构为key/value格式,把英文词汇作为key保存,把中文翻译作为value保存;

S32,数据提取,根据用户请求的单词在数据库中找到特定value中文,回应数据并渲染在页面,Redis通过哨兵模式,根据需要实现不同功能。搭建了三台Redis数据库集群,一台主数据库两台从数据库,这三台数据库可以正常通信。

参见图2,单独使用NGINX做负载均衡服务器,虽然它内部采用epoll方式采取异步非堵塞的I/O复用,但是它也有极限值,在主机上达到一万多并发就已经丢包,加载网页就会很慢。为了解决高并发实现十几万并发,搭配LVS搭建负载均衡服务器,后面使用NGINX做服务器集群这样对用户并发数量限制就大大减小。NGINX也可以作为负载均衡服务器,后面使用Django服务器集群,这样就可以大大减轻单一服务器的压力,并且当其中一个出现宕机的时候不影响工作,因为服务器集群做的是同一个工作,它们是同一功能。

参见图3,每一个NGINX后面都有一个web框架来提供服务,这里一个NGINX后面还可以均衡多个框架,减轻负担避免出现一个出错整体不能工作的后果。

参见图4,使用Redis数据库集群,存入的值通过哈希槽特殊算法给数据分配到特定的数据库,这样就可以减轻一个数据库的访问压力,因为Redis集群最少需要三个,在这里还可以优化为主从结构,就需要六个Redis数据库,每一个主数据库搭配一个从数据库,往主数据库写入数据,从从数据库读出数据,读写分离提高效率,当主服务器出错这样从服务器就会提升为主服务器,不影响工作。

参见图5,这是服务器与服务器框架通信原理与协议,uWSGI就像一个纽带把两者联系起来。这样为结构多样化提供了选择,开发者可以根据不同框架不同的优点,选择不同的架构大大提高了效率。

应当理解,本文所述的示例性实施例是说明性的而非限制性的。尽管结合附图描述了本发明的一个或多个实施例,本领域普通技术人员应当理解,在不脱离通过所附权利要求所限定的本发明的精神和范围的情况下,可以做出各种形式和细节的改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号