美文网首页
架构师成长之路(内附推荐书籍)

架构师成长之路(内附推荐书籍)

作者: 味道_3a01 | 来源:发表于2018-09-01 00:34 被阅读601次

    想要成为架构师,对技术的深度和广度都有很高的要求,本文列举出成为一个架构师必备的技能和学习路线。

    1. 阅读源码

    说到阅读源码,可能很多同学都尝试过去阅读一些开源框架的源码,但是很难找到一个入口点;即便找到入口点,又会觉得源码中好绕,看着看着把自己都看晕了。其实,阅读源码是需要基础的。开源框架的源码中都使用了大量的设计模式,所以在阅读源码之前,我们首先要熟悉常见的设计模式

    1.1 常用设计模式

    • Proxy 代理模式
    • Factory 工厂模式
      • 简单工厂模式
      • 工厂方法模式
      • 抽象工厂模式
    • Singleton 单例模式
    • Delegate 委派模式
    • Strategy 策略模式
    • Prototype 原型模式
    • Template 模板模式

    推荐书籍
    《大话设计模式》 程杰 著

    1.2 Spring源码走读

    Spring 源码主要又分为一下几大块:

    1.2.1 spring-beans包

    • 接口示例化
    • 代理Bean操作

    1.2.2 spring-context包

    • IOC容器设计原理及高级特性
    • AOP设计原理
    • FactoryBean与BeanFactory

    1.2.3 spring-tx包

    • 声明式事务底层原理
    • Spring事务处理机制
    • 事务的传播与监控
    • 基于SpringJDBC手写ORM框架

    1.2.4 spring-webmvc

    • MVC原理介绍
    • 与IOC容器整合原理
    • HandlerMapping实现原理
    • HandlerAdapter实现原理
    • ViewResolver实现原理
    • Controller实现原理
    • 动态参数匹配原理
    • SpringMVC与Struts2对比分析
    • 手写实现SpringMVC框架

    1.2.5 Spring5新特性

    • Spring 5.x的兼容性
    • 分析自带通用日志框架
    • 多序列化数据格式绑定API
    • 函数式风格的ApplicationContext
    • Kotlin表达式的支持
    • WebFlux模块介绍
    • Testing改进

    阅读指引
    spring源码学习 - 一个简单bean的实例化过程
    spring源码学习 - 注解bean的解析注册过程

    1.3 MyBatis

    • 代码自动生成器:Generator
    • MyBatis下1对多,多对多嵌套结果、嵌套查询
    • 一级缓存、二级缓存使用场景及选择策略
    • MyBatis与Spring集成spring-mybatis.jar分析
    • Spring集成下的SqlSession与Mapper
    • MyBatis的事务
    • 分析MyBatis的动态代理的真正实现
    • 一步一步手写实现MyBatis 1.0到2.0

    2. 分布式架构

    2.1 漫谈分布式架构

    • 初识分布式架构及意义
    • 如何把应用从单机扩展分布式
    • 大型分布式架构演进过程
    • 构建分布式架构最重要因素
      • CDN加速静态文件访问
      • 分布式存储
      • 分布式搜索引擎
      • 应用发布与监控
      • 应用容灾及机房规划
      • 系统动态扩容
    • 分布式架构设计
      • 主流架构模型-SOA架构和微服务架构
      • 领域驱动设计及业务驱动划分
      • 分布式架构的基本理论CAP、BASE以及其应用
      • 什么是分布式架构下的高可用设计
      • 分布式架构下的可伸缩设计
      • 构建高性能的分布式架构

    2.2 分布式架构策略-分而治之

    • 从简到难,从网络通信探究分布式通信的原理
    • 基于消息方式的系统间通信
    • 理解通信协议传输过程中的序列化和反序列化机制
    • 基于框架的RPC通信技术
      • WebService/Apache CXF
      • RMI/Spring RMI
      • Hessian
    • 传统RPC技术在大型分布式架构下面临的问题
    • 分布式架构下的RPC解决方案
    • 分布式系统的基石-Zookeeper、
      • 从0开始搭建3个节点的zookeeper集群
      • 深入分析Zookeeper在disconf配置中心的应用
      • 基于Zookeeper的分布式锁解决方案
      • Zookeeper Watcher 核心机制深入源码分析
      • Zookeeper集群升级、迁移
      • 基于Zookeeper实现分布式服务器动态上下线感知
      • 深入分析Zookeeper Zab协议及选举机制源码解读
    • 使用dubbo对单一应用服务化改造
      • dubbo管理中心及监控平台安装部署
      • dubbo分布式服务模块划分(领域驱动)
      • 基于dubbo分布式系统架构实践
      • dubbo负载均衡策略分析
      • dubbo服务调试之服务只订阅及服务只注册配置
      • dubbo服务接口的设计原则(实战经验分享)
      • dubbo设计原理及源码分析
      • 基于dubbo构建大型分布式电商平台实战雏形
      • dubbo容错机制及高扩展性分析

    2.3 分布式架构-中间件

    2.3.1 消息中间件(分布式消息通信)

    2.3.1.1 消息中间件在分布式框架中的应用

    2.3.1.2 消息中间件ActiveMQ

    • ActiveMQ高可用集群企业级部署方案
    • ActiveMQ P2P及PUB/SUB模型详解
    • ActiveMQ消息确认及重发策略
    • ActiveMQ基于Spring完成分布式消息队列实战

    2.3.1.3 消息中间件Kafka

    • Kafka基于Zookeeper搭建高可用集群实践
    • Kafka消息处理过程剖析
    • Java客户端实现Kafka生产者与消费者实例
    • Kafka的副本机制及选举原理剖析
    • 基于Kafka实现应用日志实时上报统计分析

    2.3.1.4 消息中间件RabbitMQ

    • 初步认识RabbitMQ及高可用集群部署
    • 详解RabbitMQ消息分发机制及主题消息分发
    • RabbitMQ消息路由机制分析
    • RabbitMQ消息确认机制

    2.3.2 分布式缓存(Redis)

    • 从入门到精通,Redis的数据结构分析
    • Redis主从复制原理及无磁盘复制分析
    • Redis管道模式详解
    • Redis缓存与数据库一致性问题解决方案
    • 基于Redis实现分布式锁
    • 图解Redis中的AOF和RDB持久化策略的原理
    • Redis读写分离架构实践
    • Redis烧饼架构及数据丢失问题分析
    • Redis Cluster 数据分布算法之Hash slot
    • 使用Redis常见问题及性能优化思路
    • Redis高可用及高伸缩架构实战
    • 缓存击穿、缓存雪崩预防策略
    • Redis批量查询优化
    • Redis高性能集群之twemproxy or codis

    2.3.3 数据存储

    2.3.3.1 非结构化数据NoSQL

    • NoSQL简介及MongoDB基本概念
    • MongoDB支持的数据类型分析
    • MongoDB可视化客户端及Java API实践
    • 手写基于MongoDB的ORM框架
    • MongoDB企业级集群解决方案
    • MongoDB聚合、索引及基本执行命令
    • MongoDB数据分析 、转存及恢复策略

    2.3.3.2 mysql数据库

    • MySQL主从符合及读写分离实战
    • MySQL + keepalived实现双主高可用方案实践
    • MySQL 高性能解决方案之分库分表

    2.3.3.3 分库分表中间件(Mycat)

    • 初识数据库中间件Mycat
    • 基于Mycat实现mysql数据库读写分离
    • 基于Mycat实战之数据库切分策略剖析
    • Mycat全局表、ER表、分片策略分析

    2.3.4 后台服务

    • 基于OpenResty部署应用层Nginx以及Nginx+lua实践
    • Nginx反向代理服务器及负载均衡服务配置实战
    • 利用keepalived + Nginx实践Nginx高可用方案
    • 基于Nginx实现访问控制、连接限制
    • Nginx动静分离实战
    • Nginx Location、Rewrite等语法配置及原理分析
    • Nginx提供https服务
    • 基于Nginx+lua完成访问流量实时上报kafka的实战

    2.3.5 高性能的NIO框架(Netty)

    • IO的基本概念、NIO、AIO、BIO深入分析
    • NIO的核心设计思想
    • Netty产生的背景及应用场景分析
    • 基于Netty实现高性能IM聊天工具
    • 基于Netty实现Dubbo多协议通信支持
    • Netty无锁化串行设计及高并发处理机制
    • 手写实现多协议RPC框架

    2.4 分布式解决方案

    • 分布式全局ID生成方案
    • session跨域共享及企业级单点登录解决方案实战
    • 分布式事务解决方案实战
    • 高并发下的服务降级、限流
    • 基于分布式架构下分布式锁的解决方案
    • 分布式架构下实现分布式定时调度

    推荐书籍
    《大型网站系统与Java中间件实践》曾宪杰 著
    《分布式服务框架原理与实践》 李林峰 著

    3. 微服务架构

    3.1 微框架(Spring Boot)

    • Spring Boot与微服务之间的关系
    • Spring Boot热部署实战
    • 核心组件之starter、actuator、auto-configuration、cli
    • Spring Boot集成MyBatis实现多数据源路由实战
    • Spring Boot集成Dubbo实战
    • Spring Boot 集成Redis实战
    • Spring Boot集成Swagger2 构建API管理及测试体系
    • Spring Boot实现多环境配置动态解析

    3.2 Spring Cloud

    • Eureka注册中心
    • Ribbon集成REST实现负载均衡
    • Fegion声明式服务调用
    • Hystrix服务熔断降级方式
    • Zuul实现微服务网关
    • Config分布式统一配置中心
    • Sleuth调用链路跟踪
    • BUS消息总线
    • 基于Hystrix实现接口降级实战
    • Spring Boot集成Spring Cloud实现统一整合分离

    3.3 Docker虚拟化

    • 了解Docker的镜像、仓库、容器
    • Dockerfile构建LNMP环境部署个人博客wordpress
    • Docker Compose构建LNMP环境部署个人博客wordpress
    • Docker网络组成、路由互联、openvswitch
    • 基于swarm构建Docker集群实战
    • Kubernetes简介

    3.4 漫谈微服务架构

    • SOA架构和微服务架构之间的区别与联系
    • 如何设计微服务及其设计原则
    • 解惑Spring Boot流行因素及能够解决什么问题
    • 什么是Spring Cloud,为何要选择Spring Cloud
    • 基于全局分析Spring Cloud各个组件所解决的问题

    推荐书籍
    《Spring Cloud与Docker微服务架构实战》周立 著

    4. 并发编程

    4.1 Java 内存模型(JMM)

    • 线程通信
    • 消息传递

    4.2 内存模型

    • 指令重排序
    • 顺序一致性
    • happens-before
    • as-if-serial

    4.3 synchronized

    • 同步、重量级锁
    • synchronized原理
    • 锁优化
      • 自旋锁
      • 轻量级锁
      • 重量级锁
      • 偏向锁

    4.4 volatile

    • volatile 实现机制
    • 内存语义
    • 内存模型

    4.5 DCL(Double Check Lock)

    • 单例模式
    • DCL(双检锁)
    • 解决方案

    4.6 并发基础

    • AQS
      • AbstractQueuedSynchronizer同步器
      • CLH同步队列
      • 同步状态的获取和释放
      • 线程阻塞和唤醒
    • CAS
      • Compare And Swap
      • 缺陷

    4.7 锁

    • ReentrantLoak 可重入锁
    • ReentrantLockReadWriteLock 可重入读写锁
    • Condition

    4.8 并发工具类

    • CyclicBarrier
    • CountDownLatch
    • Semphore

    4.9 并发集合

    • ConcurrentHashMap
    • ConcurrentLinkedQueue

    4.10 原子操作

    • 基本类型
      • AtomicBoolean
      • AtomicInteger
      • AtomicLong
    • 数组
      • AtomicIntegerArray
      • AtomicLongArray
      • AtomicReferenceArray
    • 引用类型
      • AtomicReference
      • AtomicReferenceFieldUpdater

    4.11 线程池

    • Executor
    • ThreadPoolExecutor
    • CallableFuture
    • ScheduledExecutorService

    4.12 其他

    • TheadLocal
    • Fork/Join

    推荐书籍
    《深入理解Java虚拟机》周志明 著
    《Java并发编程实战》Brian Goetz/ Tim Peierls/ Joshua Bloch/ Joseph Bowbeer/ David Holmes/ Doug Lea 著 董云兰等译
    《实战Java高并发程序设计》 葛一鸣 郭超 编著

    5. 性能优化

    5.1 理解性能优化

    • 性能基准
    • 性能优化到底是什么
    • 衡量维度

    5.2 JVM调优

    • 知其然,知其所以然
    • 什么是JVM运行时数据区
    • 什么是JVM内存模型JMM
    • 各种垃圾回收器使用场景(throughput\CMS)
    • 理解GC日志,从日志看端倪
    • 实战MAT分析dump文件

    5.3 Tomcat调优篇

    • 分析Tomcat线程模型
    • Tomcat系统参数认识及调优
    • 基准测试

    5.4 MySQL调优

    • 理解MySQL低层B+Tree机制
    • SQL执行计划详解
    • 索引优化详解
    • SQL语句优化

    6. 团队协作效率

    6.1 Maven

    • 生成可执行jar、理解Scope生产呢过最精确的jar
    • 解决类冲突、包依赖 NoClassDefFoundError问题定位及解决
    • 全面理解Maven的Lifecycle\Phase\Goal
    • 架构师必备之Maven生成Archetype
    • Maven流行插件实战、手写自己的插件
    • Nexus使用、上传、配置
    • 对比Gradle

    6.2 Jenkins

    持续集成,一次build解决所有手动工作

    6.3 Sonar

    减少人为疏漏,静态代码检查,让你的代码更健壮

    6.4 Git

    • 什么是git以及git的工作原理
    • git常用命令best practise(避坑教学)
    • git冲突怎么引起的,如何解决
    • 架构师职责:git flow规范团队git使用规程
    • 团队案例分享(买不到才是最贵的)

    7. 项目实战

    未完待续...

    其他书籍推荐:
    《深入分析Java Web技术内幕》
    《Java编程思想》
    《Effective Java》
    《重构 改善既有代码结构》
    《高性能MySQL》

    关注公众号,获取海量免费java进阶视频

    相关文章

      网友评论

          本文标题:架构师成长之路(内附推荐书籍)

          本文链接:https://www.haomeiwen.com/subject/rdkywftx.html