前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >携程2015 Open House获奖项目:Gateway

携程2015 Open House获奖项目:Gateway

作者头像
携程技术
发布2018-02-23 10:46:17
4590
发布2018-02-23 10:46:17
举报
文章被收录于专栏:携程技术携程技术

Gateway

Ctrip Tech

起因:

携程的无线发展和其他公司类似,经历了一个从弱势到强势的过程,这是市场决定的。最初的解决方案是集中式的,即有一个独立的无线部门,来负责提供所有业务线的无线服务。在最初时没有问题,但随着发展,几年后,业务几经更替,早一不是原先的样子,无线也成为了主站场,拼响应速度,拼更新速度,拼业务多样性。

但提供服务的还是单一应用,并包含了所有部门的无线服务。这个应用已经变得臃肿不堪,逻辑复杂,业务之间相互影响,排错困难,一个业务线需要发布,所有业务线服务等于发了一遍。更困难的在于,逻辑复杂到已经无人能够完全掌控,增加新业务逻辑或修改老的业务逻辑,无人敢于操作,此方案已经无法满足当前需要,解耦迫在眉睫。

解耦不是一蹴而就的,而发出去的客户端就是泼出去的水。所以需要一个在不变用户请求的情况下,支持逐步解耦的新老架构更替方案,Gateway应运而生,它做到如下几方面:

1. 作为中间层,透明存在

2. 原样接收移动端请求,将其转发到中央服务

3. 将某服务从中央服务解耦出来独立存在

4. Gateway识别出此服务的请求,将其转发到新服务

5. 重复3、4直到解耦完毕

过程:

Gateway支持的解耦过程,首先解决的是基于http协议的html5服务。从14年4月份上线到7月份已经基本完成,中间基本没出现什么问题。接下来开始攻克流量更大的Native App, 它走的是自定义Tcp协议,并且有5个协议版本,且每个协议间又分压缩非压缩请求,加密非加密请求。但有前面h5的经验,从14年8月初开始开发,到9月初完成上线,到15年初已经完成全部解耦。这是一份不错的答卷。

架构:

gateway项目并非是从0开始,而是站在了巨人的肩膀。这个巨人就是Netflix。我们研究了大量Netflix的开源项目:Zuul、Archaius、Hystrix、Eureka, 将这些项目整合,接合携程业务场景再开发,推出了H5Gateway和TcpGateway.

功能:

Gateway提供了如下功能:路由、隔离、限流、熔断、返回、监控熔断。

路由:

路由是核心功能,需要根据各种条件将请求路由到正确的目的地。在实现上采用了路由服务,Gateway定期从路由服务获取路由表,达到了解耦、实时更新的效果。

隔离:

由于Gateway接收了所有业务请求,请求多种多样,当某类请求出问题时,不能影响其他请求的处理。对此,Gateway实现了资源隔离,防止某类请求将资源耗光,继而影响到其他服务。

限流:

对于任何一类请求,都应该设置容量上限,并不能无限制处理。Gateway可以为每类请求设置并发上限,当到达上限时,Gateway将不在转发请求,而是直接返回,保护后端服务。如果在后端服务过载的情况下,仍然转发请求,只会恶化问题。

熔断:

当一个服务在不能提供服务时,Gateway如果断续向它转发请求,不但不能解决问题,往往还会恶化问题。Gateway引入了一个熔断机制,当某一服务在过去一段时间内的错误比率到达一个阈值,Gateway则停止向该服务转发请求,称之为熔断,特定时间过去后,Gateway会探测此服务是否恢复正常,正常则开始正常转发,若不正常继续熔断。

反爬:

Gateway积极对接安全接口,会根据ip、clientId、及算法校验阻断非法请求,保护后端服务。

监控报警:

Gateway接入了Cat、Clog、并对接了运维报警工具。当出现问题时,会及时报警,尽早发现问题,减少损失。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 携程技术中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档