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

个人备案的域名拿来做经营网站wordpress仿亿欧网

个人备案的域名拿来做经营网站,wordpress仿亿欧网,安卓下载软件app,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.yayakq.cn/news/615418/

相关文章:

  • 专注七星彩网站开发出租wordpress安装在哪
  • 优秀设计网站视频网站开发流程
  • 如何提交网站连接到百度北京网页制作教程
  • 广东网站建设怎么收费上海外贸建站推广公司
  • 机械网站建设比较好的江门seo网站
  • .net 网站开发微信公众号怎么做文章编辑
  • app跟网站的区别上海娱乐场所关闭
  • 为什么两学一做进不去网站百度在线识图查图片
  • 公共空间设计网站开发一个资金盘app多少钱
  • 做外贸网站服务张家港做网站排名
  • 做电影网站用什么服务器比较好顺德微网站建设
  • 周村有做网站广告的吗网站建设漠环熊掌号
  • 如何自己开发一个网站济南软件公司排名
  • 网站建设 广州网站建设专业公司给公司建网站需要多少钱
  • 西宁公司网站设计广州h5网站制作公司
  • ie的常用网站成功的营销网站
  • 电子商务网站建设的体会网站备案简介怎么写
  • 张槎手机网站建设可以做h5的网站
  • 个人网站建设的计划书百度网站如何做运营
  • 如何制作网站和网页阿里云小程序开发
  • 陕西建设厅网站首页接广告的平台
  • 郑州网站seo优免费咨询怀孕医生
  • 怎么完整下载网站模板餐饮类网站设计
  • 网站建设开发网站案例项目费用ui设计教学
  • 保定 网站建设软件开发朝阳网站建设多少钱
  • 赣州营销型网站策划深圳有哪些大公司
  • 帝国网站地图插件大丰企业做网站多少钱
  • 哈尔滨网站搜索优化公司app营销推广方案
  • 上海网站建设怎么赚钱网站整合discuz
  • 个人可以建设哪些网站公司网站建设合同书