架构师学习路线
2020-11-25 13:59:24 0 举报
AI智能生成
Java架构师学习路线
作者其他创作
大纲/内容
Spring体系
基本知识
Bean的生命周期
Aop调用链底层原理分析
Spring5.0源码深度解析
SpringMVC源码深度解析
Spring源码分析
Spring体系结构
Spring Croe
Spring AOP
Spring Context
Spring Do
Spring ORM
spring工程创建方式
xml方式
xml文件定义bean
ClassPathXmlApplicationContext获取xml中的bean
注解方式
AnnotationConfigApplicationContext获取Configuration中配置的bean
getBeanDefinition获取定义的所有Bean
@Bean 一般用作第三方jar包里边的Class交给spring管理,注册的beanId是方法名称
@Import 用于第三方Bean注入,@Import(User.class),采用该注解注册的beanId使用该类的全路径
@Configuration 相当于xml方式
@ComponentScan
includeFilters
excludeFilters
@Repository 定义Dao Bean的注解
@Scope Bean默认单例,可以通过该注解改变
单例:singleton
原型:prototype
@Lazy 默认是启动时创建,可加注解改变为调用时创建
FactoryBean与BeanFactory区别
FactoryBean注册Bean
BeanFactory获取Bean
ImportSelector 通过实现该接口注册Bean
ImportBeanDefinitionRegistrar 接口注册Bean
@Service 与 @Component 区别
只是为了区分没有实质区别,Service/Repositroy实际都是Component注解,可以自己定义注解,底层用Componet
@Primary 一个接口有多个实现,可以用@Primary指定默认Bean(@Autowired注解默认按类型注入)
@Qualifier 与@Autowired同时使用,指定查找的beanId
@Resource
接口
BeanPostProcessor接口
BeanFactory 与 ApplicationContext的区别
ApplicationContext继承BeanFactory实现扩展,BeanFactory是管理Bean加载、实例化、Bean之间的关系、Bean的生命周期。
springboot2.0
优势
常用注解
@EnableXXX 开启XXX功能
通过Import注解完成外部导入
子主题
@SpringBootApplication
@EnableAutoConfiguration
微服务
网站架构演变过程
单点应用
分布式
SOA服务化
微服务
springCloud
为什么使用springCloud?
概念
注册中心
服务治理
服务注册
服务发现
springCloud服务注册于发现原理
注册中心
Eureka注册中心
闭源,替代有consul、zookeeper
Dubbo支持Redis和zookeeper,一般用zookeeper
集群搭建
相互注册,达到高可用
实现例子
环境搭建
pom.xml
application.yml
启动服务
服务提供者
pom.xml
application.yml
启动服务
服务调用
restTemplate
@LoadBalanced 客户端负载均衡,别名调用必须加
fegin
Eureka自我保护机制
防止服务误剔除
Zookeeper注册中心
@EnableDiscoveryClient
DiscoveryClient获取服务信息
Consul注册中心
Eureka与zookeeper区别
CAP理论
zookeeper保证CP
Eureka保证AP
BASE理论
负载均衡ribbon
@LoadBalanced
算法
轮询(请求总数%服务器个数)
ribbon与nginx区别
客户端调用工具
RestTemplate
Feign
@EnableFeignClients
超时时间设置
服务保护Hystrix
服务雪崩概念
解决方案
服务降级
服务熔断
服务隔离
线程池隔离
信号量隔离
开启Hystrix
@EnableHystrix
@HystrixCommand
监控面板Hystrix Dashboard
聚合监控Turbine
配置中心Config
缺点:没有后台管理,存放在版本控制器git/svn
替代产品:携程阿波罗,配置文件存放在数据库,有单独管理系统
Zuul
分布式事务tx-lcn
微服务拆分
AKF
DDD领域驱动设计
微服务设计理念
中台
分布式
分布式锁
redission实现分布式锁
Redis分布式锁原理
zookeeper实现分布式锁
zookeeper分布式锁原理
分布式消息中间件
rabbitmq
可靠性
灵活的路由
扩展性
多语言客户端
管理界面
插件机制
rocketmq
支持事务性消息
支持延迟消息
支持失败消息重试
支持重复消费
consumer端支持tag过滤
ActiveMQ
java语言编写,支持多种语言MQ,jar包引入,工作模式简单,集群性能不好
Kafka
在日志收集使用较广
全文检索ElasticSearch
lucene
ElasticSearch
客户端:Kibana
知识点:
9200端口与9300端口区别
倒排索引(分词、关联文档)
DSL语言查询
分页:from size
term精确匹配,不会分词
match模糊查询,支持分词
中文分词器
mapping
ES集群
索引分片
存储结构
索引(Index)->类型(Type)->文档(Document)->字段(Fileds)
Json格式存储
Solr
日志收集ELK
服务追踪与调用链
Sleuth
Zipkin
SkyWalking
CAT
Pinpoint
Session一致性问题
任务调度
XXL-JOB
Elastic-job
配置中心
携程阿波罗
SpringCloud Config
淘宝Diamond
分布式事务
事务基本特性(ACID 原子性、一致性、隔离性、持久性)
CAP理论
基本实现思路
2PC
XA协议
JTA
atnomics
3PC
TCC
Base理论
强一致性
弱一致性
最终一致性
实现
基于LCN解决分布式事务
基于MQ解决分布式事务
基于阿里GTS(Seata)解决分布式事务
Netty
BIO和NIO和AIO
BIO(Blocking IO) 同步阻塞IO
NIO (Non Blocking IO) 同步非阻塞IO
AIO (NIO 2.0) 异步非租塞IO
为什么Redis和netty不使用AIO线程模型?
线程模型
Nginx
正反向代理
动静分离
负载均衡
实战
OpenResty +Nginx + Lua 实现亿级详情页
KeepAlived + Nginx实现Nginx高可用
Nginx + Lua 对服务实现限流、熔断
高并发
DNS负载均衡
Dubbo
原理
角色区分
Provider:服务提供方
Consumer:服务消费方
Registery:服务注册与发现中心
Monitor:服务监控(统计服务调用次数及调用时间)
优点
透明化的远程方法调用(像调用本地方法一样)
软负载均衡及容错机制
服务注册中心自动注册
服务接口监控与治理
扩展
当当dubbox
dubbo Admin
京东jd-hydra
Mysql高可用
MHA
MyCat
垂直拆分
水平拆分
读写分离
Sharding-JDBC
Redis
单机模式
Sentinel哨兵模式
Cluster模式
Hash槽
Key进行CRC16(key)%16384运算
rdb与aof
缓存穿透
缓存雪崩
FastDFS
tracker-server
storage-server
group
meta data
测试工具
Jmeter
SpringCloud Alibaba
批处理
Spingbatch
Spring-cloud-dataflow
趋势
云计算
概念
PaaS(平台即服务)
SaaS(软件即服务)
FaaS(函数即服务)
IaaS(基础设施即服务)
docker
openStack
物联网
区域链
DevOps
四大知识体系
敏捷管理
持续交付
IT服务管理
精益管理
真正的DevOps平台
项目管理
JiRa
禅道
Redmine
代码托管
svn/git
gitlab
持续交付
jenkins
安装
CI/CD介绍
持续集成CI
新代码-》构建-》测试-》测试
持续交付CD
反馈后-》部署测试-》预发布
持续部署CD
反馈后-》部署生产环境
质量管理
sonarqube
运维平台
日志平台
日志平台ELK
优缺点
优势
开源,使用方便
学习和配置都相对简单
基于ES,搜索速度快
架构相对简单,横向扩展方便
缺点
Logstash消耗资源,运行占用cpu和内存高
没有消息队列缓存,存在数据丢失隐患
ELK
Elasticsearch(日志搜索引擎)
Logstash(日志采集处理)
kibana(展示层)
filebeat(日志采集,go语言)
graylog
监控平台Zabbix
prometheus+grafana
容器
Docker
安装
EPEL源
yum install lxc libcgroup
yum install docker-io
selinux disabled
service docker start
kubernetes
kubesphere
敏捷开发
四个价值
个体和互动高于过程和工具
工作的软件高于详尽的文档
客户合作高于合同谈判
响应变化高于遵循计划
十二条宣言
Scrum
3个角色
3个产出物
5个会议
5个价值
数据库
MySQL
执行计划及索引
集群搭建、高可用方案
SQL索引优化
B+tree存储引擎原理
垂直于水平分库分表
Infodb特性:锁和MVCC机制
安全
加密
对称加密
DES
3DES
AES
RC2
RC4
RC5
非对称加密
RSA
性能优化
CPU
多级缓存
Java内存模型(JMM)
volatile保证可见性
总线嗅探机制
早期cpu:总线锁
MESI协议
JVM
内存模型
线程共享
堆
元区间(方法区)
线程独占
栈
本地方法栈
PC寄存器
JVM整体结构
JVM与垃圾回收算法
类加载机制
GC
JVM调优
tomcat
tomcat8运行原理分析
tomcat线程模型
tomcat系统参数及调优
tomcat与servlet关系
利用jstack定位典型性能问题
Jetty
网络编程
七层网络模型
四层负载均衡Lvs
七层负载均衡Nginx
TCP与UDP区别
HTTP协议
Http1.0与Http1.1的区别
长连接与短连接
BIO与NIO
Selector轮询
多路IO复用
Linux Epoll 与 windows select有哪些区别
Netty
Mina
并发编程
java线程池
https://processon.com/view/link/5d567515e4b0d780770143a2#outline
锁
隐式锁 Synchronized
JVM内置锁升级过程
无锁-》偏向锁-》轻量级锁-》重量级锁
显式锁 Lock
类和对象在JVM存储机制
JMM
Java
HashMap
重写HashCode方法
HashMap1.7与1.8的区别
1.7 数组+链表
1.8 数组+红黑树
ConcurrentHashMap
基础编程
数据结构与算法
概述
数据的存储结构
顺序存储
链式存储
数据的逻辑结构
集合结构
线性结构
数组
线性查找
二分法查找
栈
队列
单链表
循环链表
双链表
递归
树形结构
图形结构
算法
时间复杂度和空间复杂度
排序算法
交换排序
冒泡排序
快速排序
插入排序
直接插入排序
希尔排序
选择排序
简单选择排序
堆排序
归并排序
基数排序
常用设计模式
0 条评论
下一页