高并发都要学哪些技术?

请问老师,我想系统的学习一下高并发,请问都需要学习哪些技术呢?

答:参见以下:

  1. 首先,得有全局观,得知道“高并发”要解决的是系统中哪些部位的瓶颈(CPU不足,还是内存不够?web服务器扛不住,还是数据库并发量太小……)。因此,需要学习“架构设计”(至少要了解一下)。

  2. 并发的基础是多线程,所以“多线程”少不了。

  3. 多线程可以用基础的方式手写,也可以使用高级一点的多线程库:JUC(至少)。

  4. 很多新版的jdk,提供了并发编程的工具类,因此需要学习(或者查阅一下)jdk8及后续版本对高并发的支持。

  5. (可选)很多三方工具库,也提供了对多并发的支持。也建议了解一下,例如Google Guava

  6. 传统的IO性能太低,无法应对高并发的压力。因此需要学习IO的升级版:NIO和AIO

  7. 说起“NIO”,就必然要提NIO框架-Netty。因此,Netty少不了。

  8. “分布式”是“高并发”的解决方案,因此需要学习分布式

  9. 说起“分布式”,就必然要提“微服务”。因此,微服务少不了。

  10. 说起“微服务”,就必然要提spring boot和spring cloud,二者少不了。

  11. 除了spring cloud以外,dubbo(dubbox)也是一款优秀的分布式治理框架,要学。

  12. spring cloud等是分布式框架,最好还要学习一下这些框架的底层技术,也就是:网络编程、RPC、RMI等

  13. 提到RPC,就要学习它的常见支撑技术:protobuf、thrift、grpc

  14. 有没有高并发编程框架?有,disruptor

  15. 除了编码以外,数据库在高并发面前更加脆弱。因此需要学习支持高并发的数据库架构,大致包含了:数据库集群搭建、主从同步、读写分离、分库分表、高可用组件haproxy+keepalived等

  16. 除了NB的数据库架构以外,还需要对SQL语句进行优化,因此SQL优化少不了。

  17. SQL优化只是数据库优化的一部分,还需要学习数据库其他方面的优化:数据库引擎、索引结构、设计原则等

  18. 如果数据量特别大,再NB的关系型数据库架构也不行。还得学分布式数据库(hbase等)。

  19. 如果请求量特别大,就需要学习大数据技术:hadoop生态、spark生态等。

  20. 高并发需要限流:网关(nginx、lvs等)。

  21. 高并发需要缓存:缓存中间件(hashmap、redis、SSDB等)。

  22. 如何知道自己写的系统,能否支撑高并发压力?得了解一下相关的测试技术:压力测试、性能测试等。

别怕,没人能一口气学完这么多技术。很多架构师,最初都只是某一领域(或某一技术)的专家,慢慢积累,最后才会全面的成长。

 

- 完 -

推荐阅读

答疑 | 我是JAVA初级,有必要学架构设计吗?

Java小白到大神的心路历程(Java SE)

答疑 | 面试全对,却没offer?

答疑 | 背下这300字,面试就能加薪!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值