怎样申请做c c 网站注册公司查名字哪个网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 06:44
当前位置: 首页 > news >正文
怎样申请做c c 网站,注册公司查名字哪个网站,电子商务网站开发的基本流程,php网站开发实例教程代码百度云高并发系统性能优化三板斧#xff1a;缓存 异步 限流 引言 在互联网应用的高并发场景下#xff0c;系统性能面临巨大挑战。以某电商平台会员活动为例#xff0c;活动期间瞬时QPS可达10万#xff0c;若未进行有效优化#xff0c;服务器将迅速崩溃。本文从缓存、异步、限…高并发系统性能优化三板斧缓存 异步 限流 引言 在互联网应用的高并发场景下系统性能面临巨大挑战。以某电商平台会员活动为例活动期间瞬时QPS可达10万若未进行有效优化服务器将迅速崩溃。本文从缓存、异步、限流三个核心维度结合实际案例详细解析高并发系统的性能优化策略并分享全链路压测与问题定位的实战经验。 一、缓存策略分层从本地到分布式的立体防护 1.1 本地缓存选型与实战Caffeine 本地缓存适用于高频读取、数据量小且实时性要求不高的场景。以用户权限校验为例 // Caffeine本地缓存配置 Configuration public class CacheConfig {Beanpublic LoadingCacheLong, UserPermission permissionCache() {return Caffeine.newBuilder().maximumSize(10_000) // 最大缓存数量.expireAfterWrite(10, TimeUnit.MINUTES) // 写入后10分钟过期.refreshAfterWrite(5, TimeUnit.MINUTES) // 写入后5分钟刷新.build(this::loadUserPermission); // 缓存加载方法}private UserPermission loadUserPermission(Long userId) {// 从数据库或远程服务加载用户权限return permissionService.queryByUserId(userId);} }Caffeine核心参数调优 maximumSize根据JVM内存大小合理设置避免OOMexpireAfterWrite结合业务数据更新频率设置refreshAfterWrite异步刷新机制减少缓存击穿风险 1.2 分布式缓存设计Redis 对于跨节点共享数据Redis是首选方案。以商品库存缓存为例 // Redis缓存操作示例 Service public class StockService {private static final String STOCK_KEY stock:product:%s;Autowiredprivate StringRedisTemplate redisTemplate;// 扣减库存public boolean deductStock(Long productId, int count) {String key String.format(STOCK_KEY, productId);// 使用Lua脚本保证原子性String script local stock tonumber(redis.call(get, KEYS[1])) if stock tonumber(ARGV[1]) then return redis.call(decrby, KEYS[1], ARGV[1]) else return -1 end;Long result redisTemplate.execute(new DefaultRedisScript(script, Long.class),Collections.singletonList(key),String.valueOf(count));return result ! null result 0;} }多级缓存架构 #mermaid-svg-liCKQRAAKH6a1eeb {font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-liCKQRAAKH6a1eeb .error-icon{fill:#552222;}#mermaid-svg-liCKQRAAKH6a1eeb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-liCKQRAAKH6a1eeb .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-liCKQRAAKH6a1eeb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-liCKQRAAKH6a1eeb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-liCKQRAAKH6a1eeb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-liCKQRAAKH6a1eeb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-liCKQRAAKH6a1eeb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-liCKQRAAKH6a1eeb .marker.cross{stroke:#333333;}#mermaid-svg-liCKQRAAKH6a1eeb svg{font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-liCKQRAAKH6a1eeb .label{font-family:“trebuchet ms”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-liCKQRAAKH6a1eeb .cluster-label text{fill:#333;}#mermaid-svg-liCKQRAAKH6a1eeb .cluster-label span{color:#333;}#mermaid-svg-liCKQRAAKH6a1eeb .label text,#mermaid-svg-liCKQRAAKH6a1eeb span{fill:#333;color:#333;}#mermaid-svg-liCKQRAAKH6a1eeb .node rect,#mermaid-svg-liCKQRAAKH6a1eeb .node circle,#mermaid-svg-liCKQRAAKH6a1eeb .node ellipse,#mermaid-svg-liCKQRAAKH6a1eeb .node polygon,#mermaid-svg-liCKQRAAKH6a1eeb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-liCKQRAAKH6a1eeb .node .label{text-align:center;}#mermaid-svg-liCKQRAAKH6a1eeb .node.clickable{cursor:pointer;}#mermaid-svg-liCKQRAAKH6a1eeb .arrowheadPath{fill:#333333;}#mermaid-svg-liCKQRAAKH6a1eeb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-liCKQRAAKH6a1eeb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-liCKQRAAKH6a1eeb .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-liCKQRAAKH6a1eeb .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-liCKQRAAKH6a1eeb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-liCKQRAAKH6a1eeb .cluster text{fill:#333;}#mermaid-svg-liCKQRAAKH6a1eeb .cluster span{color:#333;}#mermaid-svg-liCKQRAAKH6a1eeb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-liCKQRAAKH6a1eeb :root{–mermaid-font-family:“trebuchet ms”,verdana,arial,sans-serif;} 是 否 是 否 用户请求 本地缓存命中? 返回本地缓存数据 Redis缓存命中? 更新本地缓存 返回Redis数据 查询数据库 更新Redis缓存 更新本地缓存 返回数据库数据 二、异步化改造从同步阻塞到并行处理 2.1 线程池设计与优化 合理配置线程池参数是异步化的关键。以下是会员积分计算线程池配置 // 线程池配置 Configuration public class ThreadPoolConfig {Beanpublic ExecutorService pointCalculateExecutor() {return new ThreadPoolExecutor(10, // 核心线程数100, // 最大线程数60, // 空闲线程存活时间TimeUnit.SECONDS,new LinkedBlockingQueue(1000), // 任务队列new ThreadFactoryBuilder() // 线程工厂.setNameFormat(point-calculate-%d).build(),new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略);} }参数调优策略 核心线程数 CPU核心数 × (1 平均等待时间/平均处理时间)任务队列选择IO密集型选无界队列CPU密集型选有界队列 2.2 消息队列解耦与削峰 以订单处理为例使用RocketMQ实现异步解耦 // 订单生产者 Service public class OrderProducer {Autowiredprivate RocketMQTemplate rocketMQTemplate;public void sendOrder(Order order) {rocketMQTemplate.convertAndSend(order_topic, order);} }// 订单消费者 Component RocketMQMessageListener(topic order_topic, consumerGroup order_consumer_group) public class OrderConsumer implements RocketMQListenerOrder {Overridepublic void onMessage(Order order) {// 异步处理订单库存扣减、积分计算等orderService.processOrder(order);} }消息队列选型对比 特性KafkaRocketMQRabbitMQ吞吐量百万级TPS十万级TPS万级TPS可靠性高高中功能丰富度简单丰富顺序消息、事务消息丰富插件机制 三、限流组件选型从单机到分布式的流量控制 3.1 单机限流Guava RateLimiter 适用于微服务内部限流如接口防刷 // 令牌桶限流示例 Service public class LoginService {private final RateLimiter rateLimiter RateLimiter.create(10.0); // 每秒10个令牌public LoginResult login(String username, String password) {// 尝试获取令牌最多等待1秒if (!rateLimiter.tryAcquire(1, TimeUnit.SECONDS)) {return LoginResult.failed(请求过于频繁请稍后再试);}// 执行业务逻辑return userService.login(username, password);} }3.2 分布式限流Sentinel 在网关层实现全局限流 // Sentinel限流配置 Component public class GatewaySentinelConfig {PostConstructpublic void initFlowRules() {ListFlowRule rules new ArrayList();FlowRule rule new FlowRule();rule.setResource(api:/order/create); // 资源名rule.setCount(100); // 限流阈值rule.setGrade(RuleConstant.FLOW_GRADE_QPS); // QPS模式rule.setLimitApp(default);rules.add(rule);FlowRuleManager.loadRules(rules);} }熔断降级配置
Sentinel熔断降级配置
spring:cloud:sentinel:transport:dashboard: localhost:8080datasource:ds1:nacos:server-addr: localhost:8848dataId: ${spring.application.name}-sentinel.jsongroupId: DEFAULT_GROUPdata-type: jsonrule-type: flow四、会员活动场景全链路压测实践
4.1 压测环境准备 流量镜像 # 使用TCPCopy进行流量复制
tcpcopy -x 8080-192.168.1.100:8080 -s 192.168.1.101 -d数据构造 // 压测数据生成工具
Component
public class TestDataGenerator {Autowiredprivate UserMapper userMapper;public void generateTestUsers(int count) {for (int i 0; i count; i) {User user new User();user.setUsername(testuser i);user.setPassword(PasswordEncoder.encode(123456));userMapper.insert(user);}}
}4.2 压测执行与结果分析 JMeter压测脚本 ThreadGroup guiclassThreadGroupGui testclassThreadGroup testname会员活动压测stringProp nameThreadGroup.on_sample_errorcontinue/stringPropelementProp nameThreadGroup.main_controller elementTypeLoopControllerboolProp nameLoopController.continue_foreverfalse/boolPropstringProp nameLoopController.loops1000/stringProp/elementPropstringProp nameThreadGroup.num_threads500/stringPropstringProp nameThreadGroup.ramp_time10/stringProp
/ThreadGroup关键指标监控 #mermaid-svg-F9n3tCwtLKoHz5X6 {font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .error-icon{fill:#552222;}#mermaid-svg-F9n3tCwtLKoHz5X6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-F9n3tCwtLKoHz5X6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .marker.cross{stroke:#333333;}#mermaid-svg-F9n3tCwtLKoHz5X6 svg{font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-F9n3tCwtLKoHz5X6 .label{font-family:“trebuchet ms”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .cluster-label text{fill:#333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .cluster-label span{color:#333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .label text,#mermaid-svg-F9n3tCwtLKoHz5X6 span{fill:#333;color:#333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .node rect,#mermaid-svg-F9n3tCwtLKoHz5X6 .node circle,#mermaid-svg-F9n3tCwtLKoHz5X6 .node ellipse,#mermaid-svg-F9n3tCwtLKoHz5X6 .node polygon,#mermaid-svg-F9n3tCwtLKoHz5X6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-F9n3tCwtLKoHz5X6 .node .label{text-align:center;}#mermaid-svg-F9n3tCwtLKoHz5X6 .node.clickable{cursor:pointer;}#mermaid-svg-F9n3tCwtLKoHz5X6 .arrowheadPath{fill:#333333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-F9n3tCwtLKoHz5X6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-F9n3tCwtLKoHz5X6 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-F9n3tCwtLKoHz5X6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-F9n3tCwtLKoHz5X6 .cluster text{fill:#333;}#mermaid-svg-F9n3tCwtLKoHz5X6 .cluster span{color:#333;}#mermaid-svg-F9n3tCwtLKoHz5X6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:“trebuchet ms”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-F9n3tCwtLKoHz5X6 :root{–mermaid-font-family:“trebuchet ms”,verdana,arial,sans-serif;} 是 否 JMeter压测 Prometheus采集指标 Grafana可视化 是否达标? 压测通过 性能调优
五、Arthas实战快速定位性能瓶颈
5.1 方法执行时间分析
监控方法执行耗时
\( arthas \) trace com.example.service.OrderService processOrder #cost 1005.2 线程死锁检测
检测线程死锁
$ thread -b5.3 内存泄漏分析
查看对象分布
$ dashboard
导出堆转储文件
$ heapdump /tmp/dump.hprof六、优化成果与最佳实践
6.1 性能对比数据
优化维度优化前优化后提升比例平均响应时间500ms120ms76%最大QPS5005000900%系统吞吐量2000TPS15000TPS650%错误率5%0.1%98%
6.2 最佳实践总结 缓存策略 热点数据多级缓存本地Redis缓存失效时间打散避免缓存雪崩 异步设计 非核心流程优先异步化消息队列确保最终一致性 限流降级 分级限流系统级、应用级、接口级熔断降级策略慢调用比例、异常比例 监控体系 全链路监控请求链路、方法调用、SQL执行告警阈值动态调整
结论
缓存、异步、限流是高并发系统性能优化的核心手段。通过合理分层的缓存设计、科学的异步化改造和精准的限流策略可有效提升系统吞吐量和稳定性。结合全链路压测和Arthas等工具的深度应用能够快速定位并解决性能瓶颈。在实际项目中需根据业务特点选择合适的技术方案并持续优化调整才能构建出应对高并发挑战的健壮系统。
- 上一篇: 怎样申请自己企业的网站街舞舞团公司做网站
- 下一篇: 怎样使用仿站小工具做网站在百度怎么申请自己的网站
相关文章
-
怎样申请自己企业的网站街舞舞团公司做网站
怎样申请自己企业的网站街舞舞团公司做网站
- 技术栈
- 2026年03月21日
-
怎样申请一个免费网站discuz官网
怎样申请一个免费网站discuz官网
- 技术栈
- 2026年03月21日
-
怎样申请logo商标权大公司需要seo是什么职业
怎样申请logo商标权大公司需要seo是什么职业
- 技术栈
- 2026年03月21日
-
怎样使用仿站小工具做网站在百度怎么申请自己的网站
怎样使用仿站小工具做网站在百度怎么申请自己的网站
- 技术栈
- 2026年03月21日
-
怎样提高网站的流量轻云服务器菁英版 多个网站
怎样提高网站的流量轻云服务器菁英版 多个网站
- 技术栈
- 2026年03月21日
-
怎样提高网站权重网站关键词之间
怎样提高网站权重网站关键词之间
- 技术栈
- 2026年03月21日
