大麦项目介绍
项目的背景
可以说目前的Java程序员面试是非常激烈的,前几年大家都热衷于八股文的研究,把八股文背熟了大部分就能拿到岗位offer了,但现在仅仅靠八股文已经不好使了,现在面试官看的是真正的设计项目,项目中的架构复杂程度怎样? 做过的东西哪些具有亮点? 解决了哪些有价值的问题? 将实际项目和八股文相结合从而判断面试者的能力。
可以说项目是简历中最重要的部分,但这样就产生了一个问题,大家都需要具有价值亮点的项目,可哪有那么多亮点的项目?相信大家一定听过某个培训结构下的 某谷商城 和 某吉外卖,实话说,这两个项目确实不错,亮点也不少。但大家写的是在是太多太多了!
面试官打眼一看 全是这两种项目 很容易就产生审美疲劳,现在有的面试官看到是简历中含有这两种项目直接就会拒绝。而且大家的项目都一样,都是通过同一个视频或者机构来学习的,根本也体现不出个人价值亮点。
而且现在内卷逐渐激烈,从一开始只会简单增删改查,到后来的各种微服务和中间件,再到现在要有类似 “商品秒杀、抵抗百万并发的压力.." 等技术的亮点才行
所以大家急迫的需要一个具有新的业务,而且要有亮点的项目,要是有人能指导下如何写到简历上就更好了,你可以站在面试官的角度上考虑一下,如果你在挑选简历时,看到了之前没有见过,但亮点却很多的项目,你是不是一下子就被吸引住了呢?
项目的重要性
对于Java程序员来说,项目的重要性已经是不言而喻了,无论是在简历、面试、工作的技能提升可以说是最重要的,很多人学习的项目可以说是只是个demo级别,和生产实际的项目相比,确实太小儿科。有的人确实是在工作中做了项目的开发,但平时也都是常规的CRUD,可以说毫无亮点。
相信有不少人就遇到这种情况,学了很多设计模式,但在实际开发项目时根本用不到,实在长了也就忘了,对于Java中的抽象,解耦这种设计思想更是一知半解,人人都说解耦,但又有多少人真正学会了解耦呢
还有面试要背的八股文,如果八股文不能真正应用到项目中,始终就不能真正的掌握了八股文,八股文一定是要理解在项目中实践应用的,绝不是死记硬背,否则面试只要深入一问就会傻眼
大麦项目的介绍
在开发大麦网项目的原因就是在此,可以说大麦网项目是本人付出相当多的心血和精力来开发的,从业务上来说是提供用户购票功能,其中的亮点就是 高并发下的演唱会抢票,以及使用目前流行的 SpringCloud 以及 SpringCloudAlibaba 的架构,在应对高并发业务时,使用了各种具有亮点的技术方案,并且这些技术方案都是 在实际生产中应用的,就比如对常说的分布式锁都进行了充分的优化,考虑到锁的粒度、锁的网络消耗、锁的事务问题等都有考虑
大麦项目的优势
大家对于订票时尤其是热门明星的演唱会,第一感觉就是票不好抢,一瞬间票就没有了,而本项目不仅仅是将上述的购票功能实现,并且还要解决这种票不好抢,也就是常说的 高并发 问题
小伙伴通过此项目能够掌握分布式微服务项目的设计、以及 真实生产环境的高并发解决方案。而且项目中遵循了 高内聚 低耦合 设计原则以及使用大量的 设计模式 来进行架构设计,相信小伙伴学习完此项目后技术会提升几个层次
项目中包括了 微服务、本地缓存/分布式缓存、消息队列、搜索引擎、并发编程、本地锁/分布式锁、设计模式、分库分表 等核心技术
本项目主打的是真实性和独特性,都是根据真实架构和实际遇到的问题总结的
-
本项目对于高并发、高吞吐量的解决方案都是经过真实生产环境验证的,而不是简单的demo而已。而且除了这些以外,还包括了实际开发中项目中的各种架构设计,因为在项目对接的时候,绝不是只是把数据提供给前端就完事了,这么简单的
-
针对实际生产遇到的问题进行 深度定制化的改造,是生产中真正用的东西。这些都是针对业务特点单独设计的,网上也没有现成完整的资料,也不是市面上的八股文宝典或者常见的后台管理或者商城项目,光背八股文是绝对不行的
-
对要毕业的大学生、刚参加工作不久的同学、或者工作多年想对技术有提升的小伙伴都有适合的干货
-
生产中真正的微服务结构到底什么样
-
实际中项目的接口调用要注意什么
-
入参和出参到底怎么进行加密,在哪里处理比较好
-
亮点较多的业务 例如:Redis、Lua、多种数据结构结合
-
并发编程的高级玩法 例如:线程池的定制化设计、ThreadLocal的深度设计
-
缓存穿透、缓存击穿、缓存雪崩 在实际项目中的解决方案
-
对使用中的 分布式锁、本地锁进行优化 的落地方案
-
百万并发下情况下,多级缓存、数据一致性 的设计方案
-
光是生成订单功能就有4个版本 这是为了更好的讲解高并发下要如何去考虑,应该逐步优化哪些方面
-
各种参数的精细化配置 例如:Sentinel、Hystrix、Ribbon的配置
-
-
项目中主打的就是有 独特性,包括复杂让人眼前一亮的业务。也具有项目的 真实性、真实生产中遇到的 重点和难点 把这些独特的东西体现到简历中和面试官来聊,保证对你印象非常的深刻。这不一下子就甩开了别人了吗
-
哪怕是常见的面试问题,也能从生产上遇到的故障来做 进一步的分析和完善,比如常见的分布式锁,细节就很多。例如:在方法里还是方法外使用?直接Lock.lock就行了吗?事务存在的话需要去考虑吗?如果利用注解那么要考虑其他切面的关系吗?怎么设计锁的超时时间呢?提供哪些策略呢?
-
又比如说 SpringBoot的自动装配原理,很多人都背过这个,但究竟用自动装配有什么好处呢?为什么不直接写个组件然后其他项目来依赖呢?两者的区别在哪里呢?在项目中都会得到解答
-
这些实实在在的真正在项目中遇到的问题和经验都会整理成文档和在这个项目中,并且把结构和重难点都分层次的列举了出来,也有相关的视频,并且还配有流程图,方便小伙伴能更清晰的理解
-
后续还会继续的更新,把遇到的重点、难点更新到项目中
大麦项目技术结构
大麦项目使用了 SpringCloud+SpringCloud 的微服务结构,使用了 Nacos 作为注册中心,使用 Redis 作为缓存层,引入了 Kafka 消息中间件, ELK 作为日志的记录,SpringBootAdmin 作为服务的监控通知,Sentinel/Hystrix 作为熔断保护层,使用 ShardingSphere 实现分库分表
通过以上设计,来实现应对高并发、高吞吐的能力,以及海量数据的存储和服务状态的监控
大麦项目业务结构
通过此业务结构图进一步详细的介绍项目中的功能,包括:服务配置、技术选型、核心业务、设计组件、中间件的使用、监控方式、高并发解决策略 等各个方面,方便大家能够对大麦项目的整体架构和设计有一个清晰的认知