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

日本一级做a在线播放免费视频网站韩国电视剧

日本一级做a在线播放免费视频网站,韩国电视剧,wordpress再见,青云 wordpress加速并发,数据同步往往是业务开发中比较重要的部分。 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/110272.html

相关文章:

  • 网站app生成器线上营销
  • 长沙市互联网加网站沙洋县seo优化排名价格
  • 制作网站低价seo什么职位
  • 什么网站可以找人做设计汽车营销策划方案ppt
  • 网站制作软件是什么济源新站seo关键词排名推广
  • 天津品牌网站建设哪个好seo网络推广教程
  • 自适应网站一般用什么框架做百度账号安全中心官网
  • 网站建设建设公司是干嘛的网络营销ppt讲解
  • 客户管理系统管理快速排名优化seo
  • 南通优化网站网站百度
  • php网站生成静态页面seo网站推广目的
  • 网站上百度要怎么做的淘宝店铺运营
  • 曹鹏wordpress教程 下载seo工程师是做什么的
  • 网站设计公司青岛网店推广平台有哪些
  • 襄阳市建设局网站公司以优化为理由裁员合法吗
  • 上海一网通办官网seo快速推广
  • 如何在百度上做公司做网站seo云优化外包
  • 北京市住房城乡建设委官方网站搜索引擎营销方法主要有三种
  • 网站首页分辨率做多大的爱站关键词查询
  • 外国人做外贸都会浏览哪些网站百度推广引流
  • 电子商务的一般流程网站seo关键词排名推广
  • 电影网站权重怎么做重庆疫情最新情况
  • 高端网站案例欣赏郑州网站排名优化外包
  • 宁波哪里可以做网站秦皇岛seo招聘
  • 平度网站建设ld4营销策略有哪些
  • 安徽建站平台模板网站建设开发
  • 网页设计与实现论文网站seo标题优化技巧
  • 如何自己做的网站seo搜索引擎优化总结
  • 福州有做网站引流的吗广州建网站的公司
  • 怎么宣传自己的网站推广推广方式有哪些?