跳到主要内容

大麦项目如何来学习

小伙伴如果是在校招、或者想面试或者正在面试、又或者想提高技术能力的话,欢迎来学习大麦项目,不仅可以 避免和别人遇到 简历的项目 烂了大街的问题,而且可以通过项目学到 真正的技术能力以及八股文的实际应用

小伙伴可以了解 知识星球,加入的小伙伴可以获得以下的服务:

  • 提供从0到1完整的文档讲解和视频教学,包括:

    • 项目的介绍项目启动讲解项目基础讲解架构配置讲解详细业务讲解架构组件讲解涉及到的技术精华讲解深挖细节亮点讲解
  • 讲解的内容包括了对整个流程的讲解、以及对亮点业务针对性的介绍、应该如何思考问题、详细的代码注释、清晰的流程图

  • 针对于项目中看不懂或者还需要讲解的问题可以和我进行1对1的提问,我会认真回答每一个问题

  • 提供项目中的需要用到的中间件云环境地址,避免小伙伴本地启动项目时,需要繁琐的搭建中间件

  • 如何在简历中将项目写好,体现出核心的价值亮点

  • 分享大麦项目的大厂面试真实面试题以及经验


学习的方法

学习大麦项目总体可以分为以下部分:

  • 项目概要介绍

  • 架构设计和组件讲解

  • 项目业务讲解

  • 深挖细节亮点


项目概要介绍

对项目介绍大概的介绍,包括项目的架构选型、技术选型、骨架模块。以及如何启动项目:包括准备项目启动的前提条件、如何启动项目,以及项目的基础讲解


架构设计和组件讲解

针对于分布式和微服务的项目来说,随着业务的发展,项目的数量上千个都是很正常的,但如何要把这些项目做好配置,做好架构设计,设计出组件库,都是要考虑的因素

既然组件库是要给其他服务提供使用,所以在设计时要考虑的细节非常的多,设计模式和高内聚低耦合的思想更加的重要,而且代码的健壮性和高效率的执行也是同样重要,而在大麦项目中,使用了SpringBoot的自动装配机制来设计组件库

除了组件库外,还有对异常的处理、数据的封装格式、多线程的使用等等也都要进行相应的封装设计,这些在项目中同样具备


项目业务讲解

对于大麦项目来说,核心的业务就是用户选择节目然后进行购票功能了,项目中不仅完整了对整个业务流程的完整闭环,而且考虑到既然设计此项目是为了应对高并发的特点,那么在从业务的角度上也做了很多的优化设计


深挖细节亮点

其实上述介绍的内容已经非常的丰富了,对于面试或者技术提升可以说是收获满满了,但我觉得这样还是不够,我的想法是通过这个项目让小伙伴体会真正海量并发对于每一个细节和方案的设计上到底是如何做的

所以本人也是写下了很多细节亮点并且设计了多套应对高并发的解决方案,争取让小伙伴体会作为架构设计真正要思考的到底是什么?

星球中的项目讲解

在星球中上述提高的内容会全部包括,一切都会非常的详细。光是文档,数量超过了120+字数超过了26w还有极为细致的视频讲解,而且还在不断的更新中,一切都是为了让小伙伴能更好的学习

表关系

小伙伴在学习中有任何的问题(不仅仅是大麦项目),欢迎在星球中向我提问,本人保证会认真负责的回复

正确的学习路线

由于项目中设计到的业务和技术都比较复杂,避免小伙伴像无头苍蝇一样没有学习顺序,这里介绍学习的路线大纲,小伙伴可以按照提供的路线来进行学习

由于大家的需求各不相同,有的人时间不是很紧张,想好好的把整个项目吃透。而有的人想短时间内快速掌握项目的核心亮点,来进行面试,针对不同需求列举出不同的路线

时间充裕想学习整个流程的小伙伴

针对于这种学习类型的,那么就可以 按照整个文档从上至下的来学习 就可以了,本人已经整理好每个章节以及每个章节内的文档顺序了,从上之下的学习顺序为

  1. 项目概要介绍
  2. 项目启动介绍
  3. 项目基础讲解
  4. 架构配置讲解
  5. 详细业务讲解
  6. 架构组件讲解
  7. 技术精华讲解
  8. 深挖细节亮点,轻松俘获面试官
  9. 项目总结

小伙伴在学习 详细业务讲解 的章节时,如果业务中涉及到了的相应的技术和封装的组件,文档中会有专门的跳转链接来直接调转到对应的 技术精华架构组件 两个章节的对应位置,这也是为了方便学习时更加的有顺序性,将使用和设计直接串联起来

尽快掌握核心流程完成突击的小伙伴

对于这些小伙伴的想法是自己的时间有限,想尽可能快速的了解项目,然后先掌握核心技术亮点,将最主要的学会,也是便于应付面试。所以针对于这种学习方式是要带着存在问题的心态来学习的,然后业务加技术相结合,这样就会事半功倍

