
分布式&高并发&多线程
文章平均质量分 82
分布式&高并发&多线程
闲狗
悠闲的狗生
展开
-
Java高并发秒杀系统(二)
4 秒杀压测-Jmeter压力测试4.1 Jmeter快速入门并发数为多少时,网站的QPS或TPS(每秒)是?推荐一个小娱乐:linux 自定义欢迎界面 /etc/motd文件压测商品列表接口/goods/to_list打开JMeter,测试计划,添加,Threads(Users),线程组测试计划,添加,配置元件,HTTP请求默认值线程组,添加,取样器,...原创 2019-02-11 15:30:39 · 1188 阅读 · 1 评论 -
高并发秒杀系统分析
学习自慕课网Java高并发秒杀API之业务分析1 秒杀业务分析1.1 秒杀系统业务流程秒杀系统的核心——库存的处理1.2 用户针对库存业务分析1.3 什么是购买行为1.4 为什么需要事务1.5 故障责任是谁?1.6 关于数据落地——MySQL VS NoSQLNoSQL对于事务的支持还不完善而事务机制依然是目前最可靠的落地方案MySQ...原创 2019-01-25 17:15:15 · 1142 阅读 · 1 评论 -
Java 高并发秒杀系统架构(一)
1 开场白1.1 项目概述重点:缓存+异步+分布式+优雅的代码1.2 项目开发环境与框架搭建基于Spring Boot搭建项目Spring MVC配置繁多,而Spring Boot只有一个配置文件application.properties参考:《Spring Boot 入门教程 》1.2.1 集成MyBatis参考文档@Transactional ...原创 2019-01-31 16:37:44 · 1543 阅读 · 1 评论 -
使我短命的线程&线程池
老大让我把一个单线程的日播放量统计任务变成一个多线程的任务,时间由 2小时 优化到 30 分钟以内,然后有了我与线程池死去活来的日子。学习自:Java 并发编程 78 讲1 线程池的由来在 Java 诞生之初是没有线程池的概念的,而是先有线程,随着线程数的不断增加,人们发现需要一个专门的类来管理它们,于是才诞生了线程池。没有线程池的时候,每发布一个任务就需要创建一个新的线程,这样在...原创 2020-05-08 08:26:11 · 813 阅读 · 1 评论 -
不是朱锁锁的“锁”
如果学习 Java 的中“锁” 能跟看朱锁锁一样快乐就好了原创 2021-01-15 13:23:25 · 387 阅读 · 1 评论 -
苦苦的分布式ID
生活太苦了,只能把技术变甜了。1 灵魂拷问:为什么需要分布式ID(分布式集群环境下的全局唯⼀ID )?ID是数据的唯一标识,传统的做法是利用 UUID 和数据库的自增 ID,在互联网企业中,大部分公司使用的都是 Mysql,并且因为需要支持事务,所以通常会使用 Innodb 存储引擎,UUID太长以及无序,所以并不适合在 Innodb 中来作为主键,自增 ID 比较合适。但是,随着公司的业务发展,数据量越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现原创 2020-12-09 00:41:38 · 301 阅读 · 0 评论 -
学到忧愁之-分布式事务
下单分布式事务解决采用本地消息表和重试表的方式实现,有一个中间状态(冻结核销回滚)痛点:1.事务消息方式对数据库依赖较大,定时任务扫表去兜底重试调用解冻资产接口,重试无策略且对无需重试的异常。识别功能不强,会造成无效的重试任务调用,浪费程序线程资源。2.现有分布式事务处理对代码倾入性较大。两阶段提交:1 阶段修改完订单状态,先不提交事务,但保存sql执行成功的结果。再去减库存,保存sql执行成功的结果。2 阶段分别提交事务...原创 2022-03-07 00:59:40 · 558 阅读 · 0 评论 -
偶识一致性 Hash 算法
1 基本思路2 手写实现一致性 Hash 算法2.1 普通 Hash 算法实现public class GeneralHash { public static void main(String[] args) { // 定义客户端IP String[] clients = new String[]{"10.78.12.3","113.25.63.1","126.12.3.8"}; // 定义服务器数量 int serv原创 2020-12-05 21:41:13 · 331 阅读 · 0 评论