今天去面试一家做电商项目的公司,一上来就问:你是怎么解决高并发的?看来高并发这个问题在面试中是逃离不了了,现在写一点自己的理解,理解得很浅薄,但也希望能帮助大家。

我觉得要回答这个问题可以从这几个方面入手:

第一、硬件层面,服务器用更大的内存,更好的硬盘。考虑到money,这肯定不是面试官想听的答案,不过可以提上一嘴。

第二、软件层面:

     1.应用服务器这块肯定是最先遭不住的,所以先搞一个niginx做负责均衡,后台多部署几台应用服务器,

       将请求均匀的分发到每台服务器上,就是所谓的集群部署;

     2.有了集群部署后,应用服务器的压力暂时抗住了,现在就轮到数据库这块遭不住了。这时候就要考虑分库分表了,

        还有就是读写分离,将所有写的压力搞到主库master上,读的压力搞到从库slave。就是分库分表+读写分离;

     3.如果访问量继续扩大,那就横向扩展数据库服务器,但是又要考虑到money的问题,所以这也行不通。再把缓存服务器

        搞起,做他一个缓存集群。

     4.上一步的缓存集群只是解决了读的问题,其实写的压力还是很大,这个时候就要引入消息中间键了,像各种mq之类的

        东东。因为有些业务上虽然一次要写入很多条数据,但是不是都是立马要写入的。举个例子,像用户付款后,先把付钱

        相关的数据存了,其他记录放在mq里,系统空闲了再慢慢来存。

    说到底就是从架构层面来回答这个问题,个人觉得会更好一点,当然上面说了个大概思路,里面涉及很多技术细节,我也在

   学习当中,只能靠大家自己去学习领悟了。惭愧!还有就是提醒一下面试的朋友,当你说了这些思路过后,紧接着的问题就是

   分布式相关的,像你怎么解决分布式session不一致的问题,分布式事务等等。祝大家面试顺利!

 

技术
©2020 ioDraw All rights reserved
PTA快速排序SK海力士全球首发DDR5内存:频率冲上5600MHz、容量可达256GB鸿蒙系统基于Linux打造,其本质还是安卓系统?LeetCode快速入门① ——数组系列上(面试常问,建议收藏)特征工程【评论】华为的鸿蒙系统会开源吗?ETL工具kettle与datax的对比测试案例之Oracle to Oraclespark.sql.shuffle.partitions 和 spark.default.parallelism 的区别华为鸿蒙系统能否与安卓、苹果分庭抗礼?centos7部署springboot jar包