喜马拉雅自研网关架构演进过程

白癜风误区 https://m-mip.39.net/nk/mipso_5587271.html

责编:乐乐

来自:彭荣新

正文

背景网关是一个比较成熟了的产品,基本上各大互联网公司都会有网关这个中间件,来解决一些公有业务的上浮,而且能快速的更新迭代,如果没有网关,要更新一个公有特性,就要推动所有业务方都更新和发布,那是效率极低的事,有网关后,这一切都变得不是问题,喜马拉雅也是一样,用户数增长达到6亿多的级别,Web服务个数达到+,目前我们网关日处理亿加次调用,单机QPS高峰达到4w+。网关除了要实现最基本的功能反向代理外,还有公有特性,比如黑白名单、流控、鉴权、熔断、API发布、监控和报警等,我们还根据业务方的需求实现了流量调度、流量Copy、预发布、智能化升降级、流量预热等相关功能,下面就我们网关在这些方便的一些实践经验以及发展历程,下面是喜马拉雅网关的演化过程:第一版:TomcatNIO+AsyncServlet网关在架构设计时最为关键点,就是网关在接收到请求,调用后端服务时不能阻塞Block,否则网关的吞吐量很难上去,因为最耗时的就是调用后端服务这个远程调用过程,如果这里是阻塞的,那你的Tomcat的工作线程都Block主了,在等待后端服务响应的过程中,不能去处理其他的请求,这个地方一定要异步。架构图如下:这版我们实现单独的Push层,作为网关收到响应后,响应客户端时,通过这层实现,和后端服务的通信是HttpNioClient,对业务的支持黑白名单,流控,鉴权,API发布等功能,这版只是功能上达到网关的邀请,但是处理能力很快就成了瓶颈,单机QPS到5k的时候,就会不停的fullgc,后面通过dump线上的堆分析,发现全是Tomcat缓存了很多



转载请注明地址:http://www.jiankongxingye.com/jksp/26845088.html
  • 上一篇文章:
  • 下一篇文章: 没有了