高可用服务(一)限流降级篇

1. 服务限流

1.1 什么是服务限流

​ 针对服务最高处理能力设定阈值,对超过该阈值的请求做特殊化处理(排队、降级、拦截等),避免后端服务因突发流量或持续高位流量导致宕机。

1.2 限流的基本思想

​ 限流的本质在于流量整形(Traffic Shaping)和速率限制(Rate Limiting)。限流有两类算法实现:简单计数限流时间窗口限流

流量整形和速率限制

1.2.1 简单总量计数限流

​ 简单总量计数限流实现非常简单,常见的实现思路有:

Read More

1.java.lang包

1. ApplicationShutdownHooks

当应用关闭时启动钩子,每个钩子异步执行。可以通过Runtime.addShudownHook和Runtime.removeShutdownHook来添加和删除钩子。

2. Boolean

Boolean中有一个boolean类型的属性,同时还包含多种方法用于boolean和String类型互转。

3. Byte

Byte中有一个byte类型的属性,同时还包含多种方法用于byte和String类型互转。

Read More

Elasticsearch入门-4.文档

1. 什么是文档

通常情况下,文档 就是我们所说的 对象 ,但是 对象 有时会有嵌套的情况,而 文档 则指的是最顶层的根对象。

2. 文档元数据

Es包含如下常见元数据

名称 含义 备注
_index 文档在哪个索引存放
_type 文档表示的对象类别
_id 文档唯一标识

3. 索引文档

索引文档的方法前面已经提到过,这里主要是介绍自定义ID

3.1 自定义ID

如果文档带有ID,就可以自定义使用该ID,否则ES会自动生成ID

Read More

Elasticsearch入门-3.集群内部原理

1. 空集群

当Es集群中只有一个节点时,该节点自动称为主节点,主节点负责管理集群内的所有变更(增加删除索引、节点等)。当集群中有多个节点时Es会自动选举出主节点,并对数据进行平衡。

2.集群健康

Es会对集群健康信息进行统计

1
GET /_cluster/health
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"cluster_name": "elasticsearch",
"status": "yellow", //green所有分片都正常,yellow主分片正常副本分片有异常,red主分片有异常
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 10,
"active_shards": 10,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 10, //未分配分片数,有数据丢失风险
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 50
}

3.索引和分片

向Es添加数据时需要索引来记录数据保存的物理位置,所以需要使用索引

Read More