当前位置: 首页 > news >正文

定制网站建设费用预算沈阳关键词优化费用

定制网站建设费用预算,沈阳关键词优化费用,开发网站的可行性,自助建站免费申请并发,数据同步往往是业务开发中比较重要的部分。 shenyu网关数据同步设计方案图 shenyu官网给出的同步设计方案图如下: 基于事件异步并发框架com.lmax.disruptor 下载下示例代码,跑起来发现,在shenyuAdmin模块里面用到了com.lma…

并发,数据同步往往是业务开发中比较重要的部分。

shenyu网关数据同步设计方案图

shenyu官网给出的同步设计方案图如下:

基于事件异步并发框架com.lmax.disruptor

下载下示例代码,跑起来发现,在shenyuAdmin模块里面用到了com.lmax.disruptor

引用一段文章

LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。

Disruptor是如何工作的?

Disruptor 有一个基于数组的循环数据结构(环装缓冲区)。这个循环数据结构,它是个拥有下个可用元素引用的数组。预先分配了对象内存空间。生产者与消费者通过这个循环数据结构进行读写操作,并不会有锁或资源竞争。

Disruptor 中,所有事件(events)以组播的方式被发布给所有消费者,以便下游队列通过并行的方式进行消费。因为消费者的并行消费,需要协调消费者间的依赖关系(依赖关系图)。

生产者和消费者中有个序列计数器,指示缓冲区中当前正在被它所处理的元素。所有生产者或消费者都只可以修改它自己的序列计数器,但同时可以读取其他的序列计数器

Disruptor 介绍

Disruptor 是苹国外厂本易公司LMAX开发的一个高件能列,研发的初夷是解决内存队列的延识问顾在性能测试中发现竟然与10操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCn演讲后,获得了业界关注,201年,企业应用软件专家Martin Fower专门撰写长文介绍。同年它还获得了Oradle官方的Duke大奖。目前,包括Apache StomCame、 L0g4 2在内的很多知名项目都应用了Disrupior以获取高性能。注意,这里所说的队列是系统内部的内存队列,而不是Kaka这样的分布式队列。
Github: https://github.com/LMAX-Exchange/disruptor
Disruptor实现了队列的功能并且是一个有界队列,可以用于生产者-消费者模型。

JUC包下的队列

  1.  juc下的队列大部分采用Reentranlock锁方式保证线程安全。在稳定性要求特别高的系统中,为了防止生产者速度过快,导致内存溢出,只能选择有界队列。
  2. 加锁的方式通常会严重影响性能。线程会因为竞争不到锁而被挂起,等待其他线程释放锁而唤醒,这个过程存在很大的开销,而且存在死锁的隐患。
  3. 有界队列通常采用数组实现。但是采用数组实现又会引发另外一个问题false sharing(伪共享)。

CompletableFuture创建异步操作


CompletableFuture 提供了四个静态方法来创建一个异步操作:

  1. public static CompletableFuture<Void> runAsync(Runnable runnable)
  2. public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)
  3. public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)
  4. 4 public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)

这四个方法区别在于


1,runAsync 方法以Rumnable函数式接口类型为参数,没有返结果,upplyAsync 方法Suppler函数式接口类型为参数,返回结果类型为U; Suppler 接的 get) 方法是有返回值的 (会阻塞)


2,没有指定Executor的方法,默认会使用ForkJoinPool.commonPool()作为它的线程池执行异步代码。如果指定线程池,则使用指定的线程池运行。

3,默认情况下 CompletableFuture 会使用公共的 ForkJoinPoa 线程池,这个线程池默认创建的线程数是 CPU 的核数(也可以通过 JVMoption;Djava,utl.concurrent.ForkJoinPod.common.paralelism 来设置 ForkJoinPodl 线程池的理数),如果有 CompletlableFuture 共享-个线理池,那么一旦有任务执行-些很慢的 I/O 操作,就会导致线程池中所有线程都阻塞在 I/O操作上,从而造成线程饥钱,进而影响整个系统的性能。所以,强烈建议你要根据不同的业务类型创建不同的线程池,以避免互相干扰。

http://www.ds6.com.cn/news/44511.html

相关文章:

  • 苍南做网站哪里找苏州网站优化公司
  • 什么是二次开发seo变现培训
  • 常州工厂网站建设澳门seo关键词排名
  • 淘宝客网站做seo有用吗免费手游推广平台
  • 成都网站建设电话网络营销经典案例
  • 南通做网站baidu tg网站seo方案模板
  • php网站开发论文架构全网媒体发布平台
  • 公司网站制作新手教程网站关键词优化办法
  • 永州建设公司网站代运营竞价公司
  • 怎么做自动发卡的网站导航网站怎么推广
  • 新手如何入侵一个网站1元涨1000粉
  • 深圳做h5网站公司百度seo可能消失
  • 兰州哪家网站做推广效果好阿里巴巴官网首页
  • 网站建设价钱差异宁波seo优化排名
  • cms内容网站管理系统软文营销的技巧
  • 网页给别人做的 网站后续收费竞价托管哪家效果好
  • 手机触屏网站幻灯片装修公司网络推广方案
  • 做网站可以用自己的主机济南网络优化网站
  • dw做的静态网站怎么分享链接百度业务员联系电话
  • mvc网站开发实例app代理推广平台
  • mac 重新安装wordpress临沂seo网站管理
  • 有哪些做ppt用图片的网站广州网站推广
  • 江苏省城乡住房建设厅网站华为云速建站
  • 摄图网的图片可以做网站吗网络推广的细节
  • 哪个网站可以做图交易平台下载百度2023最新版安装
  • 网站主页设计注意点如何创建自己的个人网站
  • 永嘉网站制作公司百度反馈中心
  • app开发怎么赚钱佛山网站seo
  • 网站建设都用哪些软件上海高端seo公司
  • 中国卫生网seo 工具分析