- Java 基础知识
- Java 基础知识疑难点/易错点
- 枚举
- Java 常见关键字总结:final、static、this、super!
- 什么是反射机制?反射机制的应用场景有哪些?
- BIO,NIO,AIO 总结
- Java 容器常见面试题/知识点总结
- ArrayList 源码+扩容机制分析
- LinkedList 源码
- HashMap(JDK1.8)源码+底层数据结构分析
- ConcurrentHashMap 源码+底层数据结构分析
- 多线程学习指南
- Java 并发基础
- Java 并发进阶
- Java并发线程池
- 拿来即用的线程池最佳实践
- 乐观锁与悲观锁
- ThreadLocal 关键字解析
- 并发容器总结
- JUC 中的 Atomic 原子类总结
- AQS 原理以及 AQS 同步组件总结
- 《J2EE 基础知识》 对 Java 后台技术发展有更深的认识。
- 代理模式详解:静态代理+JDK/CGLIB 动态代理实战
- Spring 常见问题总结
- SpringBoot 指南/常见面试题总结
- 面试常问:“讲述一下 SpringBoot 自动装配原理?”
- Spring/Spring Boot 常用注解总结!安排!
- Spring 事务总结
- Spring 中都用到了那些设计模式?
- 【推荐】MySQL/数据库 知识点总结
- 阿里巴巴开发手册数据库部分的一些最佳实践
- 一千行 MySQL 学习笔记
- MySQL 高性能优化规范建议
- 数据库索引总结 1、数据库索引总结 2
- 事务隔离级别(图文详解)
- 一条 SQL 语句在 MySQL 中如何执行的
- 关于数据库中如何存储时间的一点思考
- 《认证授权基础》 JWT
- JSON Web Token是一种身份认证的方式,JWT 本质上就一段签名的 JSON 格式的数据。由于它是带有签名的,因此接收者便可以验证它的真实性
- JWT 优缺点分析以及常见问题解决方案
- 适合初学者入门 Spring Security With JWT 的 Demo SSO(单点登录)
- Single Sign On 即单点登录说的是用户登陆多个子系统的其中一个就有权访问与其相关的其他系统。
- SSO 单点登录看这篇就够了!
Consistency(一致性) Availability(可用性) Partition Tolerance(分区容错性)
Basically Available(基本可用) Soft-state(软状态) Eventually Consistent(最终一致性)
- 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。
- 为什么要分布式 id ?分布式 id 生成方案有哪些?
- RPC 让调用远程服务调用像调用本地方法那样简单。
- Dubbo 总结:关于 Dubbo 的重要知识点
- 服务之间的调用为啥不直接用 HTTP 而用 RPC?
- 一款基于 Netty+Kyro+Zookeeper 实现的自定义 RPC 框架
- 网关主要用于请求转发、安全认证、协议转换、容灾。
- 为什么要网关?你知道有哪些常见的网关系统?
- 如何设计一个亿级网关(API Gateway)?
- 消息队列在分布式系统中主要是为了解耦和削峰。
- 消息队列总结
- RabbitMQ 入门
- RocketMQ 入门、
- RocketMQ 的几个简单问题与答案
- Kafka 常见面试题总结
- 负载均衡系统通常用于将任务比如用户请求处理分配到多个服务器处理以提高网站、应用或者数据库的性能和可靠性。
- 常见的负载均衡系统包括 3 种:
- DNS 负载均衡 :一般用来实现地理级别的均衡。
- 硬件负载均衡 : 通过单独的硬件设备比如 F5 来实现负载均衡功能(硬件的价格一般很贵)。
- 软件负载均衡 :通过负载均衡软件比如 Nginx 来实现负载均衡功能。
- 读写分离主要是为了将数据库的读和写操作分不到不同的数据库节点上。
- 主服务器负责写,从服务器负责读。另外,一主一从或者一主多从都可以。
- 读写分离可以大幅提高读性能,小幅提高写的性能
- 分库分表是为了解决由于库、表数据量过大,而导致数据库性能持续下降的问题。
- 常见的分库分表工具有:
sharding-jdbc(当当)、TSharding(蘑菇街)、MyCAT(基于 Cobar)、Cobar(阿里巴巴)...。 - 推荐使用
sharding-jdbc
- 高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。
- 高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的 。
- 《如何设计一个高可用系统?要考虑哪些地方?》
- 限流是从用户访问压力的角度来考虑如何应对系统故障。
- 限流为了对服务端的接口接受请求的频率进行限制,防止服务挂掉。
- 比如某一接口的请求限制为 100 个每秒, 对超过限制的请求放弃处理或者放到队列中等待处理。限流可以有效应对突发请求过多。
- 相关阅读:限流算法有哪些?
- 降级是从系统功能优先级的角度考虑如何应对系统故障。
- 服务降级指的是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
- 熔断和降级是两个比较容易混淆的概念,两者的含义并不相同。
- 降级的目的在于应对系统自身的故障,而熔断的目的在于应对当前系统依赖的外部系统或者第三方系统的故障。
- 另类的一种限流,类比于现实世界的排队。玩过英雄联盟的小伙伴应该有体会,每次一有活动,就要经历一波排队才能进入游戏。
- 相同的服务部署多份,避免单点故障。
- 一旦用户的请求超过某个时间得不到响应就结束此次请求并抛出异常。
- 如果不进行超时设置可能会导致请求响应速度慢,甚至导致请求堆积进而让系统无法在处理请求。
- 另外,重试的次数一般设为 3 次,再多次的重试没有好处,反而会加重服务器压力(部分场景使用失败重试机制会不太适合)。