一:什么是削峰限流
场景:秒杀活动,一般会因为流量过大,导致应用挂掉,为了解决这个问题,一般在应用前端加入消息队列。
作用:
1: 可以控制活动人数,超过此一定阀值的订单直接丢弃(我为什么秒杀一次都没有成功过呢)
:2:可以缓解短时间的高流量压垮应用(应用程序按自己的最大处理能力获取订单)

二:什么是应用解耦
场景: 双11是购物狂节,用户下单后,订单系统需要通知库存系统,传统的做法就是订单系统调用库存系统的接口。
缺点: 当库存系统出现故障时,订单就会失败

三:案例分析
某购票网站:
2014年及以前由于某购票网站架构设计不好,经常出现网站并发访问量大时出现网站崩溃
小米官网抢购手机:
使用“消息队列中间件”设计,先抢先得,尽管你提交了抢购请求,但不一定抢得到
电商平台的“秒杀抢购”:
采用了“消息队列中间件”技术,在高并发环境下充当重要角色
四:某购票网站接口历史解决方案

五:事故重现

1,模拟抢票接口服务器节点处理,事故重现
2,多线程测试购票接口
结论:面对高并发无法满足性能要求,需要进一步优化
六:消息列队
消息队列(Message Queue,简称 MQ),高可用分布式集群技术,提供消息发布订阅、消息轨迹查询、定时(延时)消息、资源统计、监控报警等一系列消息云服务,是企业级互联网架构的核心产品

七:消息队列MQ知识树
消息队列做为互联网削峰限流、应用解耦等重要手段,应该掌握的以下这些知识:
入门知识:什么是MqMq原理及特性、软件下载、安装及部署、日常管理
进阶学习:Mq客户端、AMQP协议、消息确认、消息重发机制、路由机制分析、P2P、PUB\SUB、分发机制、主题消息分发
高级学习:高可用集群原理、集群化与镜像队列、Web监控平台、Spring与Mq结合、消息持久化机制、坏消息处理机制
实战学习:消息队列实战、高可用集群部署、冗灾……
那些能拿高薪的技术,你又知道多少?

一、阅读源码
阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力。

二、分布式架构
提供一个分布式架构的学习思路也是自己目前还在学习中的体系:

三、微服务架构
微服务是现在互联网架构技术中最火热的话题之一,也是本屌目前正在学习研究的方向。在阿里面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术,小编给自己制定了一个微服务技术的学习计划:

四、并发编程
并发编程几乎是所有互联网公司面试必问问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。目前网上没有系统的全面的并发编程学习大纲,我搜集了很多资料总结出来一个最全面的学习大纲:
并发编程
五、性能优化
性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环,本屌在性能优化这一块虽然不能算专家,也可以自信的说是精通了(注意:自己的简历上一定不要写精通xxxx,要不然面试官会怼死你。好在本屌这一块还算自信)

六.设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。
设计模式
一名开发人员必须有适合自己的兵器,也就是工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。下列是我自己常用的开发工具:
Maven的,项目管理
Jenkins,持续集成
sonar,代码质量管理
Git的,版本管理
以上是大佬收集总结的Java架构技术图谱,自己因为比较喜欢技术,所以收集了一些Java高并发、分布式、JVM、spring、源码分析和kafka等架构技术资料,如果你也对技术感兴趣可以来关注我。后续会有更多干货奉上。
资料领取方式: 这只是一部分,我就不全发上去了,这些资料给了我很大的帮助,现在免费分享给大家!大家可以关注我后台简信”架构资料”免费获取!
网友评论