美文网首页
架构成长学习

架构成长学习

作者: 步二小哥 | 来源:发表于2019-06-28 09:43 被阅读0次

    架构成长学习


    1. 阅读源码

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

    PS:如果对 开源框架源码看起来困难比较大,可以先看看JDK API的源码,比如HashMap的源码,从put(K key, V value)、get(Object key)方法入手,了解HashMap的实现原理;慢慢熟练了带着问题去看开源框架的源码

    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实现统一整合分离

    推荐书籍

    《Spring Boot编程思想(核心篇)》小马哥 著

    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高并发程序设计》 葛一鸣 郭超 编著墙裂推荐

    《Java并发编程实战》Brian Goetz/ Tim Peierls/ Joshua Bloch/ Joseph Bowbeer/ David Holmes/ Doug Lea 著 董云兰等译

    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》

    原文:https://www.jianshu.com/p/f661f098b88a

    相关文章

      网友评论

          本文标题:架构成长学习

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