极光笔记 | EngageLab Push的多时区解决方案

news2024/11/27 6:38:15

01、引言

多时区问题一直是全球客户和终端用户面临的挑战之一。EngageLab Push 致力于解决这个问题,确保全球各地的终端用户可以平等地享受到同样的推送服务,同时让客户能够更好地管理不同时区的应用和对应的终端用户。

02、解决多时区问题的总体方案

1、在服务器端,所有涉及时间的信息统一以时间戳形式存储,

2、portal 端的展示,以用户给应用设置的时区对应的时间展示

3、终端和服务器交互协议中的时间以时间戳来传递,终端再根据本地时区信息将时间戳转换为本地时间

03、管理系统多时区

管理员在 portal 上创建应用,再给应用设置时区,这些信息都会保存到数据库中,跟时间相关的信息都以时间戳的格式存储在数据库中。当管理员查询应用相关信息时,对于时间相关信息,系统将时间戳转换成应用所在时区的本地时间展示给管理员

04、业务处理多时区

推送业务按推送时效性来分有两种推送方式,立即推送和定时推送,立即推送跟时区特性无关,点击推送时就立即推送,但是定时推送跟时区相关,到底是以应用所在时区的时间进行定时推送,还是以终端所在时区对应的时间进行定时推送呢,这两种定时推送都存在相应的场景。

 预设条件

如下图

  • 应用所在时区为东6区

  • 服务器部署在东8区

  • 终端用户分布在东4区、东1区、西3区

场景1:根据应用所在时区的时间进行定时推送场景

比如某款电商应用,计划在中午12点发起秒杀活动,希望在12点钟准时给用户推送提示用户进入秒杀页面参加活动。这种场景就需要用到根据应用所在时区的时间进行定时推送。

1、现在应用需要在东六区的2023-03-18 12:00:00 进行秒杀活动,于是在东六区的2023-03-18 10:00:00设置了一个定时推送任务,该任务的定时时间为应用(应用归属于组织,因此应用的时区继承了组织的时区)所在时区的2023-03-18 12:00:00

2、东六区的2023-03-18 12:00:00,转换为服务器的东8区的时间为:2023-03-18 14:00:00,所以在服务器的2023-03-18 14:00:00, 触发定时任务,将消息推送给对应的终端用户。

3、终端用户在同一时刻收到秒杀的推广消息。本地时间分别是

  • 东4区的2023-03-18 10:00:00

  • 东1区的2023-03-18 07:00:00

  • 西3区的2023-03-18 03:00:00

场景2:根据终端所在时区的时间进行定时推送场景

比如说有个早间新闻播报的应用,需要在早上8点定时将最新的资讯推送到终端用户,如果以应用所在时区的时间来推送,应用所在时区的早上8点可能是终端所在时区的凌晨3点钟,这个时候经消息推送给终端用户,显然是不合适的,因此需要以终端用户所在时区的早上8点进行定时推送。

1、管理人员设置了一个定时推送任务,该任务的定时时间为终端用户所在时区的2023-03-18 08:00:00进行推送

2、服务器定时扫描定时推送任务

  • 服务器发现该定时推送的目前中有东4区的终端用户,东4区的2023-03-18 08:00:00转换为服务器的东8区的时间为2023-03-18 12:00:00,所以在服务器的2023-03-18 12:00:00, 触发定时推送任务,将消息推送给东4区的终端用户。

  • 服务器发现该定时推送的目前中有东1区的终端用户,东1区的2023-03-18 08:00:00转换为服务器的东8区的时间为2023-03-18 15:00:00,所以在服务器的2023-03-18 15:00:00, 触发定时推送任务,将消息推送给东1区的终端用户。

  • 服务器发现该定时推送的目前中有西3区的终端用户,西3区的2023-03-18 08:00:00转换为服务器的东8区的时间为2023-03-18 19:00:00,所以在服务器的2023-03-18 19:00:00, 触发定时推送任务,将消息推送给西1区的终端用户。

3、终端用户都是本地时间的2023-03-18 08:00:00点收到推送消息

业务流程

1、终端时区的上报

每个终端在登陆服务器时,就把当前终端所在的时区上报给服务,服务器根据时区将用户信息分组存储

2、定时推送的设置

管理人员在设置定时推送任务时根据任务特性选择是按应用所在时区定时推送还是按终端所在时区定时推送。服务器将这些定时推送任务信息保存到数据库中

3、定时推送的触发

服务器会启动一个定时扫描进程,去扫描数据库中的定时推送任务是否达到某个时区所定时的时间,如果到了,就将消息推送推送给该时区的用户。

关于极光

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


 

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

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

相关文章

软件测试----软件开发模型

1、瀑布模型 (1)瀑布模型如下 (2)瀑布模型的缺点: 在瀑布模型中,测试是在编码结束后才介入,对软件开发流程前期质量是没有保障的 (3)采用瀑布模型的场景: …

31 KVM管理系统资源-管理虚拟内存NUMA

文章目录 31 KVM管理系统资源-管理虚拟内存NUMA31.1 NUMA简介31.2 配置Host-NUMA操作步骤 31.3 配置Guest-NUMA操作步骤 31 KVM管理系统资源-管理虚拟内存NUMA 31.1 NUMA简介 传统的多核运算使用SMP(Symmetric Multi-Processor)模式:将多个…

Flume系列:Flume 自定义Interceptor拦截器

目录 Apache Hadoop生态-目录汇总-持续更新 1:Interceptor拦截器的使用场景 2:Interceptor拦截器在采集流程中的位置 3:自定义Interceptor拦截器 pom.xml 拦截器java代码 打包上传 4:使用自定义的拦截器 方式一&#xff1…