这里我将痛点、难点以及值得思考的问题梳理出来,希望小伙伴带着这些问题来思考、来学习此项目

  1. 用户服务如何设计分库分表,存在用户邮箱、用户手机号多种方式登录,要怎么设计?

  2. 当一瞬间有大量的用户注册请求时,如何防止服务可能产生崩溃问题,而且不影响用户体验?

  3. 如何设计缓存策略?采取哪种结构来存储?采取哪种维度来存储?哪些数据适合放入缓存?哪些不适合?

  4. 如何应对高并发下的用户查询请求?在主页列表、类型列表、的请求查看下,如何将设计分库分表的数据查询方案?

  5. 节目详情要怎么设计缓存?有了Redis就可以了吗?突发性流量激增的问题怎么解决?

  6. 如何设计多级缓存来应对几十万,甚至几百万的访问压力?如何发生了缓存雪崩要解决解决和提前预防?

  7. 如何应对高并发下的用户购票压力?在购票流程中怎么考虑缓存和数据库的交互?

  8. 库存数量在缓存中应该如何设计?用户购票和支付过程中,要怎么正确的扣除库存?异常了怎么回滚?数据库中的余票数量一致性要如何解决?

  9. 分布式锁使用起来的细节到底有哪些?只要加上一行锁就可以了吗?

  10. 高并发下的分布式锁如何进一步的优化?锁的粒度?网络请求的性能?

  11. 幂等功能如何实现?有哪些维度需要考虑?

  12. 经典的缓存数据库一致性的问题实际生产环境中到底如何解决?直接删除缓存、延迟双删 这些方案到底可行吗?

  13. 高并发下订单延迟关闭功能如何实现?使用中间件作为延迟队列的问题?使用redis作为延迟队列可以吗?如何提高性能?

  14. 分布式id如何生成?经典的雪花算法?直接使用MybatisPlus中的生成策略可以吗?有什么问题?

  15. 订单的分库分表如何设计?既要支持订单详情查询、又要支持订单列表查询而不发生读扩散?

  16. 如何执行灵活的限流规则?能支持到某个时间段、某个请求、并能记录下异常行为信息?

  17. 项目的架构配置、服务配置、数据结构要如何统一设计和管理?异常如何捕获?

  18. 微服务的中间件直接使用可以吗?有哪些方面要考虑?

  19. 上千个微服务项目的情况下,发生问题如何排查?如何准确查找请求链路?直接用SKywalking就解决了没有如何问题吗?

  20. 真实环境中,项目的灰度到如何实现滚动且丝滑发布?

  21. ... ...

这里只是将常见的问题列举了一下,实际项目中解决的问题远不止这些,小伙伴在学习时带着某个问题来思考,找到相应的章节来学习。并且项目中的方案不仅仅只是在本项目中,小伙伴也可以把这些方案带入到自己的项目中解决目前存在的痛点

学习的章节

心中有了问题后,就可以开始学习了,这里将核心功能和技术列举出来,小伙伴如果时间仍然不充裕的话,也不需要将下面的核心的功能全部学会,可以根据自己的能力来选择学习就好

项目概要介绍

  • 项目骨架结构介绍
  • 项目的技术架构介绍
  • 项目的核心业务介绍
  • 基础讲解-数据库表关系

项目启动讲解

  • 项目如何启动
  • 如何安装项目需要的中间件环境
  • 导入数据库表
  • 前端项目部署启动
  • 后端项目部署启动
  • 如何启动支付功能

核心功能学习

  • 业务讲解-参数加解密过程
  • 业务讲解-用户注册-如何巧妙应对缓存穿透
  • 业务讲解-用户注册-使用组合模式处理复杂的验证功能
  • 业务讲解-用户注册-到底如何使用图形验证码
  • 业务讲解-为什么说购票人的功能不容小觑
  • 业务讲解-如何实现高性能节目详情展示功能
  • 业务讲解-如何统一管理复杂的用户购票验证流程
  • 业务讲解-如何应对高并发下的购票压力
  • 业务讲解-如何对锁进行优化更好的缓解购票压力
  • 业务讲解-解决高并发下购票压力的终极杀招 "无锁化!"
  • 业务讲解-节目服务的数据初始化统一管理
  • 业务讲解-如何保障节目数据在缓存与数据库间的一致性
  • 业务讲解-接收支付宝回调通知后如何进行数据更新
  • 业务讲解-取消订单和延迟订单关闭后如何正确处理数据
  • 分库分表-用户服务-用户表
  • 分库分表-订单服务

核心细节亮点学习

  • 高并发场景下用户购票数量的优化限制方案
  • 详解用户购票背后的余票更新机制
  • 如何应对突发性热点数据暴增导致系统压力过大问题?
  • Redis性能真的足够吗?百万并发的终极杀招 "多级缓存"]
  • 如何确保多级缓存的一致性?

关于上述内容的完整文档和视频讲解,可点击这里:大麦项目讲解

将上述的这些核心功能都学习了后,出去面试已经没有什么问题了,剩下的就是如何将项目写到简历中了,这里本人也写好了项目的简历模块,小伙伴可直接拿来套用 详情请见:大麦项目简历模版

另外本人还负责小伙伴后续的面试问题,虽然文档已经将项目讲解的非常全面了,但还是不排除面试官问到的问题没有讲解到的情况出现,小伙伴可以把面试中遇到的问题发布到星球中,本人会对这些问题进行详细的解答