架构成长学习

2019-06-28  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读