前言
现在很多公司的招聘信息,都会有这这么一条要求:有分布式、高并发、高负载、高可用系统设计、开发和调优经验者优先。
写这个岗位描述的 HR,恨不得把自己知道的所有看上去高大上的词全都堆砌上,恨不得让别人一看就会认为这是一家巨牛 X 的公司。
其实,高并发并不神秘,说白了就是想办法搞定两个指标:提升 QPS、降低 RT。并且同时保证数据的正确性、系统的可用性就 OK 了。
1.网站并发量上来了?啥都不要管,先扩容,堆机器。机器多了自然需要集群技术、负载均衡了。(提升 QPS)
2.机器多了也扛不住了?服务拆分,把集中式部署改成分布式部署。(提升 QPS)
3.分布式了还是扛不住?先做降级,再做限流。(保证系统可用性)
4.数据库扛不住了?上分布式缓存。(降低 RT)
5.缓存上了之后,数据还是扛不住?那就考虑读写分离、分库分表、数据库容灾。
6.系统间同步交互有延迟?解耦,上异步方案,采用消息中间件。(降低 RT)
7.高并发导致了脏数据?上分布式锁。(保证数据正确性)
8.高并发导致了数据不一致?上分布式事务。(保证数据正确性)
注意:
首先,架构从来都不是设计出来的,是演进出来的。不要不设计,也不要过度设计。系统流量上来了,先直接扩容而不是上来就搞很复杂的架构。
其次,就算是再牛 X 的架构,使用了再先进的技术,阿里巴巴也不能靠几十台机器就抗的住双十一!
当然,具体的高并发实操肯定不止这么简单,如果想要学习高并发或者 Java 的多线程、分布式等技术
上干货!!!
分布式技术必备的学习文档
本文档分为 8 个版块,从基本的分布式理论开始,然后逐个击破,掌握分布式的各个核心的技术领域。由于篇幅的原因,下文只展示了每个版块的目录部分。需要完整版-点击这里即可
第一版块:分布式的基础篇
主要内容有: 线程、通信、一致性、容错性、CAP 理论、安全性、并发。
第二个版块:分布式的架构体系
主要内容有: 基于对象的体系结构、面向服务的架构(SQA)、REST 风格的架构、微服务架构(MSA)、容器技术、Serverless 架构。
第三个版块:分布式消息服务
主要内容有: ApacheActiveMQ、RabbitMQ、RocketMQ、Apache kafka。
第四个版块:分布式计算
主要内容有: MapReduce、ApacheHadoop、Apache Spark、Apache Mesos。
第五个版块:分布式存储
主要内容有:Bigtable、Apache HBase、Apache Cassandra 、Memcached、Redis、MongoDB。
第六个版块:分布式监控
主要内容有:Nagios、Zabbix、Consul、ZooKeeper。
第七个版块:分布式版本控制系统
主要内容有:Bazaar、Mercurial、Git。
第八个版块:RESTful API、微服务及容器技术
主要内容有:Jersey、Spring Boot、Docker。
第九个版块:分布式事务解决方案
**主要内容有: 分布式事务基础理论、分布式事务解决方案之 2PC(两阶段提交)、分布式事务解决方案之 TCC、分布式事务解决方案之可靠消息最终一致性、分布式事务解决方案之最大努力通知
分布式架构面试高频必考知识点
看完上面的内容,相信大家已经有了清晰的目标与方向,接下来就是梳理出在面试中经常会出现的必考考点了,以及高频面试解析,由于字数原因,不能完全的展示出来
主要内容包括有:
消息队列
Redis 缓存
分库分表、读写分离
分布式事务
高可用架构
SpringCloud 微服务架构
最后
如果在阅读过程中有疑问,请留言讨论,最后祝愿各位顺利拿到心仪的offer.