首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏设计模式

    OceanBase 并发场景技术解读

    OceanBase 并发关键技术 数据库系统是属于既要又要的系统,既要保证数据库的正确性,又要高并发。在并发场景下保证数据库的正确性,关键在于保证事务的 ACID。 以 ACID 的 I(Isolation) 为例,I 表示的是在并发事务的场景下,事务并发执行的效果与事务串行执行的效果完全相同,这种隔离级别就是所说的可串行化隔离级别,但是可串行化隔离级别的代价比较大 标准中关于隔离级别的定义存在的一些问题: SQL-92 里关于异常现象的定义过于狭隘,即使排除了3个异常现象也没有办法做到可串行化; 新增了几种新的异常现象,脏写、丢失更新、读倾斜、写倾斜; 分布式事务一致性 并发事务的场景下 在这种场景下事务 T2 需要等待的时间窗口,就是两阶段提交过程中从 prepare 阶段到 commit 阶段这个时间窗口,这个时间窗口要远远小于两阶段锁的等锁时间。 这个就是通常所说的级联回滚,在数据库论文里经常会提到我们应该避免级联回滚,但是在实际的应用场景里,事务提交失败的比例是非常低的,因此出现级联回滚的可能性非常低,在实际的测试来看也能够证明这一点。

    73800编辑于 2024-05-24
  • 来自专栏云计算与大数据

    MySQL并发场景了解01

    2K20编辑于 2022-01-13
  • 来自专栏后端技术探索

    并发场景,nginx怎么限速

    如果单个IP在非常短的时间内并发发送多个请求,结果会怎样呢? ? 我们使用单个IP在10ms内发并发送了6个请求,只有1个成功,剩下的5个都被拒绝。 这在实际场景中未免过于苛刻,真实网络环境中请求到来不是匀速的,很可能有请求“突发”的情况,也就是“一股子一股子”的。 单个IP 10ms内并发发送6个请求,结果如下: ? 跟实验2相比,请求成功率没变化,但是总体耗时变短了。这怎么解释呢?

    2.2K30发布于 2018-12-05
  • 来自专栏云计算与大数据

    MySQL并发场景了解02

    2.2K10编辑于 2022-01-17
  • 来自专栏惨绿少年

    并发场景 LVS 安装及可用实现

    ü 简单一句话,当并发超过了Nginx上限,就可以使用LVS了。 ü 日1000-2000W PV或并发请求1万以下都可以考虑用Nginx。 ü 大型门户网站,电商网站需要用到LVS。 b)请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高,比Nginx代理模式强于此处。 日1000-2000W PV或并发请求1万以下都可以考虑用haproxy/Nginx(LVS的NAT模式) h)直接对外的访问业务,例如web服务做RS节点,RS最好用公网IP地址。 这个是自己开发服务器可用脚本及所有可用软件必须考虑到的问题。 VIP,目标IP为CIP LVS-NAT模型的特性 l RS应该使用私有地址,RS的网关必须指向DIP l DIP和RIP必须在同一个网段内 l 请求和响应报文都需要经过Director Server,负载场景

    3.5K00发布于 2017-12-27
  • 来自专栏愿天堂没有BUG(公众号同名)

    并发场景中的Queue集合

    • LinkedBlockingQueue:这是一种内部基于链表的,在并发场景中使用的阻塞队列,是一种无界队列。 • LinkedTransferQueue:这是一种内部基于链表的,可以在并发场景中使用的阻塞队列,是一种无界队列。 • PriorityBlockingQueue:这是一种内部基于数组的,采用小顶堆结构的,可以在并发场景中使用的阻塞队列,是一种无界队列。 • DelayQueue:这是一种内部依赖PriorityQueue的,采用小顶堆结构的,可以在并发场景中使用的阻塞队列,是一种无界队列。 在并发场景中,Queue/Deque集合除了可以充当多线程间数据操作的载体,还可以主导线程间的数据协作工作。要完成数据传输的主导工作,这种集合就一定有对应的功能。

    79010编辑于 2023-01-10
  • 来自专栏愿天堂没有BUG(公众号同名)

    并发场景中的集合总结

    还有哪些并发场景中的常用集合没有被提及 由于篇幅所限,本书不能一一概括JUC中的所有集合,下面对Java中的其他原生集合进行补充说明。 • ConcurrentLinkedQueue队列:和LinkedBlockingQueue队列相比,这也是一种内部基于链表的,可以在有并发场景中使用的容量无界的、具有先进先出工作特点的队列。 并发场景中的集合可借鉴的设计思想 根据本书对JUC中的集合(包括Queue集合、Deque集合、Map集合、List集合、Set集合等)进行的介绍可知,Java提供的工作在并发场景中的原生集合的性能并不是在任何使用场景中都是最好的 不过JUC提供的集合在大部分并发场景中已足够稳定,并且适合运行在大部分并发场景中。 简单地说,一种单一的锁实现方式,并不能解决并发场景中集合工作的全方位问题,在保证线程安全的情况下,只有针对不同的工作场景采用不同的工作模式,才能对集合的工作性能进行平衡。

    73420编辑于 2023-01-10
  • 来自专栏一个执拗的后端搬砖工

    并发场景缓存真的可靠吗?

    并发场景缓存真的可靠吗? ? 有一定开发经验的研发人员都知道,缓存是并发场景解决方案中的大杀器,应用中引入了缓存可以将大部分查询流量引入到缓存上,从而降低DB的qps来保护有限的底层存储资源。 ,并且查询频率远大于更新频率,对于缓存的使用,大多数中小型应用使用以上图中所描述的链路基本不会存在什么问题,但是我们要思考一个问题,在并发很大的场景下,单纯的使用缓存来抵抗qps真的可靠吗? ,但是往往事与愿违,这种理想的状态连阿里这种体量的平台都没有做到,相信国内其他中小企业也基本上不会尝试这么做,那么既然问题知道了,现状就是这样,我们当然要考虑这种极端场景的解决方案,那就是并发场景的另外一个大杀器 在此处输入标题 在互联网大环境中,很多复杂的场景并不能单纯的依靠一种手段来做到尽善尽美,有时候几种技术实现融合到一起能够更好地解决问题,对于本篇所讲述的并发场景下,单纯的依靠缓存来解决QPS

    1.5K30发布于 2020-11-19
  • 仓颉并发原语:并发场景下的精妙实践

    仓颉并发原语:并发场景下的精妙实践 仓颉技术作为新一代分布式系统框架,其并发原语设计深刻体现了分层抽象与硬件亲和的哲学。本文将深入探讨其核心并发原语的设计原理与实践要诀。 一、设计哲学:轻量级与确定性 仓颉抛弃了传统互斥锁的粗粒度控制,采用三层并发模型: 原子层:基于CAS(Compare-And-Swap)实现无锁数据结构 \end{cases} 协程层:通过轻量级线程实现百万级并发 仓颉的并发控制启示我们: 代价模型:CAS操作在低冲突时性能优异,但当冲突率超过 p>1np > \frac{1}{n} (n为处理器核心数)时,退化为互斥锁更高效 局部性原则:分布式场景下遵循 开发者需深入理解其背后的 MESIMESI 缓存一致性协议、 TSOTSO 内存模型等底层机制,才能在亿级并发场景下游刃有余。 本文涉及技术点已在仓颉v3.2.1实测验证,百万QPS场景下上下文切换开销降低至传统线程模型的 1/871/87 。

    14910编辑于 2026-05-06
  • 来自专栏冰河技术

    并发】面试官:讲讲并发场景下如何优化加锁方式?

    作者个人研发的在并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。 写在前面 很多时候,我们在并发编程中,涉及到加锁操作时,对代码块的加锁操作真的合理吗?还有没有需要优化的地方呢? 问题阐述 在《【并发】优化加锁方式时竟然死锁了!!》 requester.applyResources(this, target)){ //循环体为空 ; } 如果ResourcesRequester类的applyResources()方法执行的时间非常短,并且程序并发带来的冲突不大 但是,如果ResourcesRequester类的applyResources()方法执行的时间比较长,或者说,程序并发带来的冲突比较大,此时,可能需要循环成千上万次才能同时获取到转出账户和转入账户。 在并发编程中,如果一个线程获得了synchronized互斥锁,但是不满足继续向下执行的条件,则需要进入等待状态。此时,可以使用Java中的wait()方法来实现。

    64421发布于 2020-10-29
  • 来自专栏Spark学习技巧

    并发场景下锁的使用技巧

    来源:33h.co/dVMB 如何确保一个方法,或者一块代码在并发情况下,同一时间只能被一个线程执行,单体应用可以使用并发处理相关的 API 进行控制,但单体应用架构演变为分布式微服务架构后,跨进程的实例部署 那么锁都有哪些类型,为什么要使用锁,锁的使用场景有哪些?今天我们来聊一聊并发场景下锁的使用技巧。 锁类别 不同的应用场景对锁的要求各不相同,我们先来看下锁都有哪些类别,这些锁之间有什么区别。 =1 ){ //业务逻辑. } } Java中的的synchronize是重量级锁 ,属于悲观锁; 数据库行锁属于悲观锁; 扣减操作案例 这里举一个非常常见的例子,在并发情况下余额扣减 并发情况下第1笔请求卖出100个,第2批卖出100元,导致当前的库存数量为负数。遇到这种场景应该如何破解呢?这里列举四种方案。 代码耗时过长还是比较常见的场景,假如你的代码中有外部通讯接口调用,就容易产生这样的场景

    96820发布于 2020-09-08
  • 来自专栏程序员Alan

    并发场景微服务实战(一)

    并发场景微服务实战(一)你好,我是程序员Alan,很高兴遇见你.说到并发和微服务,你是不是和我一样有很多的困惑?知道微服务开发热门,但一直是外行看热闹,不知道里面具体有哪些内容。 知道并发系统开发知识,是获取大厂Offer的利器,可是工作中遇不到并发的需求场景。了解过微服务开发、并发系统开发理论,苦于没实战经验。 知道单个技术点的应用,但怎么将技术融合起来有些模糊。 我反复思考之后,决定以一个虚拟的并发场景的微服务系统为主线,一步步将技术点串联起来,多线程 -> 并发 -> 服务注册 -> 服务发现 -> 服务接口管理 -> 配置中心 -> 分布式事务 -> 统一网关 -> 服务限流降级 -> 性能测试等,一个点一个点慢慢啃,由点成线,由线成面, 系统性从 0 到 1 的创造一个并发场景的微服务系统。 并发:即使公司业务流量平稳,并不表示不会遇到一些并发的需求场景

    50120编辑于 2022-10-27
  • 来自专栏InvQ的专栏

    并发场景下如何实现系统限流?

    在分布式可用设计中,限流应该是应用最广泛的技术手段之一,今天一起来讨论一下,为什么需要限流,以及常见的限流算法都有哪些。 限流后的策略,其实和 Java 并发编程中的线程池非常类似,我们都知道,线程池在任务满的情况下,可以配置不同的拒绝策略,比如: AbortPolicy,会丢弃任务并抛出异常; DiscardPolicy

    1.1K31发布于 2020-10-19
  • 来自专栏架构之路

    并发场景下的httpClient优化使用

    EntityUtils.toString(entity); 这里我们相当于额外复制了一份content到一个字符串里,而原本的httpResponse仍然保留了一份content,需要被consume掉,在并发且 在本业务场景里,我们相当于有少数固定客户端,长时间极高频次的访问服务器,启用keep-alive非常合适 再多提一嘴,http的keep-alive 和tcp的KEEPALIVE不是一个东西。 PoolingHttpClientConnectionManager(); connectionManager.setMaxTotal(500); connectionManager.setDefaultMaxPerRoute(50);//例如默认每路由最高50并发 ,具体依据业务来定 也可以针对每个路由设置并发数。 4.其他 通过以上步骤,基本就完成了一个支持并发的httpclient的写法,下面是一些额外的配置和提醒: 4.1 httpclient的一些超时配置 CONNECTION_TIMEOUT是连接超时时间

    7.2K90发布于 2018-03-19
  • 来自专栏开源部署

    并发场景下的httpClient优化使用

    EntityUtils.toString(entity); 这里我们相当于额外复制了一份content到一个字符串里,而原本的httpResponse仍然保留了一份content,需要被consume掉,在并发且 在本业务场景里,我们相当于有少数固定客户端,长时间极高频次的访问服务器,启用keep-alive非常合适 再多提一嘴,http的keep-alive 和tcp的KEEPALIVE不是一个东西。 PoolingHttpClientConnectionManager(); connectionManager.setMaxTotal(500); connectionManager.setDefaultMaxPerRoute(50);//例如默认每路由最高50并发 ,具体依据业务来定 也可以针对每个路由设置并发数。 4.其他 通过以上步骤,基本就完成了一个支持并发的httpclient的写法,下面是一些额外的配置和提醒: 4.1 httpclient的一些超时配置 CONNECTION_TIMEOUT是连接超时时间

    1.1K30编辑于 2022-07-13
  • 来自专栏Java项目实战

    并发场景下的接口调用优化

    经过分析,这个接口天然适合用并发编程进行优化。今天就来聊聊我是如何用Java中的并发工具类来优化这个接口的。 为了提高并发程度,我们可以使用Java并发包中的ExecutorService来实现线程池,然后提交多个任务到线程池中执行。 到此,经过并发编程的优化,这个接口的瓶颈就基本上解决了。调用下游接口的时间大大缩短,系统的吞吐量也得到了提升。 并发编程是一个非常重要且强大的工具,在 Java 中有很多现成的并发工具类供我们使用,例如线程池、Future等,合理利用可以大大优化我们系统的性能。

    1.1K30编辑于 2023-09-25
  • 来自专栏Golang语言社区

    Golang适合并发场景的原因分析

    京东云消息推送系统 (团队人数:4) 单机并发tcp连接数峰值118w 内存占用23G(Res) Load 0.7左右 心跳包 4k/s gc时间2-3.x s C10K问题 为什么可以支撑这么并发的请求呢 然后他讨论了用不同的方式实现大规模并发服务的技术。 10M-Concurrent-Connections Coroutine模型 和 非阻塞/异步IO(callback) 不论线程还是进程,都不可能一个连接创建一个,相应的成本太大,多进程和多线程都有资源耗费比较大的问题,所以在并发量的服务器端使用并不多 持续几秒的短期连接,比如快速事务,如果每秒处理1000个事务,只有约1000个并发连接到服务器。 事务延长到10秒,要维持每秒1000个事务,必须打开1万个并发连接。 而且调度的开销非常小,一颗CPU调度的规模不下于每秒百万次,这使得我们能够创建大量的goroutine,从而可以很轻松地编写并发程序,达到我们想要的目的。

    2.9K81发布于 2018-03-21
  • 来自专栏冰河技术

    并发并发场景下如何优化加锁方式?看完这篇我确实明白了!!

    作者个人研发的在并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。 写在前面 很多时候,我们在并发编程中,涉及到加锁操作时,对代码块的加锁操作真的合理吗?还有没有需要优化的地方呢? 前言 在《【并发】优化加锁方式时竟然死锁了!!》 但是,如果ResourcesRequester类的applyResources()方法执行的时间比较长,或者说,程序并发带来的冲突比较大,此时,可能需要循环成千上万次才能同时获取到转出账户和转入账户。 在并发编程中,如果一个线程获得了synchronized互斥锁,但是不满足继续向下执行的条件,则需要进入等待状态。此时,可以使用Java中的wait()方法来实现。 写在最后 如果觉得文章对你有点帮助,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习并发编程技术。 最后,附上并发编程需要掌握的核心技能知识图,祝大家在学习并发编程时,少走弯路。 ?

    1.2K20发布于 2020-10-29
  • 来自专栏Diuut

    简易Redis锁应用实现(并发场景优化)

    需求 发送短信的接口,并发的情况下,第一条请求进来,判断redis里近一分钟没有发过短信,还在逻辑处理的时候,第二条请求也进来了,这个时候第一个进程还没提交更改redis缓存中的数据,第二条获取的状态近一分钟内依旧没有发送 场景复现:用JMeter模拟请求短信发送,指定30个线程,每个线程循环3次,间隔0秒 短信成功发送了三条,注意当前还只是测试环境中的一个服务器,若生产环境中的多台并发,情况会更加严重 类似场景如购物平台抢购

    52020编辑于 2023-03-10
  • 来自专栏信且诚心之动

    并发场景下的限流,熔断,降级(待续)

    并发场景下,服务器可能会因为爆炸性的流量冲击导致拒绝服务,甚至整个服务集群都会因为出现雪崩效益而大面积宕机。那么,如何在并发场景下依然能提供稳定且高效的服务? 众所周知,高效的服务是建立在稳定的服务器基础上的,如果服务器只在某一时刻好用,某一时刻一直转圈圈甚至连接失败,那你在那个好用时刻的光表现将完全被这个不好用给淹没,因此,服务器的稳定是第一优先级。

    1.1K30编辑于 2022-12-28
领券