商城项目源码地址 https://gitee.com/huyi612/hmall
使用jmeter测试高并发
传统单体项目的弊端
案例:如果某一个请求耗时太长会把tomcat的资源给占完了,导致其他请求进来耗时更长,甚至无法进入。
@RestController
@RequestMapping("hi")
public class HelloController {private final Map<String, AtomicInteger> countMap = new HashMap<>();@GetMappingpublic 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的依赖注入和自动装配功能。