Skip to content

Latest commit

 

History

History
278 lines (194 loc) · 6.02 KB

File metadata and controls

278 lines (194 loc) · 6.02 KB

Java进阶训练营

分布式服务

基础知识

  • RPC
  • 通信与数据协议
  • WebService
  • Hessian
  • REST
  • gRPC
  • Protocol Buffers

服务化

  • 服务治理
  • 配置管理
  • 注册发现
  • 服务分组
  • 版本管理
  • 集群管理
  • 负载均衡
  • 限流与降级熔断等

框架

  • Apache Dubbo的功能与原理分析
  • Spring Cloud体系
  • 案例实践

微服务

  • 微服务架构的6个最佳实践
  • 从微服务到服务网格、云原生的介绍

分布式缓存

  • 缓存的应用场景,缓存加载策略与失效策略,缓存与数据库同步等
  • 缓存预热、缓存失效、缓存击穿、缓存雪崩、多级缓存、缓存与 Spring+ORM 框架集成
  • 缓存中间件,Redis(几种常用数据结构、分布式锁、Lua 支持、集群),Hazelcast(Java 数据结构、内存网格、事务支持、集群)
  • 缓存的应用场景,排行数据展示,分布式 ID 生成,Session 共享,热点账户操作等

分布式消息

消息队列的基本知识

  • Broker 与 Client
  • 消息模式(点对点、发布订阅)
  • 消息协议(STOMP、JMS、AMQP、OpenMessaging 等)
  • 消息 QoS(最多一次、最少一次、有且仅有一次)
  • 消息重试
  • 延迟投递
  • 事务性
  • 消息幂等与去重

消息中间件

  • ActiveMQ 的简单入门
  • Kafka 的基本功能与使用
  • 高可用(集群、分区、副本)
  • 性能
  • RabbitMQ 和 RocketMQ,Pulsar 的简单介绍

消息的 4 个主要功能

  • 搭建一个 Kafka 集群
  • 实现常用的消息发送、消息消费功能

典型使用场景

  • 使用 MQ 实现交易订单的处理
  • 动手实现一个简化版的消息队列

分布式系统架构

业务分析、功能性需求、非功能性需求、高可用、高性能、稳定性、易用性、扩展性、可维护性、安全性等

“4+1” Views、TOGAF、架构方案、业务架构、数据架构、设计文档、技术选型、部署文档、运维文档等

分布式服务化、分布式消息中间件、分布式缓存、分布式文件系统、监控告警系统、权限与认证中心等

业务系统重构

  • 分析系统现状,给出明确的各项指标,了解各方对指标的期望和差距
  • 给出多个可选的改造或重做方案,明确各方案的优缺点,提供决策依据
  • 方案上的适当妥协,各方达成一致,快速推动重构工作启动和展开
  • 细化具体的方案细节,形成路径,争取足够的资源,恰当的时间窗口
  • 小步快跑,迅速取得阶段性成果,不影响业务整体的规划和发展
  • 保持业务连续性,多做监控、兼容和特性开关,给改造加上保险丝和缓冲区
  • 及时评估改进进展,更新方案和路线、资源和时间,推动改造顺利进行
  • 复盘总结相关经验,提出更多建议和改进办法,实现经验分享,方法复用

架构师修炼之道

  • 分享我个人的成长第一手经验,升级打怪,成为架构师、技术专家、技术总监
  • 六个硬能力:技术能力、设计能力、抽象能力、管理能力、结构化思考能力、系统化分析能力
  • 七个软实力:大局观能力、沟通协作能力、持续学习能力、关注力、探索力、决策力、自我驱动力

超越分库分表

数据库多种扩容模式

  • Binlog,Row/Statement 模式
  • 读写分离/主从复制
  • 主从切换

数据库垂直拆分与水平拆分

  • 分库分表
  • 分布式主键
  • 分表算法
  • SQL 限制
  • 数据迁移
  • 实时同步

分库分表框架

  • TDDL
  • Sharding-JDBC
  • MyCat
  • Sharding-Proxy

最佳实践

  • 数据库拆分
  • 分布式事务
  • 多租户

系统性能优化

系统可观测性

  • 日志
  • 调用链
  • 指标度量
  • CPU、内存、磁盘/网络 IO

MySQL

  • 事务
  • 索引
  • 并发级别
  • 死锁
  • 执行计划
  • 慢SQL统计
  • 参数优化

库表设计优化

  • 引擎选择
  • 表结构优化设计
  • 列类型选择
  • 索引设计
  • 外键

SQL查询优化

  • 索引选择
  • 连接优化
  • 聚合查询优化
  • Union 优化
  • 子查询优化
  • 条件优化

场景分析

  • 主键生成与优化
  • 高效分页
  • 快速导入导出数据
  • 解决死锁问题

开发框架

Spring技术体系

  • core
  • Web
  • MVC
  • Data
  • messaging
  • Boot

ORM 技术体系

  • JPA
  • Hibernate
  • Mybatis

并发编程

多线程基础

  • 线程、锁、synchronized、volatile/final、sleep/await/notify/fork/join

并发包基础

  • 线程池 Executor
  • AQS/CAS
  • Atomic 原子操作
  • Lock/ReadWriteLock/Condition
  • Callable/Future

并发容器与工具

  • BlockingQueue/CopyOnWriteList/ConcurrentHashMap
  • CountDownLatch/CyclicBarrier/Semaphore

其它

  • 万金油 ThreadLocal,化繁为简 Java8 parallelStream

NIO 技术

基础概念

  • 同步/异步
  • 阻塞/非阻塞
  • BIO、NIO、AIO
  • Reactor/Proactor

核心基础类

  • ByteBuff/Acceptor/Channel/Handler
  • NioEventLoopGroup/EventLoop、bossGroup/workerGroup

Netty技术原理

  • Netty 的启动和执行过程
  • 线程模型
  • 事件驱动
  • 服务端和客户端的使用方式

Netty应用场景

  • 常见的 API Gateway/HTTP Server
  • SEDA 原理
  • 业务 API 网关的功能和结构

性能指标

  • Throughout/TPS/QPS
  • Latency/P99/P95/P90
  • ApacheBench/Wrk/JMeter/LoadRunner

JVM进阶

核心知识

  • JVM 基础知识
  • Java 字节码技术
  • JVM 类加载器
  • JVM 内存模型
  • JVM 启动参数详解

工具介绍

  • JDK 内置命令行工具
  • JDK 内置图形界面工具
  • JDWP 简介
  • JMX 与相关工具

GC讲解

  • 常见的 JVM GC 算法(Parallel GC/CMS GC/G1 GC)基本原理和特点
  • 新一代 GC 算法(Java11 ZGC/Java12 Shenandoah) 和 Oracle GraalVM

系统调优

  • GC 日志解读与分析
  • JVM 的线程堆栈等数据分析
  • 内存 dump 和内存分析工具
  • fastThread 相关工具以及面临复杂问题时的几个高级工具的使用
  • JVM 问题排查分析的常用手段、性能调优的最佳实践经验等

JVM 相关的常见面试问题必知必会、全面分析