服务器同时性高,几乎是所有程序员都想拥有的经验。 理由很简单。 随着流量的增长,会出现各种技术问题,如接口响应超时、CPU负载上升、GC频繁出现、死锁、大数据存储等。 这些问题会不断提高技术的深度。
在过去的面试中,如果候选人太贵在做合并项目,我通常会让对方谈谈我对太高合并的理解,但很少有人能系统地回答这个问题,大致分为以下几类。
1、数据化指标没有概念:不知道选择什么样的指标来衡量高并发性系统? 不区分并发量和QPS,甚至不知道系统总用户数、活跃用户数、平峰和高峰QPS和TPS等关键数据。
2、设计了一些方案,但对细节的把握不够。 不能说明那个方案应该关注的技术点和可能带来的副作用。 例如,读取性能中的瓶颈会导致缓存部署,但会忽略缓存命中率、热点密钥和数据一致性等问题。
3、了解片面,将高并发设计等同于性能优化。 虽然并发编程、多级缓存、异步和水平扩展备受争议,但却忽略了高可用性设计、服务管理和运维保障。
4、掌握大计划,却忽略了最基本的东西。 可以明确垂直分层、水平分区、缓存等大思路,但没有意识到分析数据结构是否合理、算法是否高效,没有考虑从根本的IO和计算两个维度进行细节优化
本文想结合自己高并发项目的经验,系统地总结高并发所需的知识和实践思路。 我希望能帮到你。 内容分为以下三个部分。
如何理解高并发性?
高并发系统设计的目标是什么?
高并发的实践方案是什么?
01如何理解高并发性?
高合并意味着大流量,需要采用技术手段抵抗流量冲击,与操作流量相比,这些手段可以使流量更顺利地系统处理,给用户带来更好的体验。
我们常见的高合并场景有淘宝双11、春运门票、微博大v热点新闻等。 除了这些经典之外,每秒数十万个请求的秒杀系统、每日千万级下单系统、每日亿级日常信息流系统等,都可以归类为高合并。
显然,上述高合并场景,合并量各不相同,那么有多少合并是高合并呢?
1、看具体业务场景,而不是只看数字。 10W QPS的秒杀是高合并,1W QPS的信息流不能说不是高合并。 信息流场景包括复杂的推荐模型和各种人工策略,其业务逻辑可能比秒杀场景复杂10倍以上。 因此,如果不在同一个维度上,就没有任何比较的意义。
2、业务均可从0到1,等量和QPS只是参考指标。 最重要的是,在业务量逐渐是原来的10倍、100倍的过程中,是否用高并发性的处理方法发展系统,从架构设计、编码实现、产品方案等维度预防和解决了高并发性引起的问题。 不是通过升级硬件或添加机器进行水平扩展。
另外,各个高并发场景的业务特征完全不同。 有看了写少的信息流场景,也有看了写多的交易场景。 下期发布:它有解决不同场景的高并发性问题的共同技术方案吗?
文章来源:高性能服务器开发文中图片来源:百度图片
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn