Java学习思维导图
2021-04-09 17:11:06 1 举报
AI智能生成
指导Java开发人员,成为Java架构师。
作者其他创作
大纲/内容
计算机基础
计算机组成原理
硬件基础架构(冯·诺依曼体系结构)
控制器<br>
指令系统
微命令
微操作
微指令<br>
机器指令
运算器<br>
算术逻辑单元(ALU)
累加器
状态寄存器
通用寄存器组
存储器<br>
外存储器
内存储器
输入设备<br>
输出设备<br>
计算机的组成<br>
主板<br>
总线
CPU<br>
中央处理器
控制器
运算器
存储器
内存<br>
存储器
硬盘<br>
存储器
显卡<br>
GPU图形处理器<br>
运算器
输入设备<br>
鼠标<br>
键盘<br>
触摸屏
TODO: 待补充……
输出设备<br>
显示器<br>
打印机
TODO: 待补充……
操作系统
Windows
Windows Server<br>
Linux
CentOS
Ubuntu
以桌面应用为主
Unix
iOS
Android
计算机网络
物理层
数据链路层
网络层
IP协议
ICMP协议
传输层
UPD协议
TCP协议
应用层
HTTP协议
三次握手、四次挥手
FTP协议
SMTP协议
数据结构与算法
数据结构(Data Structure )
数组(Array)
链表(Linked List)
堆(Heap)
先进先出
栈(Stack)
后进先出(先进后出)
队列(Queue)
先进先出
树(Tree)
二叉树
完美二叉树
完全二叉树
完满二叉树
AVL树
红黑树
B树/B+树
图(Graph)
深度优先遍历
广度优先遍历
散列表(哈希表 - Hash table)
算法(Algorithm)
五大常用算法
递归与分治
动态规划
贪心
回溯法
分支限界法
查找(检索)
顺序查找
二分查找
插值查找
斐波那契查找
树表查找
分块查找
哈希查找
排序
比较类排序
交换排序
冒泡排序
快速排序
插入排序
简单插入排序
希尔排序
选择排序
简单选择排序
堆排序
归并排序<br>
二路归并排序
多路归并排序
非比较类排序
计数排序
桶排序
基数排序
分布式一致性算法
Raft
Paxos
ZAB
Gossip
一致性Hash
TODO: 待补充……
负载均衡(Load Balance)算法
随机(Random)法
加权随机(Weight Random)法
轮询(Round Robin)法
加权轮询(Weight Round Robin)法
最小连接数(Least Active)法<br>
源地址一致性哈希(Consistent Hash)法
TODO: 待补充……
TODO: 待补充……
开发工具
IDE(开发工具)
前端
WebStorm(JetBrains出品)
Visual Studio Code(简称:VS code)
HBuilder
Atom(GitHub出品)
Adobe Dreamweaver CC(Adobe出品)
Sublime Text
后端
IDEA
常用插件
Lombok
Model代码简化插件,结合maven或gradle的lombok的jar包工作
Alibaba Java Coding Guidelines
阿里代码规范插件
Statistic
统计项目代码量
FindBugs
检查代码BUG,如:逻辑问题、依赖问题、性能问题、安全问题、存在漏洞等等
TODO: 待补充……
Eclipse
MyEclipse
TODO: 待补充……
项目构建管理工具
Maven
Maven常用命令
mvn package<br>
mvn install<br>
mvn clean<br>
mvn deploy<br>
Maven仓库
私有仓库
Nexus
云仓库
阿里云效Maven仓库
常用插件
CheckStyle
<dependency><br> <groupId>org.apache.maven.plugins</groupId><br> <artifactId>maven-checkstyle-plugin</artifactId><br> <version>3.1.2</version><br></dependency><br>
FindBugs<br>
<dependency><br> <groupId>org.codehaus.mojo</groupId><br> <artifactId>findbugs-maven-plugin</artifactId><br> <version>3.0.5</version><br></dependency><br>
TODO: 待补充……
Gradle
代码版本管理工具
Git
Git仓库
私有仓库<br>
GitLab
GitLab安装教程
CI/CD(持续集成/持续交付)
自动化单元测试<br>
代码规范校验
maven插件:CheckStyle
代码BUG检测
maven插件:FindBugs
Push Request<br>
用于功能分支合并到主分支时使用的功能
云仓库<br>
GitHub
Gitee<br>
Coding
阿里云效代码管理
TODO: 待补充……
分支(Branch)
分支使用规范
SVN
运维技术
Linux系统
Linux常用命令
Shell脚本
容器技术
Docker
Docker常用命令
Dockerfile
自动化部署
Jenkins
服务治理
K8s
Java语言
语言基础
JDK1.8新特性<br>
lambda
函数式接口<br>
@FunctionalInterface
方法引用、构造函数引用
Stream API<br>
对集合的操作
接口中的默认方法(default)和静态方法(static)<br>
新时间日期API
Optional
避免空指针异常
该JDK版本自带BUG
ConcurrentHashMap.computeIfAbsent嵌套的死锁BUG
特点
面向对象
三大特性
封装
继承
多态
基础语法
语法学习
关键字
package
import
类型
类型和实例
interface
class
transient
enum
extends
implements
this
super
new
基本数据类型
short<br>
int
long
float
double
boolean
true
false
byte
char
null
void
修饰符<br>
访问修饰符
default
private
protected
public
非访问修饰符
static
final
abstract
synchronized、volatile
线程安全编程需要
try、catch、finally
throw
throws
return
continue、break
do
while
for
if、else
switch
instanceof
native
数据类型
基本数据类型<br>
布尔型<br>
boolean
false
数值型
整数型
byte
0
short
0
int
0
long
0L
字符型
char
'u0000'
字符型也属于整数型,因为它由2字节组成,与0~2的16次方-1的数字内存一致
浮点型<br>
float
0.0f
double
0.0d
引用类型
类
抽象类
接口
数组
空类型<br>
null<br>
枚举
泛型
异常(Throwable)
异常(Exception)
RuntimeException(无需throws)
空指针:NullPointerException
参数非法:IllegalArgumentException
非RuntimeException(需throws或捕获处理)
类未找到:ClassNotFoundException<br>
IO异常:IOException
错误(Error)<br>
内存溢出:OutOfMemoryError
未找到类定义:NoClassDefFoundError<br>
集合
Collection
List
特性
有序
可重复
常用数据结构
数组
链表
List接口
ArrayList
LinkedList<br>
Vector
TODO: 待补充……
Set
特性
无序
不可重复
常用数据结构
Set接口
SortedSet接口
TreeSet
HashSet
LinkedHashSet
TODO: 待补充……
Collections工具类:方便操作集合
常用方法<br>
TODO: 待补充……
Map
Map接口
SortedMap接口
TreeMap
ConcurrentMap接口
ConcurrentHashMap
HashMap
LinkedHashMap
Hashtable
TODO: 待补充……
IO
网络编程
Socket
JDBC
反射
注解
代理
静态代理
动态代理
JDK动态代理
只支持对接口进行代理<br>
CGLib
Javassist
ASM
ByteBuddy
TODO: 待补充……
语言进阶
设计模式
六大设计原则
Single Responsibility Principle:单一职责原则
Open Closed Principle:开闭原则
Liskov Substitution Principle:里氏替换原则
Law of Demeter:迪米特法则
Interface Segregation Principle:接口隔离原则
Dependence Inversion Principle:依赖倒置原则
三大类设计模式(23种)
创建型模式(5种)
工厂方法模式
抽象工厂模式
单例模式
建造者模式
原型模式
结构型模式(7种)
适配器模式
装饰器模式
代理模式
外观模式
桥接模式
组合模式
享元模式
行为型模式(11种)
策略模式
模板方法模式
观察者模式
迭代子模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介者模式
解释器模式
多线程/并发编程
TODO: 待补充……
Java代码规范<br>
阿里巴巴P3C规范
阿里开发手册
阿里P3C插件<br>
Alibaba Java Coding Guidelines plugin support
BUG查找插件
FindBugs<br>
用于检查代码的BUG。<br>此插件即有IDE插件,也有maven插件。<br>
TODO: 待补充……
更优代码
TODO: 待补充……
TODO: 待补充……
JVM(Java虚拟机)
JVM的不同实现
HotSpot VM<br>
Oracle JDK<br>
OpenJDK
GraalVM
基于OpenJDK开发的新的JVM
SpringBoot2.4开始兼容该JVM
比OpenJDK性能更高、运行更稳定
Exact VM
J9 VM(IBM公司开发)<br>
内存结构
运行时数据区
堆:Heap
方法区(永久代):Method Area(一种规范)
规范的不同实现<br>
JDK1.7:永久代:PermGen,HotSpot VM才有<br>
JDK1.8:元空间:Metaspace
老年代:Old(占2/3堆内存)
年轻代:Young(占1/3堆内存)
Eden区:80%
Survivor区1:10%<br>
Survivor区2:10%<br>
栈:Stack<br>
虚拟机栈:VM Stacks
栈帧:Frame<br>
本地方法栈:Native Method Stack
程序计数器:Program Counter Register
执行引擎:Execution Engine<br>
本地库接口:Native Interface
图片示例
<br>
GC(Garbage Collection):垃圾回收机制
三种垃圾回收方式
Minor GC:清理年轻代
Major GC:清理老年代<br>
Full GC:清理整个堆内存(包括年轻代和老年代)
算法
Class Loader:类加载机制
JVM参数
标准参数
-help
-server | -client<br>
-version | -showversion<br>
-cp | -classpath<br>
TODO: 待补充……
非标准参数
X参数
-Xint
-Xcomp
-Xmixed
TODO: 待补充……
XX参数
Boolean类型
格式:-XX:[+-][name],例:-X:+UseConcMarkSweepGC、-X:-UseG1GC
-X:[+-]UseConcMarkSweepGC:是否启用CMS垃圾收集器
-X:[+-]UseG1GC:是否启用G1垃圾收集器
TODO: 待补充……
非Boolean类型<br>
格式格式:-XX:[name]=[value],例:-XX:CICompilerCount=2
缩写写法:-X??[value],例:-Xms100M
-Xms(-XX:InitialHeapSize):初始堆内存大小
-Xmx(-XX:MaxHeapSize):最大堆内存大小
-Xss(-XX:ThreadStackSize):线程堆栈内存大小
TODO: 待补充……
JVM调优
JVM进程分析
JVM信息
PID:进程ID
Thread:线程<br>
CPU
IO:输入输出
Memary:内存
Heap Memary:堆内存
Stack Memary:栈内存
GC
JVM参数
TODO: 待补充……
JVM调优工具
Java自带工具
jvisualvm<br>
插件
Visual GC<br>
TODO: 待补充……
jstat
jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]
使用教程
jstack
使用教程
TODO: 待补充……
阿里开源工具
Arthas JVM<br>
官网<br>
用户文档
GitHub开源项目
TODO: 待补充……
问题及解决
内存泄漏、内存溢出<br>
TODO: 待补充……
死循环、死锁
使用java工具:jstack,导出所有线程的堆栈信息,并检查死锁的原因。
频繁执行GC
TODO: 待补充……
CPU占用很高<br>
TODO: 待补充……
IO占用很高<br>
TODO: 待补充……
TODO: 待补充……
数据库
关系型数据库(RDBMS)
MySQL
库
表
字段
约束<br>
索引
事务
事务的特点:ACID
Atomicity(原子性)
Consistency(一致性)
Isolation(隔离性)
Durability(持久性/耐久性)
隔离级别
@Transactional(isolation = DEFAULT)
使用数据库默认隔离级别,每种数据库支持的事务隔离级别不一样。并且可以修改默认隔离级别。
MySQL查询当前隔离级别的SQL
select @@tx_isolation
四种隔离级别<br>
READ_UNCOMMITTED(读未提交)
可读取未提交事务的操作数据,最低的隔离级别,一般都没有用的。这种情况会出现脏读
READ_COMMITED(读已提交)
一个事务等另一个事务提交之后才可进行读取,解决了脏读问题,但会出现不可重复读
REPEATABLE_READ(可重复读)
解决一个事务重复读取数据,但由于其他事务修改了数据导致多次读取的数据不一致的问题
SERLALIZABLE(序列化/串行化)
最高的事务隔离级别,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。<br>但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用<br>
并发事务产生的问题及解决解决方案
脏读
TODO: 待补充……
不可重复读
TODO: 待补充……
幻读
TODO: 待补充……
使用隔离级别解决图示
<br>
事务相关参考资料
Spring声明式事务@Transactional 详解,事务隔离级别isolation和事务传播行为propagation
SQL语句
存储引擎
InnoDB
支持事务
MyISAM
不支持事务
使用场景
只有Insert和Select的数据表
Archive
不支持事务
使用场景
只有Insert和Select的数据
例子
日志数据
归档数据
Memory
不支持事务
使用场景
临时数据
数据量不大
各引擎能力表格<br>
<br>
Oracle
非关系型数据库(NoSQL数据库)
Redis
MongoDB
数据库设计
三大范式
第一范式:确保表中每列的原子性
第二范式:确保表中的每列都和主键相关
第三范式:确保每列都和主键列直接相关,而不是间接相关
五大约束
PRIMARY KEY:主键约束
UNIQUE:唯一性约束
DEFAULT:默认值约束
NOT NULL:非空约束
FOREIGN KEY:外键约束
六大设计步骤<br>
1. 需求分析阶段
2. 概念结构设计阶段
3. 逻辑结构设计阶段
4. 数据库物理设计阶段
5. 数据库实施阶段
6. 数据库运行与维护阶段
性能优化
SQL性能调优
SQL分析:explain<br>
日常积累
SELECT子句中避免使用“*”
WHERE子句的连接顺序
减少访问数据库的次数
TODO: 待补充……
数据库系统参数优化<br>
MySQL
TODO: 待补充……
Web
前端
HTML、HTML5
CSS、CSS3、CSS4
JavaScript
jQuery
Ajax
NodeJS
前端框架<br>
Vue
Angular<br>
React
Web服务器
Tomcat
Jetty
Nginx
负载均衡
反向代理<br>
HTTP服务器(包含动静分离)
正向代理
Servlet & JSP
Cookie & Session
API
数据交换类型
JSON
XML
文件流
数据交换方式
WebAPI
协议:超文本传输协议(Hypertext Transfer Protocol,HTTP)
数据:JSON为主,部分也有使用XML<br>
WebService<br>
协议:简单对象访问协议(Simple Object Access Protocol,SOAP)
WSDL:Web Service定义语言<br>
UDDI:用于描述、发现、集成Web Service的技术
数据:XML
WebSocket
长连接<br>
服务端可以主动向客户端推送数据
后端框架
Spring
Spring原理
IOC & DI<br>
AOP
JointPoint(连接点)
@Pointcut(切入点)
expression(表达式)<br>
execute
within
this
target
args
@within
@annotation
@target
@args
切入位置
@Before
@After
@AfterRunning
@AfterThrowing
@Around<br>
Advice(通知)
@Aspect(切面)
Weaving(织入)<br>
Proxy(代理)
Target(目标对象)
Bean的生命周期<br>
Spring容器的初始化过程
代理模式
JDK动态代理(默认)
CGLib
TODO: 待补充……
SpringFramework
SpringWeb
SpringWebMVC
SpringWebFlux
SpringWebSocket
SpringData
SpringJdbc
@Transactional
propagation(事务传播模式)
isolation(事务隔离级别)
readOnly(只读事务)
timeout(事务超时时间)
rollbackFor(触发回滚的异常类型)
noRollbackFor(不触发回滚的异常类型)
SpringJPA
SpringRedis
SpringMongoDB<br>
SpringSecurity<br>
SpringBoot
@SpringBootApplication
@SpringBootConfiguration
@EnableAutoConfiguration<br>
spring.factories配置文件
org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration<br>
org.springframework.boot.autoconfigure.AutoConfigurationImportListener
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter
org.springframework.boot.autoconfigure.EnableAutoConfiguration
org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider
org.springframework.boot.diagnostics.FailureAnalyzer
org.springframework.boot.diagnostics.FailureAnalysisReporter
org.springframework.boot.env.EnvironmentPostProcessor
org.springframework.boot.env.PropertySourceLoader
org.springframework.boot.SpringApplicationRunListener
org.springframework.boot.SpringBootExceptionReporter
org.springframework.context.ApplicationContextInitializer
org.springframework.context.ApplicationListener
spring-autoconfigure-metadata.properties配置文件
@ComponentScan
内置Web服务器<br>
Tomcat
Jetty
配置提示
前提条件:IDE中必须先安装springboot插件
spring-configuration-metadata.json:配置信息描述文件
SpringBoot-2.3.9中关于该描述文件官方资料<br>
服务监测:spring-boot-actuator
management配置项<br>
/actuator/health:查看服务健康状况JSON
components:当前组件包含的其他组件
status:当前组件状态
code:状态枚举
UP
Down
description:状态描述
当前组件的其他属性
样例截图<br>
<br>
info配置项
/actuator/info页面:查看info配置信息JSON
此信息都是自定义的
样例截图
<br>
参考文档<br>
SpringBoot-2.3.9.RELEASE的PDF下载链接
SpringCloud
网关
网关的作用
权限控制
授权
黑名单与白名单拦截
负载均衡
限流
熔断
日志拦截
隐藏服务端的IP
解决跨域问题
Gateway
Zuul
Nginx
注册中心
Eureka
Eureka Server<br>
默认端口:8761
Nacos
Nacos Server<br>
默认端口:8848
Zookeeper
默认端口:2188
Consul
Etcd3
Sofa
TODO: 待补充……
配置中心<br>
Nacos
Nacos Server<br>
默认端口:8848
Apollo
Zookeeper
Consul
Etcd3
SpringCloudConfig
TODO: 待补充……
微服务调用<br>
OpenFeign
@EnableFeignClients
@FeignClient
Alibaba Dubbo
Apache Dubbo<br>
负载均衡
Ribbon
基于Netflix Ribbon开发<br>
熔断器
作用
服务熔断
服务降级
Hystrix
链路跟踪
Zipkin
可视化:Zipkin
SkyWalking<br>
服务监控
SpringBootAdmin<br>
分布式事务
与分布式事务对应的是本地事务的特点
ACID
分布式事务的原理
CAP理论
C:一致性(Consistency)
A:可用性(Availability)
P:分区容错性(Partition tolerance)
P是必须的,所以CAP中,只对C和A进行选择
BASE理论
BA:基本可用(Basically Available)
S:软状态(Soft State)
E:最终一致性(Eventually Consistent)
分布式事务实现方案
2PC
3PC
消息补偿
分布式事务存在的问题
悬挂
空回滚
幂等
分布式事务框架
阿里开源-seata
阿里云-GTS
蚂蚁金服-DTX
TX-LCN<br>
已经停更,官网域名也已过期,不建议使用
SpringCloudAlibaba
Nacos
注册中心<br>
配置中心
Sentinel
控制台
实时监测
机器发现
规则配置
功能
限流控制
集群限流
调用关系限流
热点限流<br>
异常熔断
线程数隔离
慢调用降级
调用链路
速率控制
系统自适应保护
削峰填谷
来源访问控制
动态规则配置
分布式事务
阿里开源项目:seata
全局事务<br>
@GlobalTransactional<br>
propagation(事务传播模式)
每个接口都需要考虑在一个全局事务中,当前接口该怎样传播事务。
默认值:REQUIRED
timeoutMills(全局事务超时时间)
超时后还是begin状态时,TC会将其标记为超时回滚状态进行异步全局回滚操作
默认值:30秒<br>
原名:Fescar
模式<br>
AT模式<br>
满足了CAP中的CP
强一致性
数据源代理
SQL解析
undo_log
前镜像
后镜像
镜像数据压缩功能(seata1.5即将发布的新特性)
分布式锁<br>
@GlobalLock
支持可重入锁
支持防悬挂和幂等:由本地undo_log表支持控制
XA模式
满足了CAP中的CP
强一致性
基于数据库的XA协议的实现
数据源代理
不支持可重入锁<br>
TCC模式
满足了CAP中的CP
应用场景:可预约资源场景
对数据进行加减的场景<br>
金融
库存<br>
最新版本(1.4.1)中,暂不支持防悬挂和幂等控制,功能开发中
对应的PR #3545
理解<br>
Try阶段
一阶段
Confirm阶段
二阶段
Cancel阶段
二阶段
异步提交功能
王良开发的PR,目前还未合并
SAGA模式
基于BASE理论<br>
柔性事务
保证最终一致性
满足了CAP中的AP
服务编排
statelang(状态描述语言)
直接对服务进行编排的语言
基于设计器的服务编排语言
除了服务编排信息外,还包含了各节点的坐标信息等。满足设计器可视化展示。
在线编排设计器
状态机(State Machine)
状态机引擎(State Machine Engine)
状态(State)
正向服务(Service)
异常处理
逆向补偿(Compensate)<br>
正向重试(Forward)
部分情况下无法进行逆向补偿,将会通过正向重试的方式保证最终一致性
角色
TM(事务发起者/管理者:TransactionManager)
开始时,向TC发起begin请求,开始一个全局事务,获取xid
成功时,向TC发起全局提交请求
异常时,向TC发起全局回滚请求
RM(事务资源管理者:ResourceManager)
AbstractResourceManager
AT:DataSourceManager
TCC:TCCResourceManager<br>
XA:ResourceManagerXA
SAGA:SagaResourceManager
TC(事务协调者:TransactionCoordinator)
服务端:seata-server<br>
RPC
RPC框架:Netty
序列化方式(SerializerType)
seata自研<br>
protobuf
kryo
fst
hessian
压缩方式(CompressorType)<br>
none<br>
gzip
zip
sevenz
bzip2
lz4
deflater
协调器:DefaultCoordinator
5个异步定时任务
AsyncCommitting(异步提交)
处理状态
AsyncCommitting
8
作用
全局事务存在可异步提交的线程时,交由此定时任务处理。<br>
RetryCommitting(重试提交)
处理状态
CommitRetrying
3
Committing
2
作用
子主题
RetryRollbacking(重试回滚)
处理状态<br>
Rollbacking
4
RollbackRetrying
5
TimeoutRollbacking
6
TimeoutRollbackRetrying
7
TxTimeoutCheck(超时检测)
处理状态
Begin
1
作用
全局事务超时时,由Begin状态变更为TimeRollbacking状态。<br>并交由RetryRollbacking定时任务处理<br>
UndoLogDelete
AT模式专用,异步向RM发起删除N天前的undo_log数据
核心代码:DefaultCore
子主题
seata中使用注册中心<br>
支持类型(RegistryType)
File:不使用注册中心,在文件中配置seata-server地址
ZK:Zookeeper
Redis
Nacos
Eureka
Consul
Etcd3
Sofa
Custom:自定义实现
seata中使用配置中心
支持类型(ConfigType)
File:不使用配置中心,在文件中配置
ZK:Zookeeper
Nacos
Apollo
Consul
Etcd3
SpringCloudConfig
Custom:自定义实现
持久层框架(ORM框架)
ORM框架
MyBatis
MyBatis 3 官网指南
缓存
一级缓存
二级缓存
Mapper
插件
MyBatis-Plus
MyBatis-Plus官网指南
接口和基类<br>
BaseMapper<T>
IService<T>
ServiceImpl<T>
插件
分页查询插件
SQL性能监测插件<br>
TODO: 待补充……
JPA
数据库版本管理框架
Flyway
RPC框架
Netty/NIO
gRPC
Thrift
日志框架
logback
log4j<br>
SLF4J(Simple logging Facade for Java)
任务调度框架
XXL-JOB
Elastic-Job
Staturn
Quartz
uncode-schedule
LTS
TBSchedule
Opencron
Antares
sia-task
缓存
常用缓存框架<br>
Redis
EhCache
TODO: 待补充……
问题及解决方案
缓存穿透
缓存击穿
缓存雪崩
中间件
缓存
Redis
内存数据库<br>
模块
网络请求模块
单线程
多路复用
索引模块
数据存储模块
单线程
高可用集群支撑模块
数据操作模块
TODO: 待补充……
MongoDB
EhCache
MemCache
TODO: 待补充……
消息队列
RabbitMQ
Publisher
Exchange
Queue
RoutingKey
Consumer
Confirm
TODO: 待补充……
Kafka
RocketMQ
ActiveMQ
搜索引擎
Solr
ElasticSearch
Lucene
分布式锁
应具备的条件
一个方法或一条数据只能被一个机器的一个线程执行
一个方法或一条数据只能被一个机器的一个线程执行
高可用的获取锁与释放锁
高性能的获取锁与释放锁
具备可重入特性
具备锁失效机制,防止死锁
具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败
常用实现方案
Redis
Zookeeper
分布式事务
阿里巴巴的开源项目:seata
阿里云收费项目:GTS
蚂蚁金服:DTX<br>
TX-LCN
分布式日志
ELK
E:ElasticSearch
L:LogStash、Beats
K:Kibana
分布式文件系统<br>
FastDFS
分布式架构
微服务架构
概念
Provider
服务提供者
Consumer
服务消费者
ServiceMesh(服务网格)
与分布式架构的区别
从概念角度理解
分布式架构:强调的是服务化以及服务的分散化
微服务架构:强调的是服务的专业化和精细分工
从实践角度理解
微服务架构通常是分布式架构的,反之则未必成立。<br>所以,选择微服务通常意味着需要解决分布式架构的各种难题。
微服务框架
SpringCloud
Dubbo
Docker(容器化部署)
K8s(服务治理)
Istio(大型微服务系统管理工具)
微服务连接
安全保障
管理
监控方式
分布式架构产生的问题及解决方案<br>
分布式事务难题
分布式事务框架<br>
服务雪崩
服务降级、熔断
Hystrix
调用链路变长,问题难以排查
链路跟踪
Zipkin
SkyWalking<br>
分布式日志
ELK
服务太多,验证以监测
SpringBootAdmin
0 条评论
下一页
为你推荐
查看更多