4.2.4 MSE最佳实践
消息队列Kafka版是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。消息队列Kafka版广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。
4.2.4.1无损上下线
绝多数的软件生产安全事故发在应用上下线发布阶段,尽管通过遵守业界约定俗成的可灰度、可观测和可回滚的安全生产三板斧,可以最小限度的规避发布过程中由于应用本身代码问题对用户造成的影响。但对于并发流量情况下的短时间流量有损问题却仍然无法解决。基于此,阿里云微服务引擎MSE在应用发布过程中,提供了应用下线时自适应等待和主动通知、应用上线时就绪检查与微服务生命周期对齐以及服务预热等技术手段,实现微服务应用无损上下线发布,有效规避线上发布所出现的流量损失,降低研发运维成本。
图:主动通知
图:自适应等待
4.2.4.1微服务架构之应用配置
应用配置可解决的问题主要包括以下方面:
1.本地静态配置,采用本地静态配置,导致运行时无法动态修改。配置格式不统一,散乱,难以管理,有的用XML格式,有的用properties,有的用DB等
2.生产事故,容易将非生产配置带到生产环境,从而引发重大事故
3.配置修改困难,部署多台节点时,修改配置费时费力,周期长。
4.缺少安全审计和应用版本控制能力,无法追溯责任人,无法得知修改具体内容,无法确定具体修改时间,无法及时回滚应用。
针对上述问题,应用配置中心应运而生。用户在通过新应用接入或版本升级方式即可使用应用配置能力。MSE后端与应用配置服务(ahas-switch)整合而复用应用配置相关功能,解耦应用配置具体实现。控制台推送配置项由应用配置服务处理,配置项通过ACM组件持久化,应用重启或扩容阶段可读取持久化配置。
图:应用配置中心
4.2.4.1微服务限流降级
微服务的稳定性一直是开发者时常关注的话题。随着业务从单体架构向分布式架构演进以及部署形式的变化,服务之间的依赖关系变得越来越复杂,业务系统也面临着巨大的高可用挑战。如以下场景:演唱会抢票瞬间洪峰流量导致系统超出最高负载,load飙高,用户无法正常下单。影响微服务可用性的因素有非常多,而这些不稳定的场景可能会导致严重后果。我们从微服务流量的视角来看,可以粗略分为两类常见的场景:
1.服务自身流量超过承载能力导致不可用。例如激增流量、批量任务投递导致服务负载飙高,无法正常处理请求。
2.服务因依赖其他不可用服务,导致自身连环不可用。例如我们的服务可能依赖好几个第三方服务,假设某个支付服务出现异常,调非常慢,而调用端又没有有效地进行预防与处理,则调用端的线程池会被占满,影响服务自身正常运转。在分布式系统中,调用关系是网状的、错综复杂的,某个服务出现故障可能会导致级联反应,导致整个链路不可用。
针对这些不稳定的场景,MSE服务治理依托AHAS提供全方位的高可用流量防护能力。AHAS基于阿里限流降级组件Sentinel的稳定性防护能力,以流量为切入点,从流量控制、并发控制、熔断降级、热点防护、系统自适应保护等多个维度来帮助保障服务的稳定性,覆盖微服务、云原生网关、Service Mesh等几大场景。AHAS Sentinel不仅在阿里内部淘宝、天猫等电商领域有着广泛的应用,在互联金融融、在线教育、游戏、直播播业和其他大型政央企行业也有着大量的实践。
图:流量防护