底层知识
计算机基础
- 计算机原理
- 数据结构和常用算法
- 操作系统:进程,线程,内存
计算机网络
- tcp/ip协议
- tcp/ip网络模型
- http协议原理
- 网络IO模型
- Socket网络编程
- linux基础
专业技能
- Java基础类库,异常。
- JVM原理和调优。《深入理解java虚拟机》
- 框架
- 并发编程。《java并发编程实战》
- 多线程
高质量编程能力
- 重用型
- 低耦合
- 可拓展性
- 可维护性
- 高性能
- 安全性高
面向对象编程
- MVC编程思想
- 掌握建模语言和建模工具:UML
- 面向对象思想
设计模式
- 基础设计模式和设计原则
- 常用设计模式
- 重构
安全知识
- web安全:xss,sql注入,ddos攻击
- 安全纬度:漏洞,风险,事件
- https协议
运维能力
- 监控
- 持续化集成:henkins
- 自动化运维工具:ansible,saltack
- 虚拟化:kvm,vm
- 容器:docker
- 云技术:openstack
- DevOps
数据库
- 基础理论
- 数据库设计三大范式
- mysql原理
- mysql优化
- mysql引擎
- Nosql:redis/mongoDB
常用软件
-
web server
ngnix
Apache
Tomcat
jetty -
消息队列
RabbitMQ
RocketMQ
ActiveMQ
Kafka
Redis -
RPC
Dubbo
gRpc -
数据库中间件
DBproxy
HAproxy -
软件负载均衡
几种负载均衡算法:轮询,权重,负载,最少连接
DNS负载均衡
Ngnix
LVS+Keepalived负载均衡
HAProxy
HAProxy+keepalived+MySQL负载均衡 -
性能调优
性能调优方法论
容量评估
CDN网络
连接池
性能调优 -
大数据
Hadoop
MapReduce
Storm
Spark
Kafka Stream -
工程化
maven
git
jenkins
Gradle
架构基础知识
- 架构演进
单体应用
分布式
微服务
服务网络 - 架构模式
- 分层:横向分层:应用层,服务层,数据层
- 分割:纵向分割:拆分功能和服务
- 分布式
- 分布式应用和服务
- 分布式静态资源
- 分布式数据和存储
- 分布式计算
- 缓存:优化系统性能
- CDN
- 方向代理访问资源
- 本地缓存
- 分布式缓存
- 异步:降低系统耦合度
- 提高系统可用性
- 加快响应速度
- 冗余:冷备份和热备份
- 自动化:发布,测试,部署,监控,报警,安全失效转移,故障恢复
架构设计技术要点
-
设计原则
- 冗余设计
- 回滚设计
- 监控设计
- 故障隔离
- 可独立部署
- 无状态设计
- 成熟技术
- 异步设计
- 禁用设计
- 服务可降级
- 服务可限流
- 水平扩展
-
接入层设计
- DNS轮询
- 动静分离
- 方向代理:LVS,NGNIX
- CDN
- 接入层安全:DNS劫持,限流,防刷
-
应用层设计
- 通信机制:RPC,MQ
- 异步
- 连接池
- 配置中心
-
数据库设计
- 高可用数据库架构
- 双主架构
- 主从同步
- 读写分离
- 分表分库