Springboot +spring security,自定义认证和授权异常处理器

一.简介 在Spring Security中异常分为两种: AuthenticationException 认证异常AccessDeniedException 权限异常 我们先给大家演示下如何自定义异常处理器,然后再结合源码帮助大家进行分析 二.创建项目 如何创建一个SpringSecurity项目,前…

分布式锁和事务关系的细节

使用redssion在redis上以及结合自定义注解利用spring的环绕切面来实现分布式锁功能 代码示例 controller、service层 RequestMapping("insertNumber/{number}/{id}") public boolean insertNumber(PathVariable Long number,PathVariable Long id){return testSer…

rust 中protobuf生成与使用

首先创建一个项目proto 进入到这个文件夹中 创建我们的proto文件 初始化的项目结构是这个样子的 新建一个hello.proto文件内容如下 syntax "proto3";package hello;service Greeter {rpc SayHello (HelloRequest) returns (HelloReply) {} }message HelloRequest …

干货 | 师兄手把手教你如何踏上科研道路

Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 今天,邀请到鲁小白,给大家分享一下他踏上科研道路的心路历程。 大家好,我是鲁小白,我真正进入科研的时间,研究生3年再…

【C++】类和对象——类的引入、类的访问限定符、类的作用域、类的实例化、类的储存、this指针的引出和特性

文章目录 1.类的引入2.类的访问限定符3.类的作用域4.类的实例化5.类的储存6.this指针6.1this指针的引出6.2this指针的特性 1.类的引入 C是在C的基础上加以扩展。 在C语言中,我们想要让一个类型含有多种成员变量,我们使用结构体;而在C中我们可…

Doris节点扩容及数据表

扩容和缩容 上篇文章简单讲了doris的安装,本章分享的是doris中fe和be节点的扩容缩容以及doris的数据表1、FE 扩容和缩容 使用 MySQL 登录客户端后,可以使用 sql 命令查看 FE 状态,目前就一台 FE mysql -h linux -P 9030 -uroot -p mysql&…

python+django乡村居民数据的可视化平台

本论文主要论述了如何使用Django框架开发一个乡村振兴数据的可视化平台 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述乡村振兴数据的可视化平台的当前背景以…

拼多多二面,原来是我对自动化测试的理解太浅了

如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢? 01 什么是自动化 有很多人做了很长时间的自动化但却连自动化的概念都不清楚,这样的人也是很悲…

Android之 MVC到MVVM架构发展和封装

一 简介 1.1 软件架构发展趋势是解耦,即分离数据层和视图层,使得数据层专注于业务的数据和逻辑处理。从而提高代码的可读可编辑效率,提高团队协作能力,项目的生产能力,降低后期维护成本。 1.2 Android架构发展MVC -…

计算机组成原理实验四 微程序控制器实验报告

我班算是几乎最后一个做实验的班级了,报告参考了一些朋友提供的数据加上一些自己的主观拙见,本人水平有限加之制作仓促难免有错误,望大家批评指正。 4.1 微程序控制器实验 一、实验目的 (1) 掌握微程序控制器的组成原理。 (2) 掌握微程序的…

【蓝桥杯计算思维题】少儿编程 蓝桥杯青少组计算思维真题及详细解析第5套

少儿编程 蓝桥杯青少组计算思维真题及详细解析第5套 1、北京冬奥会经历 17( ),中国体育代表团收获的金牌数和奖牌数均创历史新高 A、年 B、月 C、天 D、小时 答案:C 考点分析:主要考查小朋友们对时事的了解,北京冬奥会总共经历了17天,所以答案C 2、下面图形的周长是…

Python系列模块之标准库json详解

感谢点赞和关注 ,每天进步一点点!加油! 目录 一、Json介绍 二、JSON 函数 2.1 json.dumps 2.2 json.loads 2.3 实战案例:钉钉消息发送 一、Json介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它使得人们…

2023年21个最佳的Ruby测试框架

作者 | Veethee Dixit 测试人员总是在寻找最好的自动化测试框架,它能提供丰富的功能,并且语法简单、兼容性好、执行速度快。如果你选择将Ruby与Selenium结合起来进行web测试,那么可能需要搜索基于Ruby的测试框架进行web应用程序测试。 Ruby…

【Python】函数式编程第二弹

知识目录 一、写在前面✨二、最小公倍数三、移除数字四、总结撒花😊 一、写在前面✨ 大家好!我是初心,希望我们一路走来能坚守初心! 今天跟大家分享的文章是 Python函数式编程第二弹,再次以两个简单的例子带大家更好…

selenium UI自动化中文件上传的两种方式

前言 文件上传是自动化中很常见的一个功能,那么对于文件上传你又有多少了解呢?请往下看 1、被测产品中文件上传的功能非常普遍,一般情况下需要将准备好的文件放在预定的路径下,然后在自动化测试的脚本中,去预置的路径…

国内可以免费使用的GPT

一、wetab新标签页 教程:https://diwlwltzssn.feishu.cn/docx/MnHhdvxATomBnMxfas2cm8wWnVd 装GPT界面:https://microsoftedge.microsoft.com/addons/detail/wetab%E5%85%8D%E8%B4%B9chatgpt%E6%96%B0%E6%A0%87%E7%AD%BE%E9%A1%B5/bpelnogcookhocnaokfp…

TeX Live和TeX studio安装

最近想要研究一下Letex怎么写论文,然后就查阅资料了解了一下,先安装上两个软件,怎么用在研究研究,这里记录一下软件安装过程,方便以后查阅。 TeX Live和TeX studio安装 Latex介绍TexLive安装下载TexLive的安装包安装Te…