Browsed by
日期:2020年6月10日

一个可快速落地的微服务网关架构实现

一个可快速落地的微服务网关架构实现

閱讀本文約花費: 12 (分鐘) 本文从问题出发,从系统高可用性和高性能出发,系统的总结了微服务网关架构的技术要点,并且对相关技术点的原理和应用做了概要描述,希望对大家的学习有所帮助。 随着应用与技术越来越复杂,无论研发过程或者是运维过程都面临更多困难,为了应对上述困难,马丁提出了微服务概念,这几年微服务应用逐渐流行开来。微服务应用建设,应当是先建设微服务基础设施,然后在这个基础上拆分应用,可见微服务基础设施建设是实施微服务的核心,而微服务网关就是其中最重要的微服务基础设施之一。 传统网络层的网关主要作用是链接和协议转换,而微服务网关处于应用层,其主要功能是路由转发,当然在微服务环境中,网关作为外部请求和内部系统的桥梁(外部网关)或者内部系统之间转发的桥梁(内部网关),一定会面临很多新的挑战。比如: 请求流量挑战,流量随着时间推移不断增长,或者流量的峰值超出系统处理极 系统稳定性,由于网关关联了多个系统,无论哪个系统出现延迟或者异常都可能导致网关不稳定 微服务网关职责划分,正确的职责划分可以优化整个微服务体系,使得整个系统最优雅 微服务网关分析 从外部环境看微服务网关面对上述挑战,因此需要深入分析。首先面对流量的挑战,导致流量变化可能是正常请求也可能是异常请求,这时需要系统自动感知到,如果是异常流量而且接近峰值时,能自动降级或者限制该类请求,如果是正常请求则应该自动扩容,当流量下降…

Read More Read More

线程池运用不当的一次线上事故

线程池运用不当的一次线上事故

閱讀本文約花費: 11 (分鐘)在高并发、异步化等场景,线程池的运用可以说无处不在。线程池从本质上来讲,即通过空间换取时间,因为线程的创建和销毁都是要消耗资源和时间的,对于大量使用线程的场景,使用池化管理可以延迟线程的销毁,大大提高单个线程的复用能力,进一步提升整体性能。 今天遇到了一个比较典型的线上问题,刚好和线程池有关,另外涉及到死锁、jstack命令的使用、JDK不同线程池的适合场景等知识点,同时整个调查思路可以借鉴,特此记录和分享一下。 01 业务背景描述 该线上问题发生在广告系统的核心扣费服务,首先简单交代下大致的业务流程,方便理解问题。 绿框部分即扣费服务在广告召回扣费流程中所处的位置,简单理解:当用户点击一个广告后,会从C端发起一次实时扣费请求(CPC,按点击扣费模式),扣费服务则承接了该动作的核心业务逻辑:包括执行反作弊策略、创建扣费记录、click日志埋点等。 02 问题现象和业务影响 12月2号晚上11点左右,我们收到了一个线上告警通知:扣费服务的线程池任务队列大小远远超出了设定阈值,而且队列大小随着时间推移还在持续变大。详细告警内容如下: 相应的,我们的广告指标:点击数、收入等也出现了非常明显的下滑,几乎同时发出了业务告警通知。其中,点击数指标对应的曲线表现如下: 该线上故障发生在流量高峰期,持续了将近30分钟后才恢复正常。 03 问题调查和事故解决过程 下面…

Read More Read More