这是一个分布式锁学习的案例。
软件架构说明
├─doc # 相关文档说明
│ ├─assets # 截图
│ └─script # SQL脚本
└─src # 源码
├─main
│ ├─java
│ │ └─com
│ │ └─olinonee
│ │ └─framework
│ │ └─lock
│ │ ├─config # 配置类
│ │ ├─controller # 控制器
│ │ ├─entity # 实体类
│ │ ├─mapper # 数据访问层
│ │ └─service # 业务类
│ │ └─impl
│ └─resources # 资源目录
│ ├─static # 静态资源
│ └─templates # 模板资源
└─test # 测试类
└─java
└─com
└─olinonee
└─framework
└─lock
- 单例模式
public class StockController {
// 取消注释,进行测试
private ISinglePatternStockService stockService; // 单例
// ...
}
- 多例模式
public class StockController {
// 取消注释,进行测试
private IPrototypePatternStockService stockService; // 多例
// ...
}
- 单例 + 事务
public class StockController {
// 取消注释,进行测试
private ITransactionalStockService transactionalStockService; // 事务
// ...
}
- 集群 使用均衡负载,nginx.conf配置内容如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 负载均衡
upstream distributedLockSample {
server localhost:10010;
server localhost:10086;
}
server {
listen 80;
server_name localhost;
# 反向代理
location / {
proxy_pass http://distributedLockSample;
}
}
}
为了测试集群,使用idea开2个不同的实例,配置实例截图如下:
环境变量设置如下:
--server.port=10086