首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏好好学java的技术栈

    并发限流:8个步骤快速解决并发问题!

    现在很多公司的招聘信息,都会有这这么一条要求:有分布式、并发负载、可用系统设计、开发和调优经验者优先。 一提到并发、分布式、可用这些词,很多人都会不自然的想到新闻里阿里双11每秒创建几十万笔的交易订单(2019双11订单创建峰值创纪录每秒54.4万笔) 其实,并发并不神秘,说白了就是想办法搞定两个指标 1、网站并发量上来了?啥都不要管,先扩容,堆机器。机器多了自然需要集群技术、负载均衡了。(提升QPS) 2、机器多了也扛不住了?服务拆分,把集中式部署改成分布式部署。 (降低RT) 7、并发导致了脏数据?上分布式锁。(保证数据正确性) 8并发导致了数据不一致?上分布式事务。(保证数据正确性) 架构从来都不是设计出来的,是演进出来的。

    1.4K20发布于 2020-05-08
  • 来自专栏Java实战博客

    1 Netty 网络并发框架

    Netty是当前非常流行的网络通讯开源框架并发可靠,底层就可以用Netty支撑。 端 并发应用 本质是NIO框架,适用于服务器通讯的多种场景 什么是同步 和 异步 同步: 浏览器发送请求,等待服务端进行相应后浏览器在做操作 这个过程就叫同步 异步:浏览器发送请求,无需服务器响应出结果 ,继续浏览器渲染接下来的操作,这个过程就叫异步 Netty 结构图 Netty 是基于 JDK下的NIO 的框架 image.png Netty 场景 RPC框架 :阿里的分布式框架Dubbo用到了 手游 I/O模型使用场景 BIO:适用于连接数目少且固定的架构,并发不适用,是JDK1.4之前唯一选择 NIO:适用于连接数目多,但是连接短。JDK1.4 开始支持。 会利用OS惨与并发操作,编程较为复杂。

    97220编辑于 2022-01-19
  • 来自专栏C++学习历程

    并发内存池框架设计

    项目源码:https://gitee.com/kkkred/thread-caching-malloc 引言 在并发场景(如百万QPS的API网关、实时游戏服务器)中,内存分配的延迟与碎片是性能瓶颈的核心来源 传统单内存池因全局锁竞争和内存碎片问题,难以满足吞吐需求。 获取逻辑,揭示并发场景下内存分配的「无锁化」与「高效协同」之道。 五、总结与性能优化 并发内存池框架通过​​ThreadCache(本地无锁)、CentralCache(全局协调)、PageCache(系统桥梁)​​的三级架构,实现了: ​​低延迟​​:ThreadCache 的无锁操作+哈希桶索引的O(1)计算,将分配/释放延迟降至O(1); ​​低碎片​​:按Size Class分类+页级对齐的设计,减少内存碎片; ​​并发​​:线程本地存储避免了全局锁竞争,分段锁/双链表优化了多线程协作

    37610编辑于 2025-07-10
  • 来自专栏技术趋势

    秒级达百万并发框架-Disruptor

    Disruptor介绍 Disruptor是一个高性能的并发框架,主要应用于创建具有吞吐量、低延迟、无锁(lock-free)的数据结构和事件处理系统。 它最初由LMAX公司开发的,已经成为了业界广泛使用的高性能并发框架。 Disruptor框架的特点和优势包括: 高性能:Disruptor框架能够通过无锁的方式提供非常并发性能和吞吐量,比如在大规模消息发布订阅场景下,能够每秒处理数百万个消息。 Disruptor 的吞吐量、低延迟以及可扩展性好的特点,使得它成为许多高并发应用的首选方案之一。 Disruptor的基本使用 以下是用于disruptor这个框架的基本功能的学习demo。 ,只是我们很多时候不了解而以,较老一点的程序人应该都有所了解~,当然本文主要是用于了解Disruptor这个框架实现源理和基本应用以便后续一些并发场景设计方案可以借鉴,希望能与各位共同前进~,最后可以参考下面文献还是挺不错的借鉴

    3.3K20编辑于 2023-09-01
  • 来自专栏半生瓜のblog

    【Linux】多进程并发设计框架示例

    多进程并发设计框架 建议根据cpu核心数量来设置子进程的数量。 建议将对应某一进程绑定到某一cpu上。(cpu亲缘性) 优点: 充分利用多核系统的并发处理能力。 cpu亲缘关系,将进程绑定在其中的一个核上 static void worker_process_init(int worker){ cpu_set_t cpu_affinity; //多核并发处理

    94520编辑于 2023-05-13
  • 来自专栏路人甲Java

    java并发系列 - 第8天:线程组

    java并发系列第8篇文章 线程组 我们可以把线程归属到某个线程组中,线程组可以包含多个线程以及线程组,线程和线程组组成了父子关系,是个树形结构,如下图: ? java并发系列目录: 1.java并发系列-第1天:必须知道的几个概念 2.java并发系列-第2天:并发级别 3.java并发系列-第3天:有关并行的两个重要定律 4.java并发系列 - 第4天:JMM相关的一些概念 5.java并发系列第5天-深入理解进程和线程 6.java并发系列 - 第6天:线程的基本操作 7.java并发系列 - 第7天:volatile与Java内存模型

    63230发布于 2019-12-10
  • 来自专栏运维经验分享

    ApacheTomcat 8 9 安全配置与并发优化

    maxIdleTime="60000" prestartminSpareThreads = "true" maxQueueSize = "100" /> 参数解释: maxThreads:最大并发数 application/x-font-otf,image/svg+xml,image/jpeg,image/png,image/gif,audio/mpeg,video/mp4" URIEncoding="utf-8" 一般8K。 compressableMimeType:配置想压缩的数据类型 URIEncoding:网站一般采用UTF-8作为默认编码。 processorCache:协议处理器缓存的处理器对象来提高性能。 如果使用Servlet 3.0异步处理,默认是使用大maxThreads和预期的并发请求的最大数量(同步和异步)。

    1.4K20发布于 2019-03-15
  • 来自专栏冰河技术

    并发】如何使用Java7中提供的ForkJoin框架实现并发程序?

    作者个人研发的在并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。 ForkJoin是由JDK1.7之后提供的多线程并发处理框架。ForkJoin框架的基本思想是分而治之。什么是分而治之? Fork/Join框架的核心类 Fork/Join框架的核心是两个类:ForkJoinPool和ForkJoinTask。 log.error("exception", e); } } } 写在最后 如果觉得文章对你有点帮助,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习并发编程技术 最后,附上并发编程需要掌握的核心技能知识图,祝大家在学习并发编程时,少走弯路。 ?

    1.1K10发布于 2020-10-29
  • 来自专栏架构专题

    没有预热,不叫并发,叫并发

    大家都知道,并发系统有三把斧子:缓存、熔断和限流。但还有一把斧子,经常被遗忘在角落里,郁郁不得志,那就是预热。 ? 现象举例 先说两个现象。这些现象,只能在并发的系统中出现。 一、DB重启后,瞬间死亡 一个并发环境下的DB,进程死亡后进行重启。由于业务处在高峰期间,上游的负载均衡策略发生了重分配。刚刚启动的DB瞬间接受了1/3的流量,然后load疯狂飙升,直至再无响应。 当服务重新加入集群时,却发生了大量耗时的请求,在请求量的情况下,甚至大批大批的失败。 引起的原因大概可以归结于: 1、服务启动后,jvm并未完全准备完毕,JIT未编译等。 当系统长期处于低水位的情况下,流量突然增加时,直接把系统拉升到水位可能瞬间把系统压垮。

    3.2K21发布于 2019-07-10
  • 来自专栏服务器优惠介绍

    并发服务器框架设计方案

    简单谈一谈并发服务器框架设计的基本思路 基本的服务器框架都是C/S结构的,请求和相应流程是这样的: 这样的框架存在一个很严重的问题,当客户端并发请求到来,服务器需要进行大量的数据库操作,假设数据库最大连接数为 这种做法有效的降低了服务器的压力,但是没有提高处理速度, 仅仅保证了请求被缓存,处理效率仍受限于数据库的并发数。 到目前为止,这个框架可以适用于大部分服务器逻辑。为保证数据库的响应速度和处理效率,可以对数据库进行分区。 数据库分区有两种形式(分库、分表) 分库:数据库可以按照一定的逻辑把表分散到不同的数据库。 到此为止,服务器框架介绍完毕。

    1.6K11发布于 2019-07-11
  • 来自专栏上云

    并发服务器框架设计方案

    简单谈一谈并发服务器框架设计的基本思路 基本的服务器框架都是C/S结构的,请求和相应流程是这样的: [gao1.png] 这样的框架存在一个很严重的问题,当客户端并发请求到来,服务器需要进行大量的数据库操作 这种做法有效的降低了服务器的压力,但是没有提高处理速度, 仅仅保证了请求被缓存,处理效率仍受限于数据库的并发数。 [gao7.png] 到目前为止,这个框架可以适用于大部分服务器逻辑。为保证数据库的响应速度和处理效率,可以对数据库进行分区。 到此为止,服务器框架介绍完毕。 并发服务器框架设计方案用到的腾讯云产品: 腾讯云服务器:https://cloud.tencent.com/product/cvm 腾讯云数据库:https://cloud.tencent.com/product

    1.7K11发布于 2019-07-08
  • 来自专栏Java职业技术分享

    Java异步NIO框架Netty实现高性能并发

    相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。 传统RPC调用性能差的三宗罪 网络传输方式问题:传统的RPC框架或者基于RMI等方式的远程服务(过程)调用采用了同步阻塞IO,当客户端的并发压力或者网络时延增大之后,同步阻塞IO会由于频繁的wait导致 开发人员一般可以根据自己的需要来选择合适的模式,一般来说,低负载、低并发的应用程序可以选择同步阻塞IO以降低编程复杂度。但是对于负载、并发的网络应用,需要使用NIO的非阻塞模式进行开发。 但是对于负载、大并发的应用却不合适,主要原因如下: 1) 一个NIO线程同时处理成百上千的链路,性能上无法支撑,即便NIO线程的CPU负荷达到100%,也无法满足海量消息的编码、解码、读取和发送; 2 主要分享分布式架构、可扩展、高性能、并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频。

    3.2K10发布于 2018-09-28
  • 来自专栏技术记录

    netty框架实现websocket达到并发

    但是在实际项目中,那样的用法是不可取的,理由是tomcat对并发的支持不怎么好,特别是tomcat9之前,可以测试发现websocket连接达到的数量很低,且容易断开。 什么是Netty Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的,它已经得到成百上千的商用项目验证,例如Hadoop的RPC框架Avro就使用了 Netty作为底层通信框架,其他还有业界主流的RPC框架,也使用Netty来构建高性能的异步通信能力。 ; 性能,通过与其他业界主流的NIO框架对比,Netty的综合性能最优; 成熟、稳定,Netty修复了已经发现的所有JDK NIO BUG,业务开发人员不需要再为NIO的BUG而烦恼; 社区活跃,版本迭代周期短 最后给大家一条建议,在实际项目中,别让这种长连接一直保持,在nginx中可以设置连接无交流超时断开,大概设置10分钟左右,然后每8分钟定时从服务端发送一条心跳,具体想法就看你们喽~ url:http

    10.3K110发布于 2018-01-30
  • 来自专栏后台技术底层理解

    redis并发可用

    redis 实现并发主要依靠主从架构,一主多从. 对于性能来说,单主用来写入数据,单机几万QPS,多从用来查询数据,多个从实例可以提供每秒 10w 的 QPS。 如果想要在实现并发的同时,容纳大量的数据,那么就需要 redis 集群, 使用 redis cluster 模式,可以提供每秒几十万的读写并发。 这样也可以很轻松实现水平扩容,支撑读并发。 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况,所以为了缓解读的压力,所以进行读写分类,并对读进行扩展。 哨兵用于实现 redis 集群的可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。 ==怎么保证redis是并发以及可用的==? sdown 和 odown 转换机制 sdown 是主观宕机,就一个哨兵如果自己觉得一个 master 宕机了,那么就是主观宕机。

    3.2K10发布于 2020-08-04
  • 来自专栏后台及大数据开发

    并发】秒杀系统并发请求排队处理

    今天无意中看见了这位兄弟的文章 通过请求队列的方式来缓解并发抢购(初探)  但文章最后说并发超过500 就会出现超发,看了下代码,的确有这个问题 抽空简单完善了下,经压力测试后发现暂无超发现象, 下面为我的代码 欢迎指正 由于是在windows下测试,并发高了就报错  java.net.BindException: Address already in use  这个初看上去很像端口被占用,其实是因为已经完成请求的

    4K11发布于 2018-08-02
  • 来自专栏Java探索之路

    并发技术

    而大数据也带来的并发的问题. 解决并发问题是大数据时代的永恒主题. 我们假设已经解决并发的问题, 我们可以通过对数以亿计的数据做日志分析 , 从中分析用户行为 ,分析在哪个渠道的用户最具购买力 , 哪个渠道最容易接纳我们的产品. 即: 并发>日志>分析行为>画像>推荐>服务 这便是大数据时代下企业发展之路 ,因此 ,解决并发问题便是关键. 通过相应技术, 解决并发问题 ,为企业节省更多资金 ,有益企业良性发展. 国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。 ,而apache 则是阻塞型的,在并发下nginx 能保持低资源低消耗 高性能, 高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速 apache 相对于nginx 的优点

    4.4K50发布于 2020-07-27
  • 来自专栏PHP在线

    大话-并发

    简单理解下并发: 并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生并发,如贴吧的爆吧,就是恶意的并发请求, 也就是DDOS攻击,再屌丝点的说法就像玩撸啊撸被 并发的数据处理: 通过表设计或者SQL语句来防止包并发下的数据错乱问题 通过程序代码防止包并发下的数据错乱问题 ---- 如例子:通过表设计防止并发导致数据错乱 需求点 【签到功能】 一天一个用户只能签到一次 , 签到成功后用户获取到一个积分 已知表 用户表,包含积分字段 并发意淫分析(属于开发前的猜测): 在并发的情况下,会导致,一个用户签到记录会有多条,或者用户签到后不止加一积分 0的时候无法进行抽奖 已知表: 用户表,包含积分字段 奖品表,包含奖品剩余数量字段 并发意淫分析(属于开发前的猜测): 在并发的情况下,会导致用户参与抽奖的时候积分被扣除,而奖品实际上已经被抽完了 在并发接口的设计中可以使用具有并发能力的编程语言去开发,如:nodejs 做web接口 服务器部署,图片服务器分离,静态文件走CDN 并发测试神器推荐 Apache JMeter Microsoft

    2.2K40发布于 2018-03-08
  • 来自专栏全栈程序员必看

    Qt并发

    QtConcurrent是一个命名空间,提供了用于编写并发软件的更高层次的类和算法。该命名空间中有一个重要的类,QThreadPool,这是一个管理线程池的类。 要驱动动画(animation),建议使用QTimer,QTimeLine或者动画框架(Animation Framework)。这些API并不需要额外创建其它线程。 8)如果各QObject具有不同的线程关联,那么就不能以父—子关系来连接它们。 9)通过从run()函数直接或者间接调用QThread::exec(),可以让线程进入事件循环。

    2.3K20编辑于 2022-09-03
  • 来自专栏CSDN搜“看,未来”

    并发(一)

    ---- 文章目录 取经的地方 曾经,我眼中的并发 如何理解并发 并发系统的设计目标是什么? 宏观目标 微观目标 并发的实践方案有哪些? ---- 如何理解并发 并发意味着大流量,需要运用技术手段抵抗流量的冲击。那到底多大并发才算高并发呢? 1、**不能只看数据,要看具体的场景。 8并发处理,通过多线程将串行逻辑并行化。 9、预计算,比如抢红包场景,可以提前计算好红包金额缓存起来,发红包时直接使用即可。 10、缓存预热,通过异步任务提前预热数据到本地缓存或者分布式缓存中。 ❇ 可用的实践方案 1、对等节点的故障转移,Nginx和服务治理框架均支持一个节点失败后访问另一个节点。 8、监控报警:全方位的监控体系,包括最基础的CPU、内存、磁盘、网络的监控,以及Web服务器、JVM、数据库、各类中间件的监控和业务指标的监控。

    1.6K40发布于 2021-09-18
  • 来自专栏就业 C++ 综合学习

    【项目日记】并发内存池项目---整体框架设计

    并发内存池项目---整体框架设计 1 整体框架 现代很多的开发环境都是多核多线程,在申请内存的场景下,必然会存在激烈的锁竞争问题,锁竞争会有一部分的性能损耗(因为需要阻塞等待)。 malloc本身其实已经很优秀,那么我们项目的原型tcmalloc就是在多线程并发的场景下更胜一筹,效率更加优秀。这次我们实现的内存池需要考虑以下几方面的问题: 性能问题。 PageCache) 他们的关系是这样的: 2 线程缓存 thread cache:线程缓存是每个线程独有的,用于小于256KB的内存的分配,线程从这里申请内存不需要加锁,每个线程独享一个cache,这也就是这个并发线程池高效的地方 我们默认系统的一页内存是8KB,span管理的大块儿内存实际上是大页内存,可能是一页,两页内存,这个大页内存会被切分为小块儿的内存,8字节对应的哈希桶中会切分为8字节的小块儿内存,这样可以很方便的将小块儿内存分配给线程缓存

    31110编辑于 2024-09-06
领券