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

摘要

极光始终秉承“以开发者为中心”的战略导向,极光推送(JPush)是国内领先的消息推送服务。极光推送(JPush)本质上是一种软件付费应用程序,结合当前主流云厂商基础施设,逐渐演进成了云上SaaS服务。作为SaaS服务,必然要考虑云原生架构。因此,在极光推送(JPush)日益成熟的今天,也开启了云原生架构的演进之路。

云原生简介

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

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

4ba1d4bfc2689f47eb84e881707d797c.jpeg

其中,

  • 微服务和容器化,主要是指以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),作为国内行业的领导者,也将持续致力于服务好我们的客户。除了继续迭代我们的硬产品能力,我们也还会继续深入的完善服务的云原生化,在服务的易用性、稳定性和效率上做持续的迭代和建设。未来,我们也将在以下几个方面继续努力:

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

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





关于极光

极光(Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的客户互动和营销科技服务商。成立之初,极光专注于为企业提供稳定高效的消息推送服务,凭借先发优势,已经成长为市场份额遥遥领先的移动消息推送服务商。随着企业对客户触达和营销增长需求的不断加强,极光前瞻性地推出了消息云和营销云等解决方案,帮助企业实现多渠道的客户触达和互动需求,以及人工智能和大数据驱动的营销科技应用,助力企业数字化转型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java后端设置服务器允许跨域

文章目录 1、实现2、一些问题关于各项请求头的作用关于预检请求 3、一些补充4、疑问点 1、实现 以下通过servlet的Filter给所有响应的header加了一些跨域相关的数据,以实现允许跨域。 import org.springframework.context.annotation.Configuration; import org.s…

数据可视化基础与应用-04-seaborn库从入门到精通01-02

总结 本系列是数据可视化基础与应用的第04篇seaborn,是seaborn从入门到精通系列第1-2篇。本系列的目的是可以完整的完成seaborn从入门到精通。主要介绍基于seaborn实现数据可视化。 参考 参考:数据可视化-seaborn seaborn从入门到精通01-seaborn介绍与load_datas…

RabbitMQ3.x之二_RabbitMQ所有端口说明及开启后台管理功能

RabbitMQ3.x之二_RabbitMQ所有端口说明及开启后台管理功能 文章目录 RabbitMQ3.x之二_RabbitMQ所有端口说明及开启后台管理功能1. RabbitMQ端口说明2. 开启Rabbitmq后台管理功能1. 查看rabbitmq已安装的插件2. 开启rabbitmq后台管理平台插件3. 开启插件后,再次查看插…

RSTP环路避免实验(华为)

思科设备参考:RSTP环路避免实验(思科) 一,技术简介 RSTP (Rapid Spanning Tree Protocol) 是从STP发展而来 • RSTP标准版本为IEEE802.1w • RSTP具备STP的所有功能,可以兼容STP运行 • RSTP和STP有所不同 减少了…

Tomcat下载安装以及配置

一、Tomcat介绍 二、Tomcat下载安装 进入tomcat官网,https://tomcat.apache.org/ 1、选择需要下载的版本,点击下载 下载路径一定要记住,并且路径中尽量不要有中文 8、9、10都可以,本博文以8为例 2、将下载后的安装包解压到指定位…

linux-开发板移植MQTT

将源码复制到共享文件夹 链接:https://pan.baidu.com/s/1kvvO-HhDMDXkQ_wlNtyW_A?pwd332i 提取码:332i 以下步骤教程里都写了,我这里边进行,方便大家对照 pc端 1.进入mqtt_lib, 解压open压缩包 2.按照教程复制这一句并运行&…

服务端应用多级缓存架构方案

服务端应用多级缓存架构方案 场景 20w的QPS的场景下,服务端架构应如何设计? 常规解决方案 可使用分布式缓存来抗,比如redis集群,6主6从,主提供读写,从作为备,不提供读写服务。1台平均抗3w并…

【算法专题--双指针算法】leecode-15.三数之和(medium)、leecode-18. 四数之和(medium)

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言1. 三数之和2. 解法&…

选择最佳图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D

文章目录 1、前言2、 图像处理工具效果对比2.1 Graphics2D实现2.2 Thumbnailator实现2.3 ImageJ实现2.4 JAI(Java Advanced Imaging)实现2.5 OpenCV实现 3、图像处理工具结果 1、前言 SVD(stable video diffusion)开放了图生视频的API,但是限…

使用GPT将文档生成问答对

根据文档生成问题列表 url https://api.openai.com/v1/chat/completions# 替换为您自己的API密钥 api_key sk-xxxxxxxxxmodel "gpt-3.5-turbo-16k"prompt1 #01 你是一个问答对数据集处理专家。 #02 你的任务是根据我给出的内容,生成适合作为问答对数…

Ubuntu deb文件 安装 MySQL

更新系统软件依赖 sudo apt update && sudo apt upgrade下载安装包 输入命令查看Ubuntu系统版本 lsb_release -a2. 网站下载对应版本的安装包 下载地址. 解压安装 mkdir /home/mysqlcd /home/mysqltar -xvf mysql-server_8.0.36-1ubuntu20.04_amd64.deb-bundle.tar# …

Elasticsearch性能优化:实战策略与最佳实践

-在数据密集型的应用场景中,Elasticsearch作为一个强大的搜索和分析引擎,能够提供快速的搜索能力和处理大规模数据的能力。然而,随着数据量的增长和查询需求的复杂化,对Elasticsearch的性能优化成为了维护高效、稳定服务的重要任务…

中间件学习

一、ES 场景:某头部互联⽹公司的好房业务,双⼗⼀前⼀天,维护楼盘的运营⼈员突然接到合作开发商的通知,需要上线⼀批热⻔的楼盘列表,上传完成后,C端⼩程序⽀持按楼盘的名称、户型、⾯积等产品属性全模糊搜索…

aardio - godking.json 【库】测试

godkong.json1 : 主要针对数值进行了处理。 1、内部创建了一个数值处理类,所有数值均以数值对象类型保存,以避免将数值识别为科学计数法文本。 2、读取数值成员时,需用 tostring() 转换为数值文本。 3、数值可以读取,可以赋值(数值…

Spring与Spring Boot:理解它们的区别与适用场景

引言 在Java开发领域,Spring和Spring Boot是两个非常重要的框架。它们被广泛应用于企业级应用开发、微服务架构构建等场景。尽管Spring Boot是Spring框架的一个扩展,但它们之间仍然存在一些重要区别。本文将详细介绍这些区别,帮助读者更好地…

【考研数学】张宇最新全年学习包

考研数学冲高分必备,张宇老师肯定榜上有名! 考研数学,其实就像一场没有硝烟的战斗。基础题是常规武器,中难题就是重型火炮,而压轴题呢,那就是核弹级别的存在!考研的战场,关键就在那…

【CSP考点回顾】二维前缀和数组(代码实现)

1. 初始化扩展的二维前缀和数组 创建一个大小为 (rows 1) x (cols 1) 的二维前缀和数组&#xff0c;其中 rows 和 cols 分别是原始数组的行数和列数。然后&#xff0c;我们按以下方式填充这个数组&#xff1a; void initPrefixSum(vector<vector<int>>& pr…

自动驾驶的几种名词

1. 自适应巡航控制&#xff08;ACC&#xff09; 自适应巡航控制&#xff08;Adaptive Cruise Control&#xff0c;ACC&#xff09;是一种汽车驾驶辅助系统&#xff0c;它可以根据前方车辆的速度和距离自动调整车辆的速度&#xff0c;以保持与前车的安全距离。ACC系统由控制层和…

使用ChatGPT的场景之gpt写研究报告,如何ChatGPT写研究报告

推荐写研究报告使用智能站&#xff1a; dayfire.cn/ 1. 确定研究主题 明确主题&#xff1a;在开始之前&#xff0c;你需要有一个清晰的研究主题。这将帮助AI更好地理解你的需求…

上位机图像处理和嵌入式模块部署(qmacvisual拟合圆和拟合椭圆)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们学习了拟合直线&#xff0c;今天继续学习下拟合圆和拟合椭圆。其实除了最后一步不同&#xff0c;两者的逻辑是差不多的。一般都是&#xf…