it编年史_Java的编年史和低延迟

it编年史

总览

我正在看Typesafe的Rolan Kuhn在介绍React流方面的精彩演讲,乍一看似乎与《纪事报》有一些相似的目标,但是当您深入研究细节时,很明显我有一些关键的假设根本不同。

关键假设

《纪事》设计的主要假设是
  • 低延迟是您的问题,而不是吞吐量。 数据来自微突发,您希望在下一次微突发活动之前尽快处理。
  • 如果您忙碌,则不能暂停交流/制作人。 (或暂停最终用户不是一种选择)
  • 您的信息具有很高的价值,详细记录每个事件的时间非常有价值。 记录所有事件是了解微爆的关键。
  • 您希望能够检查过去发生的任何事件。

低延迟至关重要

纪事报旨在帮助您解决的关键问题是一致的低延迟。 它假设如果延迟足够低,那么吞吐量就不会有问题。 许多基于Web的系统都是为吞吐量而设计的,只要最终用户看不到延迟,延迟就不会成为问题。 对于软实时系统,大多数时候您都需要低延迟,而最坏情况下的延迟则要适中,这要比人类看到的要快得多。

你无法阻止世界

另一个关键假设是流量控制不是一种选择。 如果您运行缓慢,则无法对交易所及其所有用户说,请等我一会儿再等。 这意味着生产者永远不会被消费者放慢脚步。
降低生产者速度实际上与增加延迟时间相同,但是此延迟时间很容易隐藏。 如果您等到生产者为事件加上时间戳记,这会使您的延迟看起来更好。 如果您想采取更现实的措施,则应使用时间戳记,事件应该由生产者发送 ,并且不会延迟。

您需要记录所有内容以便重播

重放对于在一定条件下测试应用程序很有用。 例如,您可以更改您的应用程序,不仅可以看到它的行为正确,而且可以及时运行。 对于定量分析,他们将需要一组数据来调整其策略。

实时重播旧事件。

您可以记住它的索引,而不用复制事件的副本,而稍后可以参考该事件,您可以稍后重播该事件。 这样可以节省堆中的内存,或仅在情况下复制数据。

微爆发对于理解系统至关重要。

一些系统的性能以每天的交易为特征。 这意味着,如果在前23个小时内没有完成任何事务,而所有事务都在最后一个小时内完成,那么您仍将每天执行这么多事务。 经常引用每天的交易是因为它的数量更高,但就我而言,整天简化工作量听起来很奢侈。
某些系统可能以每秒的事务数为特征。 这可能意味着这些事务可以在一秒钟内开始并完成,但并非总是如此。 如果您有1000笔交易,并且每毫秒进行一次交易,那么您将获得均匀的响应时间。 我发现更有趣的是一天中最忙的一秒钟的交易数量。 这样可以指示系统应该能够处理的流速。

检查微脉冲

考虑一个系统,该系统在相同的100微秒内获得30个事件,而这些突发相距100毫秒。 这看起来可能是每秒(30 / 0.1)300个事务,这听起来相对容易,如果我们需要做的只是跟上进度,但是如果我们希望尽快做出响应,则短期/突发吞吐量为100中的30微秒或每秒300,000个事件。
换句话说,要尽可能快地处理微脉冲,您将需要一个系统,该系统可以处理的吞吐量比您在几秒钟,几分钟或一天内预期的吞吐量高出多个数量级。 理想情况下,系统的吞吐量将是一天中最忙的一秒钟的100倍。 在不减慢对这些数据突发的处理速度的情况下,每秒处理最繁忙的10毫秒所需的时间。

编年史如何改善微爆的处理

低垃圾率

最小化垃圾是避免GC暂停的关键。 为了有效地使用L1和L2高速缓存,您需要保持非常低的垃圾率。 如果您没有有效地使用这些缓存,则您的应用程序速度可能会慢2-5倍。
Chronicle中的垃圾非常低,您可以处理一百万个事件,而无需jstat检测到您创建了任何垃圾。 jstat仅在分配了新的TLAB时显示4 KB的倍数。 编年史确实会产生垃圾,但是它非常低。 即每百万个事件进程几个对象。
一旦将GC暂停设置为可管理或不存在,您就开始看到系统中的其他延迟源。 拿走巨石,您开始看到岩石。 拿走岩石,您开始看到鹅卵石。

支持全部写入模型。

众所周知,如果保持DEBUG级别登录,则可能会严重降低应用程序的速度。 在记录您以后可能想要知道的一切与对您的应用程序的影响之间存在紧张关系。
编年史设计得足够快,您可以记录所有内容。 如果替换系统中的队列和IPC连接,则可以提高性能,并且可以免费甚至更好地“记录所有内容”。
能够记录所有内容意味着您可以在系统的每个阶段添加跟踪时间,然后监视系统,还可以深入了解系统中最糟糕的1%延迟。 这不是您可以使用剖析器为您提供平均值的方法。
通过编年史,您可以回答以下问题: 系统的哪些部分负责一天中最慢的20个事件?

记事本与操作系统的交互最少。

系统调用速度很慢,如果可以避免调用操作系统,则可以节省大量的延迟。
例如,如果在回送时通过TCP发送消息,则在写入和读取数据之间可能会增加10微秒的延迟。 您可以写入编年史,这是对内存的简单写操作,也可以从编年史中读取,这也是从内存中读取的内容,延迟为0.2微秒。 (正如我之前提到的,您也会获得持久性)

无需担心堆满。

无限制队列的常见问题,这使用了一个开放式堆。
Chronicle通过不使用堆来存储数据,而是使用内存映射文件来解决此问题。 通过使数据更紧凑,可以提高内存利用率,但也意味着1 GB的JVM一天可以流处理1 TB的数据,而不必担心堆或您拥有多少主内存。 在这种情况下,无界队列变得更易于管理。

结论

通过基于不同的假设,Chronicle解决了其他解决方案可以避免的问题,例如对流控制或使用消息(删除已处理消息)的需求。
Chronicle旨在更有效地利用您的硬件,因此您不需要说30个服务器的云即可每秒处理大约一百万个事件(如许多基于云的解决方案所声称的那样),您可以与开发人员联系以达到此事件率笔记本电脑。

翻译自: https://www.javacodegeeks.com/2014/05/chronicle-and-low-latency-in-java.html

it编年史

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

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

相关文章

智慧磐石工程项目系统组成

武警部队智慧磐石工程以五防一体化建设为基础,融入各类前沿智能检测、识别、控制等相关技术,通过整合指挥、监控、防护、报警、通信、处置要素,实现信息智能管理、环境智能分析、通道智能防范、监控智能识别、险情智能感知、枪弹智能管控、情…

网络延长器分为哪几类?其应用领域有哪些?

网络延长器具有超低传输时延,能够线速转发数据包。网络延长器采用自主产权的LRE(Long- Reacher Ethernet)长线以太网驱动技术,能有效延长以太网传输距离达700米,同时保障最大传输带宽。基本原理是通过信号整形放大&…

Java项目:书评

本文是关于这本书的 Peter Verhas撰写的Java Projects Second Edition 我去年写的 这样一篇文章的目的通常是为了促进这本书的销售。 在这种情况下没有什么不同,但是由于这是我写的书,而且我是撰写评论的人,因此赞美这本书将非常尴尬。 所以…

信号延长器常见故障问题及解决方案汇总

延长器是用来延长信号的器件,通常用于长距离直连线材无法满足传输要求的情况,一般是为了确保信号长距离无衰减的传输而设计,因此多是有源的。我们在使用信号延长器的过程中难免会遇到各种各样的故障问题,那么我们该如何解决呢&…

一文读懂视频监控系统全过程内容

视频监控系统由实时控制系统、监视系统及管理信息系统组成。视频监控系统是安全防范系统的组成部分,它是一种防范能力较强的综合系统。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。接下来就由飞畅科技来为大家详细介绍下视频监控系统的全过程&#…

以太网识别标准及接线标准、接线方法详解

以太网是目前应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI和ARCNET。为了使网络系统中的软硬件设备不受生产厂家和型号等不同的限制,制定了各种各样的标准来保证他们之间的相互通,以太网标准就是其中之一,IEEE组织…

Spring Framework中的作用域代理

Spring框架提供了Spring bean的作用域。 我们可以使用spring范围控制插入Spring bean的各种依赖关系和配置值。 Spring支持以下六个范围。 在基于Web的应用程序中可以使用六个中的四个: 范围 描述 辛格尔顿 它是Spring框架中的默认范围。 对于每个Spring IOC容…

中继器、集线器、网桥、网关产品介绍

在了解通信原理之前,我们首先要对通信常用的设备进行熟悉,计算机网络体系中,有几样通信设备或者说网络名词出现的频率相当高,它们是:中继器、集线器、网桥、交换机、路由器和网关。其实,弄清楚这几个计算机…

串口转换器的工作方式及通讯模式介绍

串口转换器能让您在配有RS-232的系统上使用RS-422及RS-485。它透明地将RS-232信号转成隔离的RS-422或RS-485信号。对此,您无需改变PC机任何的硬件或软件就能让您利用标准的PC硬件,来轻松构建一个工业级的长距离通信系统;基于TCP/IP和RS-485/4…

java8根据某个id删选_Java 8可选:如何使用它

java8根据某个id删选Java 8带有新的Optional类型,类似于其他语言中可用的类型。 这篇文章将介绍这种新类型的使用方式,即主要用途。 什么是可选类型? 可选的是新容器类型,如果有可用值,则该容器类型将包装单个值。 因…

Java中的瞬态关键字及其使用

最近,我在一个朋友的一个研究项目中遇到了十字架,他们正在学习Java编程的基础知识,一些忘记的敏感信息打印在文本文件中,并记住了Java中的瞬时关键字。 Java中的瞬时关键字在安全性方面起着重要作用,并且在上述类似的…

RS-232/E1协议转换器产品介绍

RS-232/E1协议转换器是我公司自主研发生产的高性能产品,它将透明E1转换为V.35或者RS232的异步数据接口的接口转换设备,本设备V.35接口可以连接DCE或DTE两种工作方式的设备,RS232接口只支持异步RS232数据,可支持的最高异步速率为11…

java ee cdi_Java EE CDI限定词:快速浏览

java ee cdi在上下文和依赖注入(CDI)中, 限定符是类型安全和松散耦合的主体。 为什么? 没有CDI,我们将以类似于下面的方式注入Java EE组件 注意:这实际上不会编译,只是假设的代码片段 例子1 …

什么是串口协议转换器?串口转换器有哪些特点?

串口转换器是为RS-232/485/422到TCP/IP之间完成数据转换的通讯接口转换器。通过作为服务器端,提供RS-232/485/422终端串口与TCP/IP网络的数据双向透明传输,提供串口转网络功能,RS-232/485/422转网络的解决方案,可以让串口设备立即…

485转232转换器产品介绍及性能参数介绍

配有不同标准串行接口的计算机、外部设备或智能仪器之间进行远程数据通信,需要进行标准串行接口的相互转换。485转换器将单端的RS-232信号转换为平衡差分的RS-485或RS-422信号。RS-485、RS-422自动识别功能,使用更加简单。接下来我们就来为大家详细介绍下…

什么是RS232/RS485转换器?

485转以太网提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输。使得串口设备能够立即具备TCP/IP网络接口功能,连接网络进行数据通信,极大的扩展串口设…

apache jmx_用于JMX访问的Apache Ant任务

apache jmx我想从Ant任务中调用JMX操作。 但是,找到可用的蚂蚁任务库及其用法非常棘手。 因此,让我分享我的经验,使他人更轻松。 JMX操作的Ant任务 我决定遵循Tomcat文档,并使用与tomcat一起分发的ant任务。 仅作记录用途&#…

E1协议转换器使用中常见故障问题及处理方法总结

E1协议转换器也叫接口转换器,是实现数据通信网以太网接口与光纤通信传送网E1接口连接时进行两种接口转换的设备。广泛应用在传输站E1接口与网络交换机相连时的接口转换中。现飞畅科技小编对其使用过程中常见故障及解决方法进行归纳,希望对大家在应用此类…

使JavaDoc保持最新状态的工具

在许多项目中,文档不是最新的。 更改代码后,很容易忘记更改文档。 原因是可以理解的。 在代码中进行更改,然后调试,然后希望在测试中进行更改(或者,如果您使用的是更多TDD,则以相反的顺序进行更…

RS485转换器常见问题总结

通讯转换器主要应用于支持RS485通讯总线结构的工业控制自动化系统,其中包括一卡通、门禁系统、消费系统、考勤系统、、监控、楼宇对讲、停车场系统、自助银行系统、公共汽车收费系统、公路收费站系统等等。但是,我们在使用485转换器的过程中难免会遇到各…