大家好,我是mikechen。
我写过一个成体系的阿里架构师合集,包含:负载均衡、单点登录、幂等性、微服务、中间件、云原生等架构系列。
为了方便大家的阅读,也为了让知识更系统化,这里我把整个系列专题罗列于此,点击文章标题即可学习@mikechen
从单机到分布式集群,肯定会涉及到负载均衡,这是中大型网站的必经之路。
本篇重点讲解了负载均衡相关的:
- 负载均衡的原理机制
- 负载均衡均衡的算法
- 轮循
- 加权轮循
- 源地址散列等负载算法
这些算法肯定是要掌握的。
Kafka的性能快,这是大厂Java面试经常问的一个话题。
这里会涉及到:
- 页缓存技术
- 磁盘顺序写
- 零拷贝
- 分区分段+索引等技术
这篇都会重点来详解。
RocketMQ是参考Kafka来实现的,在互联网领域特别是金融,用的很多,肯定是要重点学习掌握的。
本篇会重点详解RocketMQ相关的:
- RocketMQ的核心组件
- RocketMQ的架构设计
- RocketMQ的关进特性
- RocketMQ的应用场景
架构师很多时候都是伴随公司成长的,公司都是从小公司变成大公司的。
同样的道理,技术系统也需要从单体巨石系统往分布式系统转变的,这就肯定会涉及到单体、SOA、微服务。
比如:
1、单体架构的拆分
2、SOA与微服务的区别
3、微服务的优缺点
4、微服务的消息
5、数据的去中心化
是怎样一步步从单体到SOA 微服务演变过来,作为架构师肯定需要掌握,本篇会重点详解。
幂等性在支付场景、下订单,以及分布式系统都是最常遇到的问题。
这篇文章主要讲了以下几点:
- 幂等性的解决方案
- 数据库唯一主键
- 数据库乐观锁
- PRG 模式
- 防重 Token 令牌
如果你还对幂等性不了解,肯定是要重点学习掌握的。
淘宝双11秒杀场景,大量的用户短时间内涌入,瞬间流量巨大(高并发)。
比如:1000万人同一时间抢购100件商品,秒杀活动是一个特别考验后台数据库、缓存服务的业务,对于数据库、缓存的性能要求特别严格。
本篇会重点详解秒杀先关的技术:
- 秒杀架构思路
- 前端设计方案
- 后端设计方案
- 数据库层解决方案
- 秒杀的整体解决方案
在金融、电商、支付、等产品的系统中数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息。
数据库的自增ID显然不能满足需求,此时一个能够生成全局唯一ID的系统是非常必要的。
本篇会重点详解分布式ID的5种算法:
单点登录在大型网站里使用得非常频繁,例如,阿里旗下有淘宝、天猫等网站,还有背后的成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。
单点登录本篇重点详解了:
- 单点登录的原理
- 单点登录的实现方式
- 同域下的单点登录
- 不同域下的单点登录
在分布式服务过程,肯定会涉及到RPC,Dubbo为代表的RPC通信框架肯定需要掌握。
这篇文章主要讲一下几点:
- Dubbo服务框架简介
- Dubbo的架构设计思路
- Dubbo的底层实现机制
- Dubbo适用于哪些场景
消息队列MQ是大型分布式系统不可缺少的中间件,也是高并发系统的基石中间件,所以掌握好消息队列MQ就变得极其重要了。
本篇会非常全面的详解消息队列MQ,主要会谈到:
- 消息队列MQ架构
- 消息队列MQ设计
- 消息队列MQ的模型
- 消息队列MQ产品选型
- 消息队列MQ的4大应用场景
微服务Dubbo和SpringCloud架构设计、优劣势比较
谈到了微服务框架,就不得不谈到Dubbo和SpringCloud。
本篇会重点谈到:
- 架构的比较
- 协议的比较
- 实现的比较
- 性能的的比较等
目前几乎很多大型网站及应用都是分布式部署的,经常会考察到分布式锁。
这里就会涉及到3种锁的实现:
- Redis分布式锁
- 数据库分布式锁
- Zookeeper分布式锁
这篇都会讲解到具体的实现方式与优劣势比较。
数据量大了之后都会涉及到数据库的拆分,究竟是垂直拆分还是水平拆分呢?
本篇会详解:
- 垂直拆分
- 水平拆分
- 拆分步骤
- 6大拆分原则
为了提升性能,肯定会从全局以及局部优化,这就会涉及到架构以及数据库以及前后端的优化。
这篇文章会重点讲解以下几点性能优化:
1.代码优化
2.数据库优化
3.架构层面优化
4.分布式缓存优化
5.异步化优化
6.Web前段优化
6.服务化
7.硬件升级
8.搜索引擎
9.产品逻辑优化
在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节,所以需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。
读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新,比如:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性问题。
这篇文章就会详解以上缓存与数据库不一致的具体解决方案。
本篇主要介绍了以下几点:
- 高并发场景下MySQL和Redis数据不一致性
- 延时双删策略详解
- 异步更新缓存新详解
- 基于订阅binlog的同步机制详解
谈到云原生就不得不谈到Docker容器,本篇会重点来详解Docker:
- Docker容器的介绍
- Docker与虚拟机的区别
- Docker容器的架构原理
- Docker容器的应用场景
Kubernetes(K8S)是云原生目核心组件,也是云计算的未来,下面我就全面来详解Kubernetes(K8S)。
主要会谈到:
- 1.容器编排和调度
- 2.K8S的原理和架构
- 3.K8S的主节点架构
- 4.K8S的子节点架构
如果还想更加全面的了解分布式系统,肯定会涉及到整个技术网站的架构演变。
比如:淘宝为代表的大型网站是怎样一步步最终演变过来的。
最后再到10.0,这里会经历如下的步骤:
1.初始阶段的网站架构
2.应用服务和数据服务分离
3.使用缓存改善网站性能
4.数据库读写分离
5.使用反向代理加速网站响应
7.使用分布式文件系统
8.分布式数据库系统
10.分布式服务化拆分
这个完整的过程,大型网站演变全过程与架构设计详解,本篇都会重点详解。