商城项目源码地址 https://gitee.com/huyi612/hmall
使用jmeter测试高并发
传统单体项目的弊端
**案例:**如果某一个请求耗时太长会把tomcat的资源给占完了,导致其他请求进来耗时更长,甚至无法进入。
java
@RestController
@RequestMapping("hi")
public class HelloController {
private final Map<String, AtomicInteger> countMap = new HashMap<>();
@GetMapping
public String hello(HttpServletRequest request) throws InterruptedException {
Thread.sleep(300);
String ip = request.getRemoteAddr();
AtomicInteger ai = countMap.get(ip);
if (ai == null) {
ai = new AtomicInteger(0);
countMap.put(ip, ai);
}
return String.format("<h5>欢迎访问商城, 这是您第%d次访问<h5>", ai.incrementAndGet());
}
}
微服务划分
按照业务划分微服务,例如:商品服务、用户服务、交易服务、购物车服务等。
springcloud基于springboot的依赖注入和自动装配功能。