服务器通过设置什么定时器来确认是否有必要继续保留长时间没有数

服务器通过设置什么定时器来确认是否有必要继续保留长时间没有数,第1张

保活定时器。保活定时器作用:应对TCP连接期间,客户端和服务端长时间无数据传输的情况。服务器(serer)指在网络环境中或在具有客户服务器结构的分布式管理环境中,为客户的请求提供服务的节点计算机,或指在该计算机上运行的,用于管理资源并为用户提供服务的计算机软件。

优点:与spring集成、动态添加任务、支持集群

缺点:不支持分布式(只能一个任务在一台服务器上执行,不能分片)

将一个任务拆分成多个独立的任务项,由分布式的服务器分别执行某一个或几个分片项。而传统的定时器任务都在一台服务器上执行,如果数据很大那么压力很大。

举例:处理一百万的订单:A服务器处理尾数偶数的订单,B服务器处理尾数奇数的订单。

整合java项目

1、引入quartz 依赖

2、quartz.properties

3、

注意:

1、每一个job执行都是一个新的线程(即使是同一个任务,这个elastic-job不同)但是如果在配置文件quartz.properties中配置的线程消耗完,也还是会陷入阻塞的。根据业务来预估线程池的大小。(所以的任务共享一个线程池)

2、每一个job执行都会创建一个新的job对象,所以想通过job的成员变量来传递信息是不可行的(每次都会初始化)

3、myJob类必须要有空的构造方法

1、方式1:在创建jobDetail是传递JobDataMap,然后通过JobExecutionContext获取JobDataMap

2、方式2:在myjob中定义成员变量,并生成get,set方法

上面我们知道任务间都是并发处理的,那么要考虑并发安全问题。

1、使用@DisallowConcurrentExecution

使用@PersistJobDataAfterExecution注解和jobDataMap.put方法

1、startTime属性:设置trigger第一次触发的时间

2、endTime属性:表示trigger的失效时间点

3、优先级(priority)当多个Trigger并发执行,但是线程不够时触发,会优先执行级别高的Trigger

TriggerBuilder.newTrigger().withPriority(10);

默认时5,数字越大优先级越高

4、错过触发(misfire instructions)

1、withMisfireHandlingInstructionDoNothing策略:错过了什么都不做,等待下一次触发时间

设置每5秒执行一次,任务7秒。

发现这样是不会生效的,因为内部判断了一下错过的时间是否大于misfireThreshold这个值(默认5秒),如果小于还是立即执行。这里我们只失效了2秒,是小于5秒的。

通过quartz.properties设置misfireThreshold的值

这样再运行,发现withMisfireHandlingInstructionDoNothing策略生效了。

2、withMisfireHandlingInstructionFireAndProceed策略:错过立即执行

5、日历(calendar)

1、可以在具体的时间点执行一次

2、可以按照指定间隔时间重复若干次

1、使用cron表达式触发

, 代表并且,如果10,20 10秒和20秒都指向

? 只能出现在日期和星期内,代表没有特定的值。如果使用*号日期了星期会有歧义,这是使用?

L 只能出现在日期和星期内,表示月的最后一天,或者星期六

W 只能出现在日期内,表示最接近这个日期的工作日

很多人想投身游戏行业,成为真正的游戏制作人。但是他们对游戏的制作过程,和各个职位的职能都是比较陌生的。对网页游戏开发也不够了解,游戏到底是怎么制作出来的呢?\x0d\x0a\x0d\x0a网页游戏开发的程序构成分为三大部分:第一是数据流程。第二是美术。第三是程序。\x0d\x0a1、数据流程\x0d\x0a数据流程其中,数据流程包括了功能。也只有在功能中才能体现数据流程。\x0d\x0a比如最简单的卖买产品。要实现这个功能,那么需要有产品基础表、产品详细表、商店表、背包表。如果扩展性更强,相应的双表是少不不了的。\x0d\x0a表的问题都简单了,关键是这个物品有什么用,这样物品的来源,一大堆数据,物品的走向,又是一大堆数据。最后,这些数据得绕成一个圈。绕圈是一件困难的事情,特别是功能和道具多了起来的时候。难度是2的n次方。\x0d\x0a2、美术\x0d\x0aUI:简洁漂亮的界面总会有好处。\x0d\x0a小图标:道具,地图,装备,一类至少10个吧?大体上百把个是需要的。\x0d\x0a3、程序分5个部分\x0d\x0a数据库:一大堆基础数据表和详细数据表。基础数据表:比如等级1到等级100的用户的属性初始值。详细数据表:每个用户的具体属性。\x0d\x0a功能页面、功能函数。主要就是数据存取,判断,数据走向。\x0d\x0aajax函数:(可选)某些需要伪即时的功能要用到。\x0d\x0ajavascript函数:(可选)模拟客户端的数据计算。也就是webgame的与时间相关的数据。分为两部分。一部分是真实数据,是由服务器端的定时器计算的。另一部分是只有初始值,客户端显示用的。不需要即时同步,仅仅需要模拟同步就行。\x0d\x0a服务器定时器:(C语言或自己设定服务器)定时循环执行某一段代码。而这段代码主要是根据数据库的数据进行更新。这个可以找个C语言程序员来做。对于C语言程序员来讲,这个功能是相当的简单。当然,具体的处理数据的判断和操作数据库,需要你自己写。让C语言程序员给你段标准代码就行了。完全支持sql语句的。\x0d\x0a当然在网页游戏开发前,还要组织相关的专业人才,制作一款网络游戏需要的最核心人才是原画、2D、3D、程序设计、策划等这些方面的人才是必不可少的,因此,要开发一个网页游戏除了要程序员以外,千万不要忘了准备以上人才。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/115254.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-12
下一篇2023-03-12

发表评论

登录后才能评论

评论列表(0条)

    保存