如何快速实现一个定时器

来源:腾讯云 2023-03-23 15:08:51

导语

定时器(Timer)是一种在业务开发中常用的组件,主要用在执行延时通知任务上。本文以笔者在微信工作中的实践作为基础,介绍如何使用平时部门最常用的组件快速实现一个业务常用的分布式定时器服务。同时介绍了过程中遇到问题的一些解决方案,希望能够给类似场景提供一些解决思路。

1.什么是定时器

定时器(Timer)是一种在指定时间开始执行某一任务的工具(也有周期性反复执行某一任务的Timer,我们这里暂不讨论)。它常常与延迟队列这一概念关联。 那么在什么场景下我才需要使用定时器呢?


(资料图片仅供参考)

我们先看看以下业务场景:

当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存?如何定期检查处于退款状态的订单是否已经退款成功?新创建店铺,N天内没有上传商品,系统如何知道该信息,并发送激活短信?

为了解决以上问题,最简单直接的办法就是定时去扫表。每个业务都要维护一个自己的扫表逻辑。 当业务越来越多时,我们会发现扫表部分的逻辑会非常类似。我们可以考虑将这部分逻辑从具体的业务逻辑里面抽出来,变成一个公共的部分。这个时候定时器就出场了。

2.定时器的本质

一个定时器本质上是这样的一个数据结构:deadline越近的任务拥有越高优先级,提供以下几种基本操作:

Add 新增任务Delete 删除任务Run 执行到期的任务/到期通知对应业务处理Update 更新到期时间 (可选)

Run通常有两种工作方式:

1.轮询

每隔一个时间片就去查找哪些任务已经到期;

2.睡眠/唤醒

不停地查找deadline最近的任务,如到期则执行;否则sleep直到其到期。

在sleep期间,如果有任务被Add或Delete,则deadline最近的任务有可能改变,线程会被唤醒并重新进行1的逻辑。

它的设计目标通常包含以下几点要求:

支持任务提交(消息发布)、任务删除、任务通知(消息订阅)等基本功能。消息传输可靠性:消息进入延迟队列以后,保证至少被消费一次(到期通知保证At-least-once ,追求Exactly-once)。数据可靠性:数据需要持久化,防止丢失。高可用性:至少得支持多实例部署。挂掉一个实例后,还有后备实例继续提供服务,可横向扩展。实时性:尽最大努力准时交付信息,允许存在一定的时间误差,误差范围可控。

3.数据结构

下面我们谈谈定时器的数据结构。定时器通常与延迟队列密不可分,延时队列是什么?顾名思义它是一种带有延迟功能的消息队列。而延迟队列底层通常可以采用以下几种数据结构之一来实现:

有序链表,这个最直观,最好理解。堆,应用实例如Java JDK中的DelayQueue、Go内置的定时器等。时间轮/多级时间轮,应用实例如Linux内核定时器、Netty工具类HashedWheelTimer、Kafka内部定时器等。

这里重点介绍一下时间轮(TimeWheel)。一个时间轮是一个环形结构,可以想象成时钟,分为很多格子,一个格子代表一段时间(越短Timer精度越高),并用一个List保存在该格子上到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应List中所有到期的任务。任务通过取模决定应该放入哪个格子。示意图如下所示:

如果任务的时间跨度很大,数量也多,传统的单轮时间轮会造成任务的round很大,单个格子的任务List很长,并会维持很长一段时间。这时可将Wheel按时间粒度分级(与水表的思想很像),示意图如下所示:

时间轮是一种比较优雅的实现方式,且如果采用多级时间轮时其效率也是比较高的。

4.业界实现方案

业界对于定时器/延时队列的工程实践,则通常基于以下几种方案来实现:

基于Redis ZSet实现。采用某些自带延时选项的队列实现,如RabbitMQ、Beanstalkd、腾讯TDMQ等。基于Timing-Wheel时间轮算法实现。

其中《你真的知道怎么实现一个延迟队列吗?》一文详细介绍了具体的实现方式,大家有兴趣可以阅读下。

5.方案详述

介绍完定时器的背景知识,接下来看下我们系统的实现。我们先看一下需求背景。在我们组的实际业务中,有延迟任务的需求。一种典型的应用场景是:商户发起扣费请求后,立刻为用户下发扣费前通知,24小时后完成扣费;或者发券给用户,3天后通知用户券过期。基于这种需求背景,我们引出了定时器的开发需求。

我们首先调研了公司内外的定时器实现,避免重复造轮子。调研了诸如例如公司外部的Quartz、有赞的延时队列等,以及公司内部的PCG tikker、TDMQ等,以及微信支付内部包括营销、代扣、支付分等团队的一些实现方案。最后从可用性、可靠性、易用性、时效性以及代码风格、运维代价等角度考虑,我们决定参考前人的一些优秀的技术方案,并根据我们团队的技术积累和组件情况,设计和实现一套定时器方案。

首先要确定定时器的存储数据结构。这里借鉴了时间轮的思想,基于微信团队最常用的分布式存储组件tablekv进行任务的持久化存储。使用到tablekv的原因是它天然支持按uin分表,分表数可以做到千万级别以上;其次其单表支持的记录数非常高,读写效率也很高,还可以如mysql一样按指定的条件筛选任务。

我们的目标是实现秒级时间戳精度,任务到期只需要单次通知业务方。故我们方案主要的思路是基于tablekv按任务执行时间分表,也就是使用使用方指定的start_time(时间戳)作为分表的uin,也即是时间轮bucket。为什么不使用多轮时间轮?主要是因为首先kv支持单表上亿数据, 其二kv分表数可以非常多,例如我们使用1000万个分表需要约115天的间隔才会被哈希分配到同一分表内。故暂时不需要使用到多轮时间轮。

最终我们采用的分表数为1000w,uin=时间戳mod分表数。这里有一个注意点,通过mod分表数进行Key收敛, 是为了避免时间戳递增导致的key无限扩张的问题。示例图如下所示:

任务持久化存储之后,我们采用一个Daemon程序执行定期扫表任务,将到期的任务取出,最后将请求中带的业务信息(biz_data添加任务时带来,定时器透传,不关注其具体内容)回调通知业务方。这么一看流程还是很简单的。

这里扫描的流程类似上面讲的时间轮算法,会有一个指针(我们在这里不妨称之为time_pointer)不断向后移动,保证不会漏掉任何一个bucket的任务。这里我们采用的是commkv(可以简单理解为可以按照key-value形式读写的kv,其底层仍是基于tablekv实现)存储CurrentTime,也就是当前处理到的时间戳。每次轮询时Daemon都会通过GetByKey接口获取到CurrentTime,若大于当前机器时间,则sleep一段时间。若小于等于当前机器时间,则取出tablekv中以CurrentTime为uin的分表的TaskList进行处理。本次轮询结束,则CurrentTime加一,再通过SetByKey设置回commkv。这个部分的工作模式我们可以简称为Scheduler。

Scheduler拿到任务后只需要回调通知业务方即可。如果采用同步通知业务方的方式,由于业务方的超时情况是不可控的,则一个任务的投递时间可能会较长,导致拖慢这个时间点的任务整体通知进度。故而这里自然而然想到采用异步解耦的方式。即将任务发布至事件中心(微信内部的高可用、高可靠的消息平台,支持事务和非事务消息。由于一个任务的投递到事件中心的时间仅为几十ms,理论上任务量级不大时1s内都可以处理完。此时time_pointer会紧跟当前时间戳。当大量任务需要处理时,需要采用多线程/多协程的方式并发处理,保证任务的准时交付。broker订阅事件中心的消息,接受到消息后由broker回调通知业务方,故broker也充当了Notifier的角色。整体架构图如下所示:

主要模块包括:

任务扫描Daemon:充当Scheduler的角色。扫描所有到期任务,投递到事件中心,让它通知broker,由broker的Notifier通知业务方。

定时器broker:集业务接入、Notifier两者功能于一身。

任务状态机图如下所示,只有两种状态。当任务插入kv成功时即为pending状态,当任务成功被取出并通知业务方成功时即为finish状态。

6.实现细节与难点思考

下面就上面的方案涉及的几个技术细节进行进一步的解释。

6.1 业务隔离

通过biz_type定义不同的业务类型,不同的biz_type可以定义不同的优先级(目前暂未支持),任务中保存biz_type信息。

业务信息(主键为biz_type)采用配置中心进行配置管理。方便新业务的接入和配置变更。业务接入时,需要在配置中添加诸如回调通知信息、回调重试次数限制、回调限频等参数。业务隔离的目的在于使各个接入业务不受其他业务的影响,这一点由于目前我们的定时器用于支持本团队内部业务的特点,仅采取对不同的业务执行不同业务限频规则的策略,并未做太多优化工作,就不详述了。

6.2 时间轮空转问题

由于1000w分表,肯定是大部分Bucket为空,时间轮的指针推进存在低效问题。联想到在饭店排号时,常有店员来登记现场尚存的号码,就是因为可以跳过一些号码,加快叫号进度。同理,为了减少这种“空推进”,Kafka引入了DelayQueue,以bucket为单位入队,每当有bucket到期,即queue.poll能拿到结果时,才进行时间的“推进”,减少了线程空转的开销。在这里类似的,我们也可以做一个优化,维护一个有序队列,保存表不为空的时间戳。大家可以思考一下如何实现,具体方案不再详述。

6.3 限频

由于定时器需要写kv,还需要回调通知业务方。因此需要考虑对调用下游服务做限频,保证下游服务不会雪崩。这是一个分布式限频的问题。这里使用到的是微信支付的限频组件。保证1.任务插入时不超过定时器管理员配置的频率。 2.Notifier回调通知业务方时不超过业务方申请接入时配置的频率。这里保证了1.kv和事件中心不会压力太大。2.下游业务方不会受到超过其处理能力的请求量的冲击。

6.4 分布式单实例容灾

出于容灾的目的,我们希望Daemon具有容灾能力。换言之若有Daemon实例异常挂起或退出,其他机器的实例进程可以继续执行任务。但同时我们又希望同一时刻只需要一个实例运行,即“分布式单实例”。所以我们完整的需求可以归纳为“分布式单实例容灾部署”

实现这一目标,方式有很多种,例如:

接入“调度中心”,由调度中心来负责调度各个机器各节点在执行任务前先分布式抢锁,只有成功占用锁资源的节点才能执行任务各节点通过通信选出“master"来执行逻辑,并通过心跳包持续通信,若“master”掉线,则备机取代成为master继续执行

主要从开发成本,运维支撑两方面来考虑,选取了基于chubby分布式锁的方案来实现单实例容灾部署。这也使得我们真正执行业务逻辑的机器具有随机性。

6.5 可靠交付

这是一个核心问题,如何保证任务的通知满足At-least-once的要求?

我们系统主要通过以下两种方式来保证。

1.任务达到时即存入tablekv持久化存储,任务成功通知业务方才设置过期(保留一段时间后删除),故而所有任务都是落地数据,保证事后可以对账。

2.引入可靠事件中心。在这里使用的是事件中心的普通消息,而非事务消息。实质是当做一个高可用性的消息队列。

这里引入消息队列的意义在于:

将任务调度和任务执行解耦(调度服务并不需要关心任务执行结果)。异步化,保证调度服务的高效执行,调度服务的执行是以ms为单位。借助消息队列实现任务的可靠消费。

事件中心相比普通的消息队列还具有哪些优点呢?

某些消息队列可能丢消息(由其实现机制决定),而事件中心本身底层的分布式架构,使得事件中心保证极高的可用性和可靠性,基本可以忽略丢消息的情况。事件中心支持按照配置的不同事件梯度进行多次重试(回调时间可以配置)。事件中心可以根据自定义业务ID进行消息去重。

事件中心的引入,基本保证了任务从Scheduler到Notifier的可靠性。

当然,最为完备的方式,是增加另一个异步Daemon作为兜底策略,扫出所有超时还未交付的任务进行投递。这里思路较为简单,不再详述。

6.6 及时交付

若同一时间点有大量任务需要处理,如果采用串行发布至事件中心,则仍可能导致任务的回调通知不及时。这里自然而然想到采用多线程/多协程的方式并发处理。在本系统中,我们使用到了微信的BatchTask库,BatchTask是这样一个库,它把每一个需要并发执行的RPC任务封装成一个函数闭包(返回值+执行函数+参数),然后调度协程(BatchTask的底层协程为libco)去执行这些任务。对于已有的同步函数,可以很方便的通过BatchTask的Api去实现任务的批量执行。Daemon将发布事件的任务提交到BatchTask创建的线程池+协程池(线程和协程数可以根据参数调整)中,充分利用流水线和并发,可以将任务List处理的整体时延大大缩短,尽最大努力及时通知业务方。

6.7 任务过期删除

从节省存储资源考虑,任务通知业务成功后应当删除。但删除应该是一个异步的过程,因为还需要保留一段时间方便查询日志等。这种情况,通常的实现方式是启动一个Daemon异步删除已完成的任务。我们系统中,是利用了tablekv的自动删除机制,回调通知业务完成后,除了设置任务状态为完成外,同时通过tablekv的update接口设置kv的过期时间为1个月,避免了异步Daemon扫表删除任务,简化了实现。

6.8 其他风险项

1.由于time_pointer的CurrentTime初始值置为首次运行的Daemon实例的机器时间,而每次轮询时都会对比当前Daemon实例的机器时间与CurrentTime的差别,故机器时间出错可能会影响任务的正常调度。这里考虑到现网机器均有时间校正脚本在跑,这个问题基本可以忽略。

2.本系统的架构对微信事件中心构成了强依赖。定时器的可用性和可靠性依赖于事件中心的可用性和可靠性。虽然目前事件中心的可用性和可靠性都非常高,但如果要考虑所有异常情况,则事件中心的短暂不可用、或者对于订阅者消息出队的延迟和堆积,都是需要正视的问题。一个解决方案是使用MQ做双链路的消息投递,解决对于事件中心单点依赖的问题。

结语

这里的定时器服务目前仅用于支持境外的定时器需求,调用量级尚不大,已可满足业务基本要求。如果要支撑更高的任务量级,还需要做更多的思考和优化。随时欢迎大家和和我交流探讨。

加入我们

微信境外支付团队在不断追求卓越的路上寻找同路人,欢迎加入我们的团队。

上一篇 : 恒大汽车命悬一线 恒大公告称或有停产风险 快看

下一篇 : 最后一页

x 广告
高层声音

如何快速实现一个定时器

2023-03-23

恒大汽车命悬一线 恒大公告称或有停产风险 快看

2023-03-23

吃汤圆简笔画图片_可爱汤圆萌简笔画图片

2023-03-23

全球微动态丨如何做简单的预言魔术

2023-03-23

董璇与张帅聚会,依旧靓丽年轻,离婚后的她情归何处?-环球观焦点

2023-03-23

马克龙回应退休改革:我也不喜欢,但等待的时间越长,赤字就越恶化_世界热头条

2023-03-23

恒大披露外债重组方案:最早10月1日起生效

2023-03-23

全球热议:人为什么要工作读后感_人为什么要工作

2023-03-23

【国际】2023年起,欧盟计划降低造纸领域对俄罗斯的依赖

2023-03-23

宫锁心玉中良妃是谁

2023-03-22

上海知识产权联合研究院揭牌|环球新动态

2023-03-22

冠昊生物: 关于召开2023年第一次临时股东大会通知公告 全球观天下

2023-03-22

独立攻击力是什么意思,DNF中独立攻击是什么意思啊

2023-03-22

世界即时看!蓝璟5(400030):【2023-005】关于公司股东补发股份质押公告的说明

2023-03-22

环球热点评!美股异动丨第一共和银行(FRC.US)盘前涨5.58% 美国政府或出手支持其救助计划

2023-03-22

2023年2月行业利差数据跟踪:行业利差全线下降,地产表现继续改善 环球新动态

2023-03-22

2023惠州社保卡怎么领取实体卡?(附图解)

2023-03-22

环球快报:有了这个英语启蒙神器,再也不用到处找资源了!

2023-03-22

全球头条:Adobe 推出 Firefly 生成式 AI:可让用户快速绘制图像

2023-03-22

全球微资讯!46岁老林骨折3个月长38斤肉,还得了痛风,只因每天这样做

2023-03-22

【世界报资讯】减压阀型号是_减压阀的型号有哪些

2023-03-22

热消息:美国用户担忧TikTok若被禁将影响生计

2023-03-21

尿频尿急(尿频尿急)

2023-03-21

世界微头条丨龙元建设(600491)3月21日主力资金净卖出2851.68万元

2023-03-21

和讯个股快报:2023年03月21日 欢瑞世纪 (000892),该股突破长期盘整|快看

2023-03-21

成都恒大天府半岛天纪小区六期64号楼2单元选房细则

2023-03-21

【新视野】伊利股份新设文化旅游发展子公司 含游艺娱乐活动业务

2023-03-21

167年历史瑞信落幕,全球财富基地或改弦更张

2023-03-21

环球即时:3月20日基金净值:汇添富碳中和主题混合A最新净值0.6793,涨0.88%

2023-03-21

当前速递!三邦网站 三邦网

2023-03-20

保障物流链供应稳定 京津冀地区开辟铁水联运国际贸易新通道_天天观焦点

2023-03-20

全球球精选!占星声望开启(占星声望)

2023-03-20

橡树资本联席创始人马克斯:不担心硅谷银行事件会引发系统性风险

2023-03-20

今日阿狸桌面主题下载手机(阿狸 桌面)|即时焦点

2023-03-20

环球热点!如何做电子文档_电子文档怎么做

2023-03-20

【环球新视野】中信证券明明:年内或仍有降准,预计结构性货币政策逐步发力

2023-03-20

青茶是什么茶叶_青茶是什么茶

2023-03-20

精彩回顾:2022 伟业达 GP 三水第四回合 电车公开组_世界信息

2023-03-20

紫藤萝瀑布赏析细节描写_紫藤萝瀑布赏析

2023-03-19

微资讯!二手房交易的应注意哪些事项

2023-03-19

普京到访乌克兰南部城市马里乌波尔,并与当地市民交谈|热推荐

2023-03-19

太乱了!拉尔萨语出惊人:儿子若与乔丹前妻交往,自己也不介意

2023-03-19

有虎牙的女生代表什么_有虎牙的女生_当前快看

2023-03-19

宝马车在高速上发生故障,竟叫来同伴用绳子拉出高速|每日看点

2023-03-19

全球微头条丨全球连线|中俄边境口岸客货量稳步提升

2023-03-18

环球快报:氢氧化铍是不是强碱_氢氧化铍

2023-03-18

世界快讯:超预期的降准能否带来超预期的经济

2023-03-18

保定市2023年打击 违法违规用地“清零行动”启动

2023-03-18

铅笔三角好还是六角好?_铅笔三角好还是六角好

2023-03-18

沃恩:西蒙斯没有复出的时间表

2023-03-18

天津推出六大工程促进文旅高质量发展

2023-03-17

抓获12人!涉案百万元!桐庐公安破获一起违法生产、销售伪劣电子烟案件 当前聚焦

2023-03-17

广州市黄埔区联和街招聘森林消防护林员公告-全球快播报

2023-03-17

世界视点!奉贤商场风云录系列一:奉贤天街为何风景独好?

2023-03-17

什么是青葱岁月

2023-03-17

美财长耶伦警告:若危机继续蔓延 将可能引发挤兑 天天看热讯

2023-03-17

苹果手机我的iphone文件夹在哪里打� 全球快报

2023-03-17

咳嗽气喘怎么治疗偏方_咳嗽气喘怎么治疗 全球时快讯

2023-03-17

今日热讯:长期股权投资科目核算内容_长期股权投资科目

2023-03-17

环球焦点!父亲节手工折纸幼儿园_父亲节手工折纸领带

2023-03-16

当前热门:模拟人生4作弊码没反应_模拟人生4作弊

2023-03-16

列文虎克发明显微镜_显微镜的发明故事

2023-03-16

乙女游戏_说一说乙女游戏的简介_快资讯

2023-03-16

感动天感动地原唱歌曲(感动天感动地)

2023-03-16

本周国内沿海地区棕榈油库存持稳金十期货3月16日讯,本周国内沿海地区棕榈油库存持稳 世界独家

2023-03-16

全球讯息:3月16日生意社R22基准价为20666.67元/吨

2023-03-16

少城时代陈俊宇_潘辰少城时代

2023-03-16

热点在线丨双臂电桥_关于双臂电桥的介绍

2023-03-16

视焦点讯!宿迁联盛: 宿迁联盛首次公开发行股票发行结果公告

2023-03-15

全球消息!央视50ETF: 中融央视财经50交易型开放式指数证券投资基金基金产品资料概要更新

2023-03-15

ST爱迪尔:在招募意向投资人阶段,公司日常业务未受影响

2023-03-15

环球观速讯丨东方金诚

2023-03-15

热点聚焦:央行:3月21日在香港招标发行50亿元央票 期限6个月

2023-03-15

湖北移动:数智惠民 助力数字经济发展跑出“加速度” 天天报资讯

2023-03-15

廷组词_廷主要组词是什么|热门

2023-03-15

如何酿制桂花酒视频教程_如何酿制桂花酒-热头条

2023-03-15

贫穷的拼音_贫穷怎么读 天天即时看

2023-03-14

展鹏科技:第三大股东丁煜拟清仓减持所持5.5%公司股份

2023-03-14

2023青白江幼升小好久报名(附申请入口)

2023-03-14

2000年欧洲杯意大利阵容_2012欧洲杯意大利阵容

2023-03-14

天府迎春赏花节3月17日将启动 80万平方米草坪花卉、70余条赏花步道请你“打卡”

2023-03-14

两会早知道丨3月13日十四届全国人大一次会议闭幕

2023-03-14

全球今亮点!内马尔拒绝离开大巴黎!英超不是好去处,养伤领高薪才是最佳选择

2023-03-14

世界热点评!工商银行实物黄金价格_银行黄金价格今天多少一克

2023-03-14

天天热资讯!杰奇洛_关于杰奇洛简述

2023-03-13

电动刻字机的使用方法_电动刻字机

2023-03-13

3月20日南昌西湖街道社区卫生服务中心2价HPV接种专场-今日精选

2023-03-13

二战日本强征韩国劳工案原告代理人:拒绝韩政府的第三方代赔方案-当前讯息

2023-03-13

货船和散货船有什么不同?_散货船和杂货船的主要结构有哪些不同_世界看点

2023-03-13

吹裙子没裤衩2_吹裙子日版 全球关注

2023-03-13

快资讯丨卫生间止水反坎做法_卫生间止水反梁如何设置

2023-03-13

当前关注:怀孕初期会拉肚子吗?为什么_怀孕初期会拉肚子吗

2023-03-13

红米k40拍照有哪些功能

2023-03-12

当前头条:哈佛学霸的学习秘籍居然只是一个简单公式,小学起就可照做

2023-03-12

程莉莎_说一说程莉莎的简介

2023-03-12

环球关注:长三角地区旅游专列开往昆明

2023-03-12

今日热文:高考3+2+1是怎么回事_高考3 2是什么意思

2023-03-12

携手500万幸福家庭 东风日产全新轩逸家族焕新上市

2023-03-11

使眼睛变大的方法有几种_使眼睛变大的方法

2023-03-11

开局之年“hui”蓝图丨看未来科技?AIGC提示:输入密码01

2023-03-11

原浆啤酒和纯生啤酒有什么区别_纯生啤酒与原浆啤酒的区别-全球观速讯

2023-03-11

弃组词_弃的组词-环球今日讯

2023-03-11

3-1横扫日本张本智和,00后小将再战对手,新加坡大满贯上演青春风暴|天天播资讯

2023-03-11

和平肛肠医院_天天短讯

2023-03-11

头条焦点:2021二十四节气时间表2021 年二十四节气农历时间表_2021二十四节气时间表

2023-03-11

领导人名单 关注

2023-03-10

播报:很多人当盆栽种植,却不知它的价值,现在我告诉你,希望对你有用

2023-03-10

环球速读:什么是整本书阅读推荐课(什么是整本书阅读)

2023-03-10

永远的谭嗣同

2023-03-10

自称12年驾龄 特斯拉Model X车主在线维权:踩刹车没反应加速撞柱子

2023-03-10

一只二级保护动物褐渔鸮在广西龙州被放归大自然

2023-03-10

三生肖大发特发, 三天内, 天官赐福, 喜事绵绵, 生活越过越滋润

2023-03-10

清理银饰什么办法最好用_清理银饰什么办法最好_今日看点

2023-03-10

360强力卸载是哪个软件_360强力卸载软件官网-焦点报道

2023-03-10

大凉山彝族汉子千里寻光明|全球速讯

2023-03-09

会声会影x5安装教程破解_会声会影x5安装教程

2023-03-09

花枝招展的意思和造句及拼音_花枝招展的意思和造句

2023-03-09

天天消息!哈里梅根爱女莉莉贝特在美受洗,首度公开使用公主称号

2023-03-09

政企合作共建柑桔品牌

2023-03-09

二向箔是什么东西_二向箔是什么东东 当前视讯

2023-03-09

[go-kratos-1]Golang微服务框架kratos安装和使用

2023-03-09

太离谱!北京卫视工作失误,《梦中的那片海》上线时间曝光

2023-03-09

关爱青少年心理健康 为成长成才保驾护航 焦点精选

2023-03-09

超级大本营军事论坛上不了_超级大本营军事论坛

2023-03-09

织密未成年人保护的法网

2023-03-09

广西壮族自治区广播电视局规划财务处

2023-03-09

绝世武神林枫 小说_林枫绝世武神 每日精选

2023-03-08

超出科米GP1400AF高度表的预期测试

2023-03-08

今热点:青岛海洋公园营业时间_青岛海洋公园门票价格、开放时间

2023-03-08

全球今日讯!棣丰街道

2023-03-08

宝丰能源(600989)3月8日主力资金净卖出1065.60万元

2023-03-08

蘑菇云|天天动态

2023-03-08

王嘉尔近照曝光!内裤半露,满脸颓废,法令纹明显,网友:太丑_环球观点

2023-03-08

妯娌怎么读

2023-03-08

水前城书包针锋相对。com

2023-03-08

应对流感,张文宏建议

2023-03-08

长生生物疫苗事件-世界新要闻

2023-03-08

晓龙865手机排行(晓龙865手机)|环球热议

2023-03-08

尹贞伊

2023-03-08

济宁高新区丰泰片区网格员维修电梯保安全|最新资讯

2023-03-08

徐文丽 每日信息

2023-03-07

【全球新视野】阿胶膏的食用方法_阿胶膏的做法

2023-03-07

抚顺特产_抚顺的特产都有什么

2023-03-07

一场球赛多少分钟

2023-03-07

今年普通高校高水平运动队招考安排出炉

2023-03-07

【天天聚看点】珠海情侣路攻略

2023-03-07

【环球聚看点】全国人大常委会工作报告谈监督和代表工作

2023-03-07

【世界速看料】2023薛之谦郑州站演唱会大麦可售门票有几张?

2023-03-07

每日时讯!特工卡特

2023-03-07

天天快报!日本新一代主力运载火箭H3发射失败

2023-03-07

广播站是干什么的-世界热推荐

2023-03-07

全球简讯:烟雨徽州

2023-03-07

nine 韩剧|天天资讯

2023-03-07

「叶茂中」足以传世的五大广告排行

2023-03-07

二月宝宝哭闹不止怎么办_宝宝哭闹不止怎么办

2023-03-07

2022年农历十一月初三黄道吉日-世界微动态

2023-03-06

西山区六合社区开展“节气里的六合”拓印装裱传统文化活动

2023-03-06

硅藻土过滤器 全球即时

2023-03-06

新手学做蛋糕100种_做蛋糕需要什么材料

2023-03-06

LPL官方解说道歉,记得正式辞职,并说明原因:失去了目标和动力

2023-03-06

【全球聚看点】富士施乐打印机

2023-03-06

吉利集团拟发起汽车领域产业基金首期10亿元-每日信息

2023-03-06

驱使_驱使

2023-03-06

天天播报:【学雷锋·正青春】清明河乡:清河道垃圾 保护“母亲河”

2023-03-06

农业农村部:全国春耕备肥有序推进!粮食主产省化肥到位进度超80% 环球新动态

2023-03-06

电脑qq怎么恢复删除好友消息记录_电脑qq怎么恢复好友_全球热点评

2023-03-06

3月6日盘前重要产业新闻

2023-03-06

双系统xpwin7怎么切换 环球焦点

2023-03-06

阻垢剂成分作用_阻垢剂成分

2023-03-06

世界头条:壹点交互海报|一起阅卷!政府工作报告划重点,山东这样作答

2023-03-05

八开纸尺寸是多少-全球简讯

2023-03-05

奥拉星手游凯撒在哪

2023-03-05

天天热门:三国题材游戏日本最强?这次日本人主动联系网易,似乎受益匪浅

2023-03-05

北京丰台区在几环离海淀区远么_北京丰台区在几环 每日热门

2023-03-05

寄顺丰快递价格怎么算出来的_寄顺丰快递价格怎么算 环球资讯

2023-03-05

怎样将支付宝里的钱转入转出余额宝

2023-03-05

河南73岁老奶奶五小时扛6万斤水泥,挣150元,结果狠狠打了我的脸

2023-03-05

古代绿蚁指的是什么_绿蚁指的是什么

2023-03-05

汽车导航一体机哪个牌子好点_汽车导航一体机哪个牌子好

2023-03-05

新一代通信协议—— RSocket

2023-03-04

120Stories

2023-03-04

在桂林全国人大代表和住桂林全国政协委员赴盛会

2023-03-04

天津太平镇:为老织密防诈网 守好百姓“养老钱” 观速讯

2023-03-04

环球速看:狼来了!日本有望包揽3冠,张本智和妹妹大发神威,国乒无奈弃权

2023-03-04

全球球精选!小学老舍的文章_老舍的文章

2023-03-04

东兴未来价值混合基金管理费率下调至1.0%/年

2023-03-02

快看点丨佛山照明:融资净买入158.15万元,融资余额1.75亿元(03-01)

2023-03-02

少年的乌托邦什么意思_乌托邦什么意思

2023-03-02

权威发布|关于道路封闭施工绕行的通知_环球热点

2023-03-02

世界热资讯!二的繁体字的读法

2023-03-01

每日播报!韩国经典老歌100首女_韩国经典老歌

2023-03-01

小克罗斯:FIFA最佳评选就是个笑话世界杯前没人认识马丁内斯 今日聚焦

2023-03-01

力星股份股东户数增加1.06%,户均持股17.1万元|世界速看

2023-03-01

环球速讯:电子商务未来发展趋势论文1000字

2023-03-01

世界今日讯!韩国宣布将提前实现网络目标是竞争策略

2023-03-01

全球热议:江西庐山:晴日雾凇映牯岭 宛如童话世界

2023-03-01

今日本田思域14万首付4万可以吗_本田思域13万首付多少 每日热文

2023-03-01

COMEUS-世界新资讯

2023-03-01

《夏花》爱情剧高清百度网盘资源共享(今日已更新2023)

2023-03-01

006-Mega Web开发课程:全栈Web应用2023

2023-03-01

返回顶部