Skip to content

paulonglong/JavaArchitect

Repository files navigation

JavaSE

基础

容器

并发

JVM

新特性

编码之道

工具

JavaEE

基础知识

常用框架

网络

操作系统

数据结构与算法

数据结构

算法

系统架构

MySQL

Redis

Netty

ZooKeeper

安全

认证授权

数据脱敏

分布式架构

CAP理论

Consistency(一致性) Availability(可用性) Partition Tolerance(分区容错性)

BASE理论

Basically Available(基本可用) Soft-state(软状态) Eventually Consistent(最终一致性)

高并发

分布式 id

RPC

API网关

微服务

消息队列

负载均衡

  • 负载均衡系统通常用于将任务比如用户请求处理分配到多个服务器处理以提高网站、应用或者数据库的性能和可靠性。
  • 常见的负载均衡系统包括 3 种:
  • DNS 负载均衡 :一般用来实现地理级别的均衡。
  • 硬件负载均衡 : 通过单独的硬件设备比如 F5 来实现负载均衡功能(硬件的价格一般很贵)。
  • 软件负载均衡 :通过负载均衡软件比如 Nginx 来实现负载均衡功能。

读写分离

  • 读写分离主要是为了将数据库的读和写操作分不到不同的数据库节点上。
  • 主服务器负责写,从服务器负责读。另外,一主一从或者一主多从都可以。
  • 读写分离可以大幅提高读性能,小幅提高写的性能

分库分表

  • 分库分表是为了解决由于库、表数据量过大,而导致数据库性能持续下降的问题。
  • 常见的分库分表工具有:sharding-jdbc(当当)、TSharding(蘑菇街)、MyCAT(基于 Cobar)、Cobar(阿里巴巴)...。
  • 推荐使用 sharding-jdbc

高可用

限流

  • 限流是从用户访问压力的角度来考虑如何应对系统故障。
  • 限流为了对服务端的接口接受请求的频率进行限制,防止服务挂掉。
  • 比如某一接口的请求限制为 100 个每秒, 对超过限制的请求放弃处理或者放到队列中等待处理。限流可以有效应对突发请求过多。
  • 相关阅读:限流算法有哪些?

降级

  • 降级是从系统功能优先级的角度考虑如何应对系统故障。
  • 服务降级指的是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。

熔断

  • 熔断和降级是两个比较容易混淆的概念,两者的含义并不相同。
  • 降级的目的在于应对系统自身的故障,而熔断的目的在于应对当前系统依赖的外部系统或者第三方系统的故障。

排队

  • 另类的一种限流,类比于现实世界的排队。玩过英雄联盟的小伙伴应该有体会,每次一有活动,就要经历一波排队才能进入游戏。

集群

  • 相同的服务部署多份,避免单点故障。

超时和重试机制

  • 一旦用户的请求超过某个时间得不到响应就结束此次请求并抛出异常。
  • 如果不进行超时设置可能会导致请求响应速度慢,甚至导致请求堆积进而让系统无法在处理请求。
  • 另外,重试的次数一般设为 3 次,再多次的重试没有好处,反而会加重服务器压力(部分场景使用失败重试机制会不太适合)。

About

「Java架构师知识积累」

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages