极光笔记|极光消息推送服务的云原生实践
发布时间: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),作为国内行业的领导者,也将持续致力于服务好我们的客户。除了继续迭代我们的硬产品能力,我们也还会继续深入的完善服务的云原生化,在服务的易用性、稳定性和效率上做持续的迭代和建设。未来,我们也将在以下几个方面继续努力:
基于云原生技术,搭建更完善的服务管理发布平台,完善好开发和运维工具,更好的提高服务管理运维效率
由于极光消息服务体量较大,我们还会持续优化提升更大量级,更高峰值消息实时推送性能