随笔分类 - 高并发架构
多线程及高并发知识
发表于 2021-11-29 18:40阅读:385评论:0推荐:0
摘要:引言 在石墨文档的部分业务中,例如文档分享、评论、幻灯片演示和文档表格跟随等场景,涉及到多客户端数据同步和服务端批量数据推送的需求,一般的 HTTP 协议无法满足服务端主动 Push 数据的场景,因此选择采用 WebSocket 方案进行业务开发。 随着石墨文档业务发展,目前日连接峰值已达百万量级,
阅读全文 »
发表于 2021-09-07 12:42阅读:172评论:0推荐:0
摘要:在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别 定时任务有明确的触发时间,延时任务没
阅读全文 »
发表于 2021-06-03 23:47阅读:2224评论:0推荐:0
摘要:ExecutorService是java中的一个异步执行的框架,通过使用ExecutorService可以方便的创建多线程执行环境。 本文将会详细的讲解ExecutorService的具体使用。 创建ExecutorService 通常来说有两种方法来创建ExecutorService。 第一种方式
阅读全文 »
发表于 2021-06-03 13:32阅读:243评论:0推荐:0
摘要:1、java.util.concurrent.atomic 的包里有AtomicBoolean, AtomicInteger,AtomicLong,AtomicLongArray, AtomicReference等原子类的类,主要用于在高并发环境下的高效程序处理,来帮助我们简化同步处理. 在Java
阅读全文 »
发表于 2021-05-18 14:26阅读:96评论:0推荐:1
摘要:什么是CompletionService? 当我们使用ExecutorService启动多个Callable时,每个Callable返回一个Future,而当我们执行Future的get方法获取结果时,可能拿到的Future并不是第一个执行完成的Callable的Future,就会进行阻塞,从而不能
阅读全文 »
发表于 2021-05-18 10:00阅读:1201评论:0推荐:0
摘要:ExecutorService Java.util.concurrent.ExecutorService接口代表一种异步执行机制,它能够在后台执行任务。因此ExecutorService与thread pool是非常相似的。事实上,在java.util.package包中ExecutorServic
阅读全文 »
发表于 2021-05-14 16:10阅读:96评论:0推荐:0
摘要:ThreadPoolExecutor提供了四个构造方法: 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSize, // 1 int maximumPoolSize, // 2 long keepAliveT
阅读全文 »
发表于 2021-05-14 15:27阅读:115评论:0推荐:0
摘要:如何安全的结束一个正在运行的线程 java.lang.Thread类包含了一些常用的方法,如:start(), stop(), stop(Throwable) ,suspend(), destroy() ,resume()。通过这些方法,我们可以对线程进行方便的操作,但是这些方法中,只有start(
阅读全文 »
发表于 2021-04-20 13:53阅读:138评论:0推荐:0
摘要:一、并发控制 当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。 没有做好并发控制,就可能导致脏读、幻读和
阅读全文 »
发表于 2021-04-15 11:49阅读:530评论:0推荐:1
摘要:常见的分布式系统唯一ID生成方案 1. 数据库自增长序列或字段 最常见的方式。利用数据库,全数据库唯一。 优点: 1)简单,代码方便,性能可以接受。 2)数字ID天然排序,对分页或者需要排序的结果很有帮助。 缺点: 1)不同数据库语法和实现不同,数据库迁移的时候或多数据库版本支持的时候需要处理。 2
阅读全文 »
发表于 2021-02-20 09:35阅读:249评论:0推荐:0
摘要:一、前言 我们小伙伴应该都听说够消息中间件MQ,如:RabbitMQ,RocketMQ,Kafka等。引入中间件的好处可以起到抗高并发,削峰,业务解耦的作用。 如上图: (1)订单服务投递消息给MQ中间件 (2)物流服务监听MQ中间件消息,从而进行消费 我们这篇文章讨论一下,如何保障订单服务把消息成
阅读全文 »