CN114064149A - 一种服务启动请求失败的降低方法 - Google Patents
一种服务启动请求失败的降低方法 Download PDFInfo
- Publication number
- CN114064149A CN114064149A CN202111384822.0A CN202111384822A CN114064149A CN 114064149 A CN114064149 A CN 114064149A CN 202111384822 A CN202111384822 A CN 202111384822A CN 114064149 A CN114064149 A CN 114064149A
- Authority
- CN
- China
- Prior art keywords
- connection
- request
- service
- establishing
- pool
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000000977 initiatory effect Effects 0.000 claims abstract description 8
- 238000012544 monitoring process Methods 0.000 claims abstract description 5
- 230000008569 process Effects 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 230000004913 activation Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 4
- 238000012795 verification Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供的一种服务启动请求失败的降低方法,降低方法包括:服务启动请求需要的组件包括:Nginx服务器、数据库和Redis;Nginx服务器检测服务上线,间隔1~2s请求一次服务,服务启动成功,返回200OK,服务能够正常接收请求,并将请求正常转发;监听应用启动事件;当服务启动成功后,预先建立数据库连接,当接收到请求时,从连接池取出可用连接;预先建立Redis连接,当接收到请求时,直接从连接池取出连接使用;预先建立OKHTTP连接,当接收到请求,直接从连接池中取出连接使用;发布的服务开始稳定运行。通过预建立连接的方式,减少服务启动时请求处理时长,达到降低服务启动时请求失败率的目的,提升用户使用体验。
Description
技术领域
本发明涉及网约车领域,尤其涉及一种服务启动请求失败的降低方法。
背景技术
服务涉及到数据库,第三方接口调用,Redis等基础组件的使用,一起完成某个完整的功能。比如:用户填写完上下车地址后,点击用车这个动作就涉及到以下过程:
客户端APP请求订单系统告知下单请求;订单系统调用用户系统,查询基本情况,将订单数据写入数据库订单表,记录对应订单,然后将订单数据缓存在Redis中,以提高在派单过程中及费用计算时查询订单数据的效率。服务完成后,订单调用计费系统进行费用计算,扣除用户费用。
由于应用服务和DB、Redis不在同一台机器上,甚至不在同一个机房,涉及到HTTP连接建立,第三方调用也是如此,彼此的应用部署在不同的机房,通过HTTP调用进行数据交互。
当收到用户请求时,连接池中无可用连接,再进行HTTP建连,会经历tcp三次握手的阶段,会浪费3次网络往返的时间。前1min左右的请求耗时整体增加50%以上,若整体时长超过上游最大超时时长,一般是2s,就会造成请求失败。造成每次发布新的版本,都会有一部分请求超时失败,用户体验较差,这对于互联网行业来说,是几乎不能容忍的。
现有技术中存在的缺陷包括:服务启动时,DB、Redis等组件连接池中无连接,需要新建,导致请求处理耗时增加;服务启动时,三方请求连接池中无连接,需要新建,导致三方调用耗时增加;服务启动时,请求失败导致用户软件使用体验差。
发明内容
鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种服务启动请求失败的降低方法。
根据本发明的一个方面,提供了一种服务启动请求失败的降低方法,所述降低方法包括:
服务启动请求需要的组件包括:Nginx服务器、数据库和Redis;
所述Nginx服务器检测服务上线,间隔1~2s请求一次服务,进行探活请求,服务启动成功,返回200OK,服务能够正常接收请求,并将请求正常转发;
监听应用启动事件;
当服务启动成功后,预先建立数据库连接,当接收到请求时,从连接池取出可用连接;
预先建立所述Redis连接,当接收到请求时,直接从所述连接池取出连接使用;
预先建立OKHTTP连接,当接收到请求,直接从所述连接池中取出连接使用;发布的服务开始稳定运行。
可选的,所述降低方法还包括:
所述连接池连接建立过程中,收到所述Nginx服务器探活请求,不响应,所述Nginx服务器识别为服务还未上线,不转发流量到新发布的服务器,只将流量转发到已稳定运行的服务器;
所述连接池连接建立完成,收到所述Nginx服务器探活请求时,返回Nginx200OK,告知服务已准备完成,接受请求,所述Nginx服务器收到200响应,开始正常进行流量转发。
可选的,所述预先建立所述Redis连接,当接收到请求时,直接从所述连接池取出连接使用之后还包括:
无已建立完成的数据库连接时,连接过程包括:
建立传输控制协议连接;
验证所述数据库权限,包括密码是否正确,是否有权限访问;
执行查询语句的过程。
可选的,所述预先建立所述Redis连接,当接收到请求时,直接从所述连接池取出连接使用还包括:
无预先建立的连接时,连接过程与所述数据库一致。
本发明提供的一种服务启动请求失败的降低方法,所述降低方法包括:服务启动请求需要的组件包括:Nginx服务器、数据库和Redis;所述Nginx服务器检测服务上线,间隔1~2s请求一次服务,进行探活请求,服务启动成功,返回200OK,服务能够正常接收请求,并将请求正常转发;监听应用启动事件;当服务启动成功后,预先建立数据库连接,当接收到请求时,从连接池取出可用连接;预先建立所述Redis连接,当接收到请求时,直接从所述连接池取出连接使用;预先建立OKHTTP连接,当接收到请求,直接从所述连接池中取出连接使用;发布的服务开始稳定运行。通过预建立连接的方式,节省连接建立的时间,减少服务启动时请求处理时长,达到降低服务启动时请求失败率的目的,提升用户使用体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种服务启动请求失败的降低方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。
下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,本发明是为了服务启动时,请求失败率而设计的,通过连接池连接预建立,伪装服务未启动,让Nginx延迟转发流量的方式来实现,目的在于降低服务发版时请求失败率,提高用户使用体验。具体步骤如下:
建立连接过程中使用到的组件包括:Nginx服务器,用于各服务之间沟通的枢纽,能够进行流量转发,限流,反向代理。
数据库MySQL:通用数据存储服务,关系型数据库,比如一条订单记录就是一行数据,能够支持范围查询,用来存储订单数据。
Redis:通用缓存服务,内存存储数据,数据以key-value形式存储,使用简单,value能够支持string、hash、list、geo等多种数据类型,使用广泛,存取效率极高,正常在1ms以内,此处用来缓存订单数据。
OKHTTP:通用的http连接池,也是一种轻量HTTP连接池组件。
步骤一:正常Nginx检测服务上线,间隔1~2s请求一次服务,进行探活请求,服务启动成功,就返回200OK,认为服务可以正常接收请求,将请求正常转发。
步骤二:监听应用启动事件,当服务启动成功时,执行如下步骤:
步骤三:预先建立DB连接,当接收到请求时,直接从连接池中取出可用连接,减少连接建立过程中的繁杂过程,直接传输请求,传送数据即可,无需再次建立连接。
无已建立完成的DB连接时,连接过程如下:
建立tcp连接,即tcp的三次握手
MySQL权限验证,包括密码是否正确,是否有权限访问等
执行SQL查询的过程(SQL解析、SQL优化器优化查询SQL、执行查询、返回数据)。
其中在连接池中有活跃连接的情况下,直接执行步骤3,节省40%左右的耗时。
步骤四:预先建立Redis连接,当接收到请求时,直接从连接池取出连接使用。
无预先建立的连接时,连接过程与DB基本一致,会比直接从连接池取出可用连接,多出tcp连接建立的时间和权限验证的时间,这两步对于Redis耗时占比更高,redis本身处理存取操作只需要1ms以内就可以完成,这两步时间占用就可以达到1ms左右,根据网络时延情况、在网络环境较差时,还可能更高。
步骤五:预先建立OKHTTP连接,当接收到请求,直接从连接池中取出连接使用。
步骤六:各连接池连接建立过程中,收到Nginx探活请求,不响应,让Nginx以为服务还未上线,不转发流量到新发布的服务器,只将流量转发到已稳定运行的服务器。
步骤七:各连接池连接建立完成,收到Nginx探活请求时,返回Nginx200OK,告知服务已准备完成,可以接受请求,Nginx收到200响应,开始正常进行流量转发。
步骤八:刚发布的服务开始稳定运行。
本次发明通过预建立连接的方式,节省连接建立的时间,减少服务启动时请求处理时长,达到降低服务启动时请求失败率的目的,提升用户使用体验。
有益效果:
在服务容器启动完成时,对各种连接池资源进行预建立,例如:数据库连接池、Redis连接池、OKHTTP连接池等,并在连接池预建立完成之前不响应Nginx的探活请求,直到连接池预建立完成,以避免连接池建立对服务响应的干扰,以达到降低服务启动时请求失败率的目的。
在加入服务预热机制之后,因服务启动导致的响应错误降为0,极大提高了系统的服务质量。
避免了服务发版导致的界面卡顿或响应慢,极大提升了用户使用使用体验。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种服务启动请求失败的降低方法,其特征在于,所述降低方法包括:
服务启动请求需要的组件包括:Nginx服务器、数据库和Redis;
所述Nginx服务器检测服务上线,间隔1~2s请求一次服务,进行探活请求,服务启动成功,返回200OK,服务能够正常接收请求,并将请求正常转发;
监听应用启动事件;
当服务启动成功后,预先建立数据库连接,当接收到请求时,从连接池取出可用连接;
预先建立所述Redis连接,当接收到请求时,直接从所述连接池取出连接使用;
预先建立OKHTTP连接,当接收到请求,直接从所述连接池中取出连接使用;发布的服务开始稳定运行。
2.根据权利要求1所述的一种服务启动请求失败的降低方法,其特征在于,所述降低方法还包括:
所述连接池连接建立过程中,收到所述Nginx服务器探活请求,不响应,所述Nginx服务器识别为服务还未上线,不转发流量到新发布的服务器,只将流量转发到已稳定运行的服务器;
所述连接池连接建立完成,收到所述Nginx服务器探活请求时,返回Nginx200OK,告知服务已准备完成,接受请求,所述Nginx服务器收到200响应,开始正常进行流量转发。
3.根据权利要求1所述的一种服务启动请求失败的降低方法,其特征在于,所述预先建立所述Redis连接,当接收到请求时,直接从所述连接池取出连接使用之后还包括:
无已建立完成的数据库连接时,连接过程包括:
建立传输控制协议连接;
验证所述数据库权限,包括密码是否正确,是否有权限访问;
执行查询语句的过程。
4.根据权利要求1所述的一种服务启动请求失败的降低方法,其特征在于,所述预先建立所述Redis连接,当接收到请求时,直接从所述连接池取出连接使用还包括:
无预先建立的连接时,连接过程与所述数据库一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111384822.0A CN114064149A (zh) | 2021-11-22 | 2021-11-22 | 一种服务启动请求失败的降低方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111384822.0A CN114064149A (zh) | 2021-11-22 | 2021-11-22 | 一种服务启动请求失败的降低方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064149A true CN114064149A (zh) | 2022-02-18 |
Family
ID=80278567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111384822.0A Pending CN114064149A (zh) | 2021-11-22 | 2021-11-22 | 一种服务启动请求失败的降低方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064149A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117322B1 (en) * | 2009-12-10 | 2012-02-14 | Google Inc. | Latency reduction on HTTP servers |
CN109951560A (zh) * | 2019-03-27 | 2019-06-28 | 努比亚技术有限公司 | 提高应用服务并发量及应用速度的方法、终端及存储介质 |
CN112612834A (zh) * | 2020-12-23 | 2021-04-06 | 瀚高基础软件股份有限公司 | 数据库中间件及其实现客户端与服务器连接的方法 |
CN112699152A (zh) * | 2021-01-07 | 2021-04-23 | 北京金万维科技有限公司 | 一种基于OpenResty实现的缓存方法 |
-
2021
- 2021-11-22 CN CN202111384822.0A patent/CN114064149A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117322B1 (en) * | 2009-12-10 | 2012-02-14 | Google Inc. | Latency reduction on HTTP servers |
CN109951560A (zh) * | 2019-03-27 | 2019-06-28 | 努比亚技术有限公司 | 提高应用服务并发量及应用速度的方法、终端及存储介质 |
CN112612834A (zh) * | 2020-12-23 | 2021-04-06 | 瀚高基础软件股份有限公司 | 数据库中间件及其实现客户端与服务器连接的方法 |
CN112699152A (zh) * | 2021-01-07 | 2021-04-23 | 北京金万维科技有限公司 | 一种基于OpenResty实现的缓存方法 |
Non-Patent Citations (3)
Title |
---|
F5科技: "N+增强能力系列(5) | 主动健康检查", pages 1 - 9, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/266349249> * |
方才兄: "数据库连接池的原理(与传统连接机制的对比)、作用与使用步骤", pages 1 - 8, Retrieved from the Internet <URL:https://blog.csdn.net/qq_36095679/article/details/92725805> * |
温柔的风: "高并发系统设计(六):如何减少频繁创建数据库连接的性能损耗?", pages 1 - 3, Retrieved from the Internet <URL:https://www.cnblogs.com/wt645631686/p/13192761.html> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103780679B (zh) | 基于http协议的长延时远程调用方法 | |
WO2016184175A1 (zh) | 数据库处理方法及装置 | |
CN104601702B (zh) | 集群远程过程调用方法及系统 | |
CN108182121B (zh) | 一种Android中控大屏系统模块间通信方法及系统 | |
CN108512903B (zh) | 一种异常信息处理方法、装置、存储介质及api网关 | |
WO2009097776A1 (zh) | 一种实现业务升级的系统、装置及方法 | |
CN113114760A (zh) | 一种基于异构设备的远程物联网平台的构建方法 | |
CN112328362A (zh) | 一种基于容器技术实现函数计算服务的方法 | |
US20200045139A1 (en) | Remote procedure call using quorum state store | |
CN112350914A (zh) | 基于MQTT云平台的Modbus通信方法及系统 | |
WO2021226781A1 (zh) | 防火墙规则的更新方法、装置、服务器及存储介质 | |
CN114064149A (zh) | 一种服务启动请求失败的降低方法 | |
CN110381143B (zh) | 作业提交执行方法、装置、设备及计算机存储介质 | |
CN108600349B (zh) | 连接池中的连接管理方法及装置 | |
CN112804301B (zh) | 设备状态的确定方法、装置、网关及存储介质 | |
CN109602413B (zh) | 心跳检测方法、装置、存储介质及服务器 | |
CN108052380B (zh) | 业务功能对接方法、装置、计算机设备及存储介质 | |
US8150944B2 (en) | Electronic apparatus with server device for managing setting data | |
CN113727138A (zh) | 一种hls内网回源方法 | |
CN113570071A (zh) | 一种联邦学习模型服务发布方法及系统 | |
CN113190624A (zh) | 基于分布式跨容器的异步转同步调用方法及装置 | |
CN106407194A (zh) | 一种信息查询方法及装置 | |
CN114374684B (zh) | 一种shell命令优化方法及系统 | |
CN110809020A (zh) | 一种基于冗余网络异步通信的高可靠数据传输方法 | |
CN117201577B (zh) | 基于pisa的跨平台api和spi的通讯方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |