极光笔记|极光消息推送服务的云原生实践

发布时间:2024-03-07 13:46:49 | 来源:中国网 | 作者:辛文 | 责任编辑:赵茜

摘要

极光是多年深耕开发者服务领域的公司,极光推送(JPush),是国内行业的领导者。极光推送(JPush)本质上是一种软件付费应用程序,结合当前主流云厂商基础施设,逐渐演进成了云上SaaS服务。做为SaaS服务,必然要考虑云原生架构。因此,在极光推送(JPush)日益成熟的今天,也开启了云原生架构的演进之路。

云原生简介

云原生,即Cloud + Native,Cloud表示使用云服务,通常结合传统云厂商提供的基础设施;Native表示应用服务从服务设计开始就考虑接入云厂商的基础设施,充分利用云平台的弹性和分布式优势。

云原生技术理论,经多年发展,其主要可概括归纳为以下四点:微服务、DevOps、持续交付和容器化。

其中,

微服务和容器化,主要是指以k8s为底座的微服务和容器化,利用k8s平台的能力,快速搭建稳定性和可靠性更好的应用。

持续交付和DevOps,则是指以CI/CD为核心,结合各种发布和运维工具,提供小步快跑,持续迭代,持续交付的全套开发、发布及运维的自动化流程,提高运维效率,降低运维出错风险。

总之,云原生技术,借助云计算平台(通常基础设施包括IaaS和PaaS)快速发展的东风,再结合虚拟化和分布式框架技术的成熟和普及,传统SaaS应用走向云原生化已是大势所趋。

云原生服务的优势

云原生架构服务之所以备受青睐,主要因为其有如下优势:

高效:开发人员无需依赖特定硬件,而是使用DevOps流程构建随时可部署的容器化应用,可在不关闭应用的情况下轻松快速完成服务更新。

高可用:云原生服务通过分布式能力,使应用具备超强的弹性和高可用能力。

降成本:一方面,利用云厂商的基础设施,不用再购买价格高昂的服务器;另一方面,利用云原生服务的弹性能力,可以快速便捷的动态调整使用的资源,即根据服务的高峰期和低谷期,更合理的使用资源。

云原生消息推送服务改造

为了适配好云原生相关技术,极光推送(JPush)相应也进行了大规模的服务改造。其中,包括微服务架构优化,服务容器化改造,Kubernetes平台适配,可观测性改造,以及服务安全改造等等。

微服务架构改造

微服务架构的改造,主要包含以下几点:

业务架构优化

1.合理的云服务组件切换,如云厂商的存储和缓存服务,提升系统的稳定性

2.业务流程梳理优化,精简调用流程

3.服务调用方式优化,合理使用RPC和消息队列传递消息,兼顾性能与消息传递解耦能力

服务微服务化改造

1.选择合适的微服务化框架对服务进行改造,更好的契合云原生架构

2.优化微服务的请求失败重试,熔断,过载保护,以及负载均衡的策略,提升系统可靠性

3.选择合适服务注册中心,极光服务选择了nacos,并线上实践了大规模集群的管理能力

服务容器化改造

1.微服务的容器化改造,去掉如本地缓存,服务进程间共享内存等依赖

2.适配k8s,并搭建可视化平台管理工具,方便快速支持k8s的线上容器管理和运维

可观测性改造

服务的可观测性也是云原生服务重要的一环,可观测性包括,监控告警、日志和链路追踪三大块。

监控告警

1.通过Prometheus,自定义业务与资源的上报指标,并制定监控和告警规则

2.通过Grafana,将上报的监控指标整理成可视化监控大盘

3.通过消息,邮件,电话的方式上报不同级别的错误告警,及时做好线上问题的跟进

日志

1.搭建ELK的系统化日志管理平台,方便追踪和定位线上问题

链路追踪

1.通过opentrace搭建部分关键服务间调用的链路追踪,及时关注重要消息的轨迹

2.优化业务层消息生命周期数据,完善服务推送消息的链路追踪统计

服务安全改造

极光在云原生化服务的过程中,也非常重视安全问题,主要做了以下几点改造:

对API进入极光服务集群的流量,严格执行零信任安全策略,对入网中的一切行为不信任,做到始终验证,持续监测

使用云厂商的DDos防护能力,为线上服务防攻击做好保障

云原生改造实践收获

通过极光服务的云原生化改造的不断推进落地,JPush服务也收获颇丰:

稳定性的持续提升,SLA持续保持99.9%以上

开发和运维效率的持续提升,可以使用更少的人力维护好更大规模的服务,通过监控告警等可观测能力快速便捷的了解系统实时的运行状态,以及线上问题的及时跟进和修复

更好的关注资源实时使用的情况,及时控制服务成本

未来演进之路

极光推送(JPush),作为国内行业的领导者,也将持续致力于服务好我们的客户。除了继续迭代我们的硬产品能力,我们也还会继续深入的完善服务的云原生化,在服务的易用性、稳定性和效率上做持续的迭代和建设。未来,我们也将在以下几个方面继续努力:

基于云原生技术,搭建更完善的服务管理发布平台,完善好开发和运维工具,更好的提高服务管理运维效率

由于极光消息服务体量较大,我们还会持续优化提升更大量级,更高峰值消息实时推送性能