摘要: 什么是延迟消息 延迟消息顾名思义不是用户能立即消费到的,而是等待一段特定的时间才能收到。举例如下场景比较适合使用延时消息: 场景一:物联网系统经常会遇到向终端下发命令,如果终端一段时间没有应答,就需要设置命令的状态为超时。 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单。 实现 阅读全文
posted @ 2023-01-17 23:33 nick hao 阅读(2751) 评论(0) 推荐(0) 编辑
摘要: 1.依赖隔离概述 依赖隔离是Hystrix的核心目的。依赖隔离其实就是资源隔离,把对依赖使用的资源隔离起来,统一控制和调度。那为什么需要把资源隔离起来呢?主要有以下几点: 1.合理分配资源,把给资源分配的控制权交给用户,某一个依赖的故障不会影响到其他的依赖调用,访问资源也不受影响。 2.可以方便的指 阅读全文
posted @ 2018-01-10 21:52 nick hao 阅读(7795) 评论(1) 推荐(1) 编辑
摘要: 在以前的文章中,我们介绍过使用Gauva实现限流的功能,现在我们来了解一下如何在服务框架中实现熔断和降级的方法。 简介Hystrix 大型系统架构的演进基本上都是这样一个方向:从单体应用到分布式架构。这个演进过程离不开一个字“拆”,我们会把一个系统拆成很多子系统,子系统之间一定会存在依赖,有的是强依 阅读全文
posted @ 2017-12-24 18:18 nick hao 阅读(879) 评论(0) 推荐(1) 编辑
摘要: Flume Sink的目的是从Flume Channel中获取数据然后输出到存储或者其他Flume Source中。Flume Agent启动的时候,它会为每一个Sink都启动一个SinkRunner的对象,SinkRunner.start()方法会启动一个新的线程去管理每一个Sink的生命周期。每 阅读全文
posted @ 2017-09-13 21:55 nick hao 阅读(3650) 评论(1) 推荐(2) 编辑
摘要: 在elastic-job详解(三):Job的手动触发功能一文中讲到了如何手动触发一个Job,但是我们手动触发的时候常常需要输入一些参数。举个栗子:我们有个日统计报表,每天凌晨统计一次,统计上一天的数据。但我们发现几天前的某一天的数据有问题,需要重跑统计。这就需要统计程序能执行指定某一天的数据。这个功 阅读全文
posted @ 2017-09-08 11:06 nick hao 阅读(8641) 评论(0) 推荐(1) 编辑
摘要: elastic-job中最关键的特性之一就是失效转移。配置了失效转移之后,如果在任务执行过程中有一个执行实例挂了,那么之前被分配到这个实例的任务(或者分片)会在下次任务执行之前被重新分配到其他正常节点实例上执行。 简单的HA 当某一个任务实例节点宕机(离开与zookeeper的连接),会触发elastic-job主节点的重新分片逻辑。elastic-job启动任务节点以后生成的zookeepe... 阅读全文
posted @ 2017-06-23 07:50 nick hao 阅读(13859) 评论(1) 推荐(2) 编辑
摘要: elastic-job的任务都是使用quartz来触发的,quartz表达式一般都是定期执行。但有时候一些周期较长的任务,比如一天一次,几小时一次的任务,我们需要等待很久才能触发一次。如果我们需要测试一些功能,或者说重跑一些任务的话,手动触发任务功能就变得尤为重要,也是任务框架一般都必须要实现的特性 阅读全文
posted @ 2017-06-10 06:37 nick hao 阅读(18236) 评论(1) 推荐(0) 编辑
摘要: JobScheduler是elastic-job作业调度的关键类,也是起始类,在包com.dangdang.ddframe.job.lite.api下。调度任务的执行需要包含两大步骤:任务的配置和任务的注册。JobScheduler的构造函数除了任务配置和注册相关信息之外还有事件和监听。后两者是el 阅读全文
posted @ 2017-06-03 16:53 nick hao 阅读(19454) 评论(0) 推荐(0) 编辑
摘要: 数据分片的目的在于把一个任务分散到不同的机器上运行,既可以解决单机计算能力上限的问题,也能降低部分任务失败对整体系统的影响。elastic-job并不直接提供数据处理的功能,框架只会将分片项分配至各个运行中的作业服务器(其实是Job实例,部署在一台机器上的多个Job实例也能分片),开发者需要自行处理分片项与真实数据的对应关系。框架也预置了一些分片策略:平均分配算法策略,作业名哈希值奇偶数算法策略,... 阅读全文
posted @ 2017-05-29 23:48 nick hao 阅读(43159) 评论(0) 推荐(1) 编辑
摘要: 单机定式任务调度的问题 在很多应用系统中我们常常要定时执行一些任务。比如,订单系统的超时状态判断、缓存数据的定时更新、定式给用户发邮件,甚至是一些定期计算的报表等等。常见的处理方式有线程的while(true) 和sleep组合、使用Timer定时器触发任务又或者是使用quartz框架。貌似这些方法可以完美的解决方案,为什么还需要分布式呢?主要有如下两点原因: 1.高可用:单机版的定式任务调度... 阅读全文
posted @ 2017-05-21 21:39 nick hao 阅读(43638) 评论(2) 推荐(6) 编辑