范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

使用ChronicleQueue创建低延迟的TB级别的队列DZone

  本文介绍如何使用开源 Chronicle Queue创建巨大的持久队列,同时保持可预测和一致的低延迟。
  在本文中,目标是维护来自市场数据馈送的对象队列(例如,在交易所交易的证券的最新价格)。也可以选择其他业务领域,例如来自物联网设备的感官输入或读取汽车行业的碰撞记录信息。原理是一样的。
  首先,定义一个持有市场数据的类:
  public class MarketData extends SelfDescribingMarshallable {      int securityId;     long time;     float last;     float high;     float low;      // Getters and setters not shown for brevity }
  注意:在实际场景中,使用float和double保存货币值时必须非常小心,否则可能会导致舍入问题 [Bloch18, Item 60]。但是,在这篇介绍性文章中,我想保持简单。
  还有一个小的实用函数MarketDataUtil::create将在调用时创建并返回一个新的随机MarketData对象:static MarketData create() {      MarketData marketData = new MarketData();     int id = ThreadLocalRandom.current().nextInt(1000);     marketData.setSecurityId(id);     float nextFloat = ThreadLocalRandom.current().nextFloat();     float last = 20 + 100 * nextFloat;      marketData.setLast(last);     marketData.setHigh(last * 1.1f);     marketData.setLow(last * 0.9f);     marketData.setTime(System.currentTimeMillis());      return marketData; }
  现在,目标是创建一个持久、并发、低延迟、可从多个进程访问并且可以容纳数十亿个对象的队列。
  天真的方法
  有了这些类,就可以探索使用ConcurrentLinkedQueue的简单方法:public static void main(String[] args) {      final Queue queue = new ConcurrentLinkedQueue<>();     for (long i = 0; i < 1e9; i++) {         queue.add(MarketDataUtil.create());     }    }
  导致失败的有几个原因:ConcurrentLinkedQueue将为添加到队列中的每个元素创建一个包装节点。这将有效地使创建的对象数量增加一倍。对象放置在 Java 堆上,导致堆内存压力和垃圾收集问题。在我的机器上,这导致我的整个 JVM 变得无响应,唯一的办法是使用"kill -9"强行杀死它。无法从其他进程(即其他 JVM)读取队列。一旦 JVM 终止,队列的内容就会丢失。因此,队列不是持久的。
  查看其他各种标准 Java 类,可以得出结论,不支持大型持久队列。
  Chronicle Queue
  Chronicle Queue 是一个开源库,旨在满足上述要求。这是设置和使用它的一种方法:public static void main(String[] args) {      final MarketData marketData = new MarketData();     final ChronicleQueue q = ChronicleQueue             .single("market-data");      final ExcerptAppender appender = q.acquireAppender();      for (long i = 0; i < 1e9; i++) {         try (final DocumentContext document =                      appender.acquireWritingDocument(false)) {               document                     .wire()                     .bytes()                     .writeObject(MarketData.class,                              MarketDataUtil.recycle(marketData));         }     } }
  使用配备 2.3 GHz 8 核英特尔酷睿 i9 的 MacBook Pro 2019 时,仅使用一个线程即可插入每秒超过 3,000,000 条消息。队列通过给定目录"market-data"中的内存映射文件持久化。人们会期望MarketData对象至少占用 4 (int securityId) + 8 (long time) + 4*3 (float last, high 和 low) = 24 字节。
  在上面的示例中,附加了 10 亿个对象,导致映射文件占用 30,148,657,152 个字节,这意味着每条消息大约 30 个字节。在我看来,这确实非常有效。
  从编年史队列中读取很简单。继续上面的示例,下面显示了如何从队列中读取前两个MarketData对象:public static void main(String[] args) {      final ChronicleQueue q = ChronicleQueue             .single("market-data");        final ExcerptTailer tailer = q.createTailer();      for (long i = 0; i < 2; i++) {          try (final DocumentContext document =                      tailer.readingDocument()) {              MarketData marketData = document                     .wire()                     .bytes()                     .readObject(MarketData.class);              System.out.println(marketData);         }     } }
  还有许多其他功能超出了本文的范围。例如,可以将队列文件设置为以特定间隔(例如每天、每小时或每分钟)滚动,从而有效地创建信息分解,以便随着时间的推移清理旧数据。还有一些规定能够隔离 CPU 并将 Java 线程锁定到这些隔离的 CPU,从而显着减少应用程序抖动。
  Chronicle Queue更多:使用Chronicle Queue创建低延迟的TB级别的队列 - DZone

docker常用命令常用命令dockerversion显示docker的版本信息dockerinfo显示docker的系统信息,包括镜像和容器的数量docker命令help帮助命令帮助文档地址httpgit命令别名让命令行操作起飞信奉命令行是艺术的伙伴一定不会错过alias给常用命令加速这个功能。今天就给git加加速。日常操作飞一样的感觉。让GUI相形见绌。ggitgagitaddgaagitaddallg欧盟启动430亿欧元芯片投资计划欧洲跟随美国制定了大规模增加半导体制造的计划,布鲁塞尔方面正试图确保驱动全球经济的芯片供应。欧盟委员会(EuropeanCommission)公布一项430亿欧元的投资计划时表示,我对大数据等高科技向纵深发展的一点思考cp我看是否利用大数据,互联网,5G,北斗导航等等这些数字化的信息服务于农业,从而调整有针对性的农业生产,像利用大数据分析全国各地农业生产种植品种是否合理?不能今年市场短缺产品,明在重庆跑滴滴收入怎么样?今年我坐过一次滴滴车,当时我问了司机一天能挣多少钱?她说200一300元一天,主要是平台收取费用太高,百分之二十几,现在还有T3出行,也是网约车,再加上出租车,也许等到疫情过后会有为什么Android们的相机不愿用大底了?硬哲学底大一级压死人,这个老法师口中的金科玉律,在智能手机上似乎已经失效。不同相机所搭载不同尺寸的传感器尺寸。图片来自henrys。com智能手机摄像头的底虽然逐步变大,但仍然没能迈过一国芯科技董秘回复国芯科技的芯片可以应用在基于数字人民币的新型支付生态,包括数字钱包数字货币方面国芯科技(688262)02月11日在投资者关系平台上答复了投资者关心的问题。投资者你公司上市才不到一个月,股价就跌破发行价,请问公司的价值在哪里?公司的这种形象和表现,如何让投资药店里2元钱一盒的阿莫西林与十几元的效果差别大吗?谢谢邀请,这个类似的问题我以前回答过。这个跟我回答2块钱的维生素c和100块的维生素c有什么区别?是一个道理的。2元钱一盒的阿莫西林与几十元一盒的主要区别在于生产提取工艺外包装,对求介绍企业怎么做弹性福利效果更好?弹性福利,可以在很大程度上帮助企业管理好员工福利这项成本支出,并能兼顾员工对于企业福利的满意度。根据关爱通调研显示,优质企业提供更丰富的员工福利项目,整体福利水平明显高于普通企业,从滴滴总裁患癌这件事引发的深思,这三类女性应做好防范远离癌症2015年9月30日,滴滴公司内部的一封邮件引发热议,发件人是滴滴高管柳青,柳传志之女。柳青在邮件里用寥寥几语道出自己罹患乳腺癌即将离开工作岗位去接受治疗,虽然语言诙谐幽默,字里行姚班麻省理工的学霸们开了个公司,IDGOPPO都投了在创投圈,这样的一幕并不罕见。2月9日,宸境科技完成数千万美元A轮融资,投资方包括上海人工智能产业股权投资基金IDG资本三七互娱OPPO等,本轮融资将主要用于技术研发产品落地及优秀
节能降耗,蔚来ES8带你走在全民行动的最前沿近日以来,油价也是一路飙升,持续上涨,这让很多燃油车主纷纷向新能源汽车投来了羡慕的目光。说起说起新能源汽车,在国内市场,蔚来汽车的影响力还是非常大的,今天就来说一下蔚来的ES8,全极目锐评悟空保1元保险陷阱将被查,自动扣费的套路应有解决之道极目新闻评论员屈旌首月1元的保险套路此前被媒体曝光后,绝大多数以首月1元购买600万医疗保障为噱头的绝大多数保险产品被叫停了,但是那些已生效的保单仍在自动扣费,并严重困扰着投保人。地球开启自我保护模式?比尔盖茨预警地球将恢复出厂设置笔者杰鲁鲁科技发展迅速,让我们的生活变得便捷了起来。但是大伙有没有想过一件事情,我们只看到科技进步的好处,却没有料想到,其实科技进步的坏处也是很多的。就比如说,人类过量使用化石能源他放弃铁饭碗,花114万买了一个濒临倒闭的厂,现如今怎么样了?近年来,新能源汽车已经成为行业的新宠,呈一片繁荣发展之势。新能源汽车的动力,就来自于锂电池。随着越来越多新能源汽车的出现,锂电池的需求量也大幅增长。锂资源,成了全球新能源汽车厂商眼1。3L油耗日系靠谱混动SUV,后排超宽敞又舒适,实拍本田皓影PHEV本田皓影phev从当前整个局势以及社会环境上来看,入手汽车的话的,还是新能源比较务实些。不愿意入手纯电动的,新能源混动车子也不错,第一油耗低省钱,第二上绿牌日出省心。今天给大家带来SpaceX星链将涨价鞭牛士3月23日消息,据外媒报道,埃隆马斯克旗下太空探索技术公司SpaceX声称,其卫星互联网服务星链将涨价,而通货膨胀则是主要原因。该公司在一封邮件中对用户表示由于通货膨胀水平过中兴通讯美国胜诉中兴通讯在2021MWCS期间发布5GATG,在成熟标准5G陆地移动通信技术上进行创新,构建一张地空宽带立体覆盖网络,为后舱乘客提供机上娱乐机上办公定制等和地面4G5G网络无差异的顶配超15999?iPhone14ProMax售价曝光产业链在一早曝光了iPhone14系列的售价,备受关注的iPhone14Pro以及14ProMax可能会出现1Tb容量的81T顶配,售价或高达1499美元,折合人民币10000元左迪士尼部分员工罢工,抗议该公司对佛州教育法案的反应美国各地的华特迪士尼公司(WaltDisneyCompany,DIS)少数员工周二罢工,并聚集在一起,抗议他们所说的该公司继续未支持LGBT员工的做法。罢工标志着这家娱乐业巨头内部自然调查超23科学家同意开会来点小酒作者倪思洁温才妃辛雨胡珉琦最近,自然的一项调查显示,超过23的科学家认为,不应该禁止在科学会议上饮酒。该调查始于2021年12月20日,邀请受访者匿名提交评论,近1500名科学家参量子电池来了?未来EV充满电最快只需几秒速度提升200倍财联社(上海,编辑黄君芝)讯,无论是光伏还是核聚变,人类文明迟早都必须转向可再生能源。考虑到人类日益增长的能源需求和化石燃料的有限性,这是不可避免的。因此,科学家为开发替代能源进行