15K水平的Java程序员技术栈

目录

技术栈

学习目的

1.原始系统——数据库 + 前端 + 后端

2.系统优化——本地缓存(Caffine Cache)

3.系统升级——分布式微服务(Dubbo + Nacos + Redis)

4.系统通信——消息队列(RabbitMQ)

其他

总结


技术栈

数据库:MySQL(索引、分库分表)

后端:Spring、SpringMVC、Mybatis、多线程编程、网络编程、设计模式、算法设计、JVM

前端:JavaScript、CSS、HTML、Vue(起码要懂一些前端甚至熟悉)

分布式微服务RPC框架:Dubbo或spring cloud(或其他)

注册中心:Nacos或Zookeeper(或其他)

缓存中间件:Redis(或其他)

消息中间件:RabbitMQ(或其他)

本地缓存:Caffine Cache或Guava Cache(或其他)

其他:linux、操作系统、JVM调优

学习目的

为什么要如此设计学习内容?分析学习这些技术的目的,需要从系统出发。

1.原始系统——数据库 + 前端 + 后端

2.系统优化——本地缓存(Caffine Cache)

系统运行的所有操作基本都是围绕着增删查改,需要频繁访问数据库,就是要频繁IO。IO是操作系统发送读写指令到磁盘操作数据的过程,首先需要进行磁盘寻道,磁盘在当前扇区开始扫描数据,经过不断切换磁道和盘面,找到数据所在位置,然后将磁盘的磁性材料的磁极信息转换为电信号,返回给操作系统转化为机器语言0/1这个过程非常耗时,假设我们一个查询操作是一秒钟,这部分耗时可能要消耗0.9秒,即IO操作占了90%的时间。

缓存技术就是使用内存c减少IO操作,极大提高系统性能(起码快100倍以上)

DDR4内存读写速度大概50G每秒(50000M)

固态硬盘速度是300M每秒,是内存的1/200

机械硬盘的速度是100M每秒,是内存的1/500

Ps:使用缓存要注意数据入库处理,例如用一条线程设计定时入库策略

3.系统升级——分布式微服务(Dubbo + Nacos + Redis)

解决互联网三高(高并发、高可用、高性能)有效途径

当我们的系统过于复杂和庞大的时候,想要进行部分功能升级改造的时候,就比较麻烦了。牵一发而动全身,出一点问题都会是比较大的损失。这个时候就需要用到微服务把系统拆分成多个小系统,独立开发升级优化,升级的时候也只需要关闭某些部分服务的系统,而不需要整个系统关闭。

与单体应用程序相比,微服务组织更好、更小、更松耦合,并且是独立开发、测试和部署的。由于微服务可以独立发布,因此修复错误或添加新功能所需的时间要短得多,并且可以更有效地将更改部署到生产中。此外,由于微服务很小且无状态,因此更容易扩展。

微服务系统一定是分布式系统;分布式系统不一定是微服务系统。

那么除了微服务还有什么其余的系统也是分布式的呢?举个比较简单的例子——集群。例如我们系统不大,但是用户量非常庞大,单体机器CPU、内存等硬件资源不足怎么办?一是提升硬件条件,但硬件有上限,不是长久之计,那么就要用到集群了。集群就是系统复制粘贴到多个机器上面单独运行,在客户端访问的时候进行分流,理论上可以无限拓展。集群可以访问同一个数据库,也可以每个系统单独运行数据库保存数据然后用RPC通信联系。

4.系统通信——消息队列(RabbitMQ)

主要作用表现为解耦、异步、削峰。

由于分布式微服务已经实现了系统间的高内聚低耦合、并且Dubbo也可以实现异步通信,所以这里侧重说明一下削峰。

削峰就是客户端大量请求进行排队操作。例如秒杀活动,假如系统极限只能同时承担1000 QPS(每秒查询率),那么在一秒内进入10W个请求,如果没有消息队列进行排队削峰处理,则有可能造成网络错误,甚至宕机。

其他

linux部署项目、操作系统是如何运行系统的(线程、进场、用户态、内核态、内存、硬盘、IO)

总结

使用前端+后端+数据库写一个商城系统

使用Caffine Cache在内存操作数据

使用Dubbo + Nacos +Redis把每个功能点进行微服务拆分分别维护开发

使用RabbitMQ + Redis开发商品秒杀活动

一个固若金汤的系统就完成了!

学习路径是根据一整个系统的架构来安排的。掌握以上全部技术,基本可以保证你一个人完成从开发、优化、升级、部署到上线一个健壮系统的整个流程了。有完整搭建一个健壮系统的能力,每一部分的部署、优化和升级都掌握,就是一个及格的高级程序员了(我猜。还有个Netty,有空再学了😤😤)。

路漫漫而修远兮,吾将上下而求索。学无止境!(卷死你们😄😄😄)

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值