环球热文:如何快速实现一个定时器

2023-03-22 20:20:27 来源: 腾讯云

导语

定时器(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做双链路的消息投递,解决对于事件中心单点依赖的问题。

结语

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

加入我们

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

标签:

上一篇 :

下一篇 :

环球热文:如何快速实现一个定时器

定时器(Timer)是一种在业务开发中常用的组件,主要用在执行延时通知任务上。本文以笔者在微信工作中的...

03-22 20:20:27

要闻:长城欧拉、沙龙品牌整合完成 机甲龙正式入驻欧拉社区

长城汽车宣布旗下两家新能源品牌欧拉与沙龙正式整合,长城沙龙旗下车型机甲龙已入驻欧拉社区,将在欧拉A...

03-22 18:40:45

【焦点热闻】QQ幸运字符怎么弄

1、打开好友互动标识,寻找自定义标识。2、点击自定义标识里的幸运字符。3、在卡片中,选择字符卡,成功...

03-22 17:00:52

天天微速讯:新疆阿拉山口通行中欧(中亚)班列累计突破3万列

昨天(3月21日),一列满载货物的中欧班列从新疆阿拉山口口岸鸣笛出发,驶往波兰马拉舍维奇。截至当日,...

03-22 17:11:34

每日快播:铁流股份:公司2017年成立农机事业部,开展农机离合器的产品研发和推广

铁流股份(603926)03月20日在投资者关系平台上答复了投资者关心的问题。

03-22 15:47:31

环球简讯:经济观察丨全国首批!龙泉山国土绿化项目示范效果如何?

川观新闻记者 王培哲“那会儿,一棵树就是一道难题。”站在成都龙泉山丹景台远眺三岔湖,龙泉山国土绿...

03-22 14:03:39

速递!农门贵妻悍夫种种田_农门小媳妇:极品狼夫来种田

1、《农门小媳妇:极品狼夫来种田》是连载于红薯网的一部架空历史类网络小说,作者是有妖。2、。本文到...

03-22 12:03:23

天天消息!尿毒清颗粒说明书剂型_尿毒清颗粒说明书

1、性状:本品为棕色或棕褐色的颗粒;味微苦。2、汉语拼音:NiaoDuQingKeLi通用名称:尿毒清

03-22 10:07:20

焦点热文:广日股份:3月21日融资买入369.18万元,融资融券余额1.83亿元

3月21日,广日股份(600894)融资买入369 18万元,融资偿还283 2万元,融资净买入85 98万元,融资余...

03-22 07:59:37

焦点热议:空落落的读音和含义_空落落的读音

1、读音:kōngluòluò,声母分别是k、l、l,韵母分别是ong、uo、uo;声调分别是一声,四声,四声。2、意思

03-22 03:50:26

【天天聚看点】土蜘蛛御魂怎么获得(土蜘蛛御魂怎么算伤害)

1、土蜘蛛御魂正确使用方式。2、土蜘蛛首先说说首领御魂中大火的土蜘蛛。3、从第一个吃螃蟹的人用蛛毒毒...

03-21 23:23:21

天天视点!中国铝业:2022年度净利润约41.92亿元 同比下降27.22%

中国铝业(SH601600,收盘价:5 54元)3月21日晚间发布年度业绩报告称,2022年营业收入约2909 88亿元,...

03-21 20:53:05

当前播报:媒体人:新疆队大多数成员参加了问询,有问题的球员等最终宣判

媒体人:新疆队大多数成员参加了问询,有问题的球员等最终宣判,矫喆,秦升,足球,新疆队,孙世林

03-21 18:06:34

全球动态:楼天城

1、楼天城,浙江杭州人,姚期智院士的得意门生,正是姚教授发现他的才能后把他引上了现在的研究方向,并...

03-21 16:18:10

今日讯!吉利汽车绩后涨近4% 2022年全年营业收入1480亿元

吉利汽车(00175)绩后上涨3 49%,报9 47港元,成交额2 208亿港元。  吉利汽车午间发布2022年财报...

03-21 13:57:52

【时快讯】2023款小鹏P7i上市,能否作为中型电动车的先锋之选?

小鹏P7i702Pro是一款定位为中型车的电动车,于2023年3月份正式上市,备受业内关注。以24 99万元售价定...

03-21 11:54:52

视点!三球王转投红魔?太阳报:曼联已经多次考察日本前锋三笘薰

英国媒体《太阳报》消息,曼联本赛季已经多次考察布莱顿的日本前锋三笘薰。英媒表示,曼联将在下个月的...

03-21 10:05:33

环球热讯:楼体亮化

1、楼体亮化作为城市亮化工程的一部分,美化了城市的夜空也提升了自身的形象,达到自我宣传、体现文化、...

03-21 08:03:26

世界观热点:boom clap歌曲下载百度云(boom clap mp3下载)

1、CharliXcx-BoomClap歌曲下载地址已发送到你的百度私信请及时下载若看不了私信可以追问。2、选择发送...

03-21 04:12:33

焦点滚动:谷爱凌滑冰时与男子接吻,男友正面照曝光高大帅气

今年的冬奥会谷爱凌无疑是是最耀眼的一颗星,在女子单板滑雪中谷爱凌为我们赢得金牌一时间成为我们的骄...

03-20 23:58:29

全球快资讯丨过庭之训行书_过庭之训

1、过庭之训读音:guòtíngzhīxùn解释:用以指父亲的教诲。2、出自:《论语·季氏》:“尝独立,鲤趋而过庭

03-20 20:40:40

【世界新视野】oppo r17和r17 pro有什么区别_oppor17和r17pro区别

1、OPPOR17pro采用高通骁龙710八核64位2 2GHz处理器,有两个配置(高配运行内存8G,机身内存128G,

03-20 18:09:45

每日消息!福建晋江产投完成发行3亿短期融资券 票面利率3.25%

债券简称23晋江产投CP001,发行金额为3亿元,息期利率为3 25%,将于2024年3月17日到期兑付。

03-20 16:00:24

天天热文:甘肃省酒泉市发布大风黄色预警

甘肃省酒泉市发布大风黄色预警

03-20 14:08:15

环球最新:日本民众批政府违背承诺漠视群体利益

本月11日是日本“3·11”大地震12周年。连日来,日本各界民众持续举行集会,反对日本政府和东京电力公司...

03-20 12:02:32

环球快资讯丨“冀X”牌照即将落地河北雄安新区

新华社石家庄3月19日电(记者杜一方)《河北雄安新区机动车上牌管理暂行办法》18日正式印发,这标志着“...

03-20 10:07:56

热点在线丨步入小学一年级的寄语_步入小学的寄语

1、努力学习,这是通往辉煌人生的道路。努力学习是美好未来的基础。好好学习,创造属于自己的蓝天。同学...

03-20 08:13:26

热点!二百五的由来传说与谁有关_二百五

1、战国时期,有个历史人物叫苏秦,是个纵横家。2、他说服齐、楚、燕、赵、魏、韩六国联合起来,结成同...

03-20 02:58:27

当前热议!自来水检漏便民服务卡_自来水检漏

1、环境调查法环境调查法是确定漏水线索和范围最直观的方法。这种方法是根据供水管网图和相关人员提供的...

03-19 21:51:27

全球视点!渲染任务运行中 cpu 100%的时候,对ping机器的时延 会有影响吗?

理论上是有一定关系的,cpu100%时,不丢包就是好的了,延迟变大或存在一定的丢包率是符合预期的

03-19 18:06:59

世界快消息!瑞银集团就收购瑞信银行寻求60亿美元政府担保

瑞银集团就收购瑞信银行寻求60亿美元政府担保,瑞银集团,瑞士信贷,瑞士银行,瑞信银行,政府担保,财务报表,...

03-19 14:55:08

每日快看:搭平台 促就业 各地各高校多措并举助力大学生就业

眼下,正值春季招聘的关键时期,各地各高校通过一系列招聘会、双选会为毕业生搭建求职就业平台,助力大...

03-19 11:14:54

环球短讯!“儿媳妇是我的情人!”禽兽父亲不仅霸占儿媳,还将妻儿赶出家门

“儿媳妇是我的情人!”禽兽父亲不仅霸占儿媳,还将妻儿赶出家门,情人,离婚,同居,结婚,儿媳妇,禽兽父亲,...

03-19 08:03:46

环球观速讯丨黄龄与男友约会花絮曝光,两人热恋牵手肩并肩无比亲密

黄龄与男友约会花絮曝光网友们纷纷为黄龄送上祝福:“恭喜!黄龄真的是一个很有意思的姐姐”“恭喜姐姐...

03-19 02:56:14

天天看热讯:保安中队安全工作总结(7篇)

保安中队安全工作总结第1篇作为一名老同志,曾经也参与过单位安保工作,遇到突发事情,迅速反应,服从大...

03-18 21:58:55

环球热推荐:注资300亿后又暴跌,美第一共和银行拟发新股筹资

据《纽约时报》当地时间3月17日援引知情人士消息报道,该银行正计划通过发行新股从其他银行或私募股权公...

03-18 18:03:33

世界消息!呼和浩特举办二手车出口首发式 车辆将出口至中亚、东南亚多国

(记者刘文华)18日,呼和浩特综合保税区举行二手车出口首发仪式,首批约60辆二手车将出口至中亚、东南亚...

03-18 14:57:48

焦点要闻:江苏2男子频繁存取钱保安警觉报警,警方侦破千万洗钱案

民警迅速到场处置,并顺藤摸瓜破获一涉嫌替电诈人员转移资金的5人洗钱团伙

03-18 11:38:04

【快播报】中银证券:3月17日融资买入4079.16万元,融资融券余额11.78亿元

3月17日,中银证券(601696)融资买入4079 16万元,融资偿还4524 6万元,融资净卖出445 43万元,融资余额11 6亿元。

03-18 08:21:01

热点评!企业安全生产会议如何开(企业安全生产会议制度)

1、去百度文库,查看完整内容>内容来自用户:五福·伯爵茶2020版XXX公司安全生产会议制度为了认真落实安...

03-18 04:08:50

全球今日讯!中长发怎样才能扎出简约又时尚的造型?

中发扎发,因为头发长度收到限制,只能是半扎的造型了,这种造型搭配简单的发卡,效果非常时尚。因为这...

03-18 00:04:57

当前热讯:小孩不咳嗽有痰怎么办_小孩咳嗽有痰怎么办

1、  咳嗽属于常见疾病,除了呼吸道有异物而发生的正常咳嗽行为。更多的是由于肺炎肺热、急性喉炎、上...

03-17 20:48:21

天天微资讯!河北着力升级全民健身公共服务体系

本报石家庄3月16日电  (记者马晨、邵玉姿)记者从河北省体育局获悉:今年河北省将加快推进更高水平的...

03-17 18:01:36

【当前独家】什么水永远用不完打一字_什么水永远用不完

今天小编肥嘟来为大家解答以上的问题。什么水永远用不完打一字,什么水永远用不完相信很多小伙伴还不知...

03-17 16:07:34

全球要闻:站在天府国际机场下的未来机遇——在未来城,享机场利好,过湖景生活

项目楼下就是一贯制的全龄教育(幼儿园、小学、中学)、社区商业及公服配套资源,打造“3分钟便民生活圈...

03-17 13:57:57

天天观察:指数持续分化 创业板指翻绿

3月17日电,指数延续分化,创业板指高开低走翻绿,沪指继续走高涨近0 9%。ChatGPT、AIGC、电子商务等板块涨幅

03-17 11:08:12

天天热门:身姿曼妙的拼音_身姿曼妙是什么意思

1、身姿曼妙是一个组合词,意思是姿态柔美,形容女子的身材非常好,妖娆妩媚。2、一、身姿释义姿态,姿...

03-17 09:55:03

看点:“快响利箭”进入高密度发射状态 在商业航天发射领域开拓市场

央视网消息:长征十一号火箭具有“快速、便捷、灵活”的特点,也有着“快响利箭”的美誉。液体火箭在发...

03-17 07:11:50

天天热门:对数函数_说一说对数函数的简介

夏弥来为大家解答以下的问题,对数函数,说一说对数函数的简介,现在让我们一起来看看吧!1、一般地,对...

03-17 02:57:30

【全球新要闻】新成街道:依托综治中心平台 提升新成地区社会治理能力

新成街道:依托综治中心平台提升新成地区社会治理能力

03-16 22:14:08

要闻:长城欧拉、沙龙品牌整合完成 机甲龙正式入驻欧拉社区
【焦点热闻】QQ幸运字符怎么弄
天天微速讯:新疆阿拉山口通行中欧(中亚)班列累计突破3万列
每日快播:铁流股份:公司2017年成立农机事业部,开展农机离合器的产品研发和推广
环球简讯:经济观察丨全国首批!龙泉山国土绿化项目示范效果如何?
速递!农门贵妻悍夫种种田_农门小媳妇:极品狼夫来种田
天天消息!尿毒清颗粒说明书剂型_尿毒清颗粒说明书
焦点热文:广日股份:3月21日融资买入369.18万元,融资融券余额1.83亿元
焦点热议:空落落的读音和含义_空落落的读音
【天天聚看点】土蜘蛛御魂怎么获得(土蜘蛛御魂怎么算伤害)
天天视点!中国铝业:2022年度净利润约41.92亿元 同比下降27.22%
当前播报:媒体人:新疆队大多数成员参加了问询,有问题的球员等最终宣判
全球动态:楼天城
今日讯!吉利汽车绩后涨近4% 2022年全年营业收入1480亿元
【时快讯】2023款小鹏P7i上市,能否作为中型电动车的先锋之选?
视点!三球王转投红魔?太阳报:曼联已经多次考察日本前锋三笘薰
环球热讯:楼体亮化
世界观热点:boom clap歌曲下载百度云(boom clap mp3下载)
焦点滚动:谷爱凌滑冰时与男子接吻,男友正面照曝光高大帅气
全球快资讯丨过庭之训行书_过庭之训
【世界新视野】oppo r17和r17 pro有什么区别_oppor17和r17pro区别
每日消息!福建晋江产投完成发行3亿短期融资券 票面利率3.25%
天天热文:甘肃省酒泉市发布大风黄色预警
环球最新:日本民众批政府违背承诺漠视群体利益
环球快资讯丨“冀X”牌照即将落地河北雄安新区
热点在线丨步入小学一年级的寄语_步入小学的寄语
热点!二百五的由来传说与谁有关_二百五
当前热议!自来水检漏便民服务卡_自来水检漏
全球视点!渲染任务运行中 cpu 100%的时候,对ping机器的时延 会有影响吗?
世界快消息!瑞银集团就收购瑞信银行寻求60亿美元政府担保
每日快看:搭平台 促就业 各地各高校多措并举助力大学生就业
环球短讯!“儿媳妇是我的情人!”禽兽父亲不仅霸占儿媳,还将妻儿赶出家门
环球观速讯丨黄龄与男友约会花絮曝光,两人热恋牵手肩并肩无比亲密
天天看热讯:保安中队安全工作总结(7篇)
环球热推荐:注资300亿后又暴跌,美第一共和银行拟发新股筹资
世界消息!呼和浩特举办二手车出口首发式 车辆将出口至中亚、东南亚多国
焦点要闻:江苏2男子频繁存取钱保安警觉报警,警方侦破千万洗钱案
【快播报】中银证券:3月17日融资买入4079.16万元,融资融券余额11.78亿元
热点评!企业安全生产会议如何开(企业安全生产会议制度)
全球今日讯!中长发怎样才能扎出简约又时尚的造型?
当前热讯:小孩不咳嗽有痰怎么办_小孩咳嗽有痰怎么办
天天微资讯!河北着力升级全民健身公共服务体系
【当前独家】什么水永远用不完打一字_什么水永远用不完
全球要闻:站在天府国际机场下的未来机遇——在未来城,享机场利好,过湖景生活
天天观察:指数持续分化 创业板指翻绿
天天热门:身姿曼妙的拼音_身姿曼妙是什么意思
看点:“快响利箭”进入高密度发射状态 在商业航天发射领域开拓市场
天天热门:对数函数_说一说对数函数的简介
【全球新要闻】新成街道:依托综治中心平台 提升新成地区社会治理能力
焦点速讯:携手共育“社会大美育”课堂,浦东历史博物馆揭牌“上海市收藏协会浦东活动基地”
X 广告
行业动态
X 广告

Copyright ©  2015-2022 东方植物网版权所有  备案号:沪ICP备2020036824号-8   联系邮箱:562 66 29@qq.com