文章目录
- 一、05.31 周二
- 1.1) 测试并发
- 1.2) 使用 `Resilience4j` 实现服务熔断
- 1.2.1)Hystrix 以外的选择
- 1.2.2) 核心组件
- 1.2.3)断路器
- 二、06.01 周三
- 2.1)N皇后问题
- 2.1.1) 代码实现
- 2.1.2) `Python` 代码涉及的语法等
- 三、 06.03 周五
- 3.1)使用 `Resilience4j` 实现服务限流
- 3.1.1) 使用 `Bulkhead` 实现
- 3.1.2) 使用 `RateLimiter`实现
- 3.2) 服务熔断总结
- 3.2.1)模式 | 工具 | 观察与监控
- 3.3)基于 GIt的配置中心
- 3.3.1)·`Spring Cloud Config Server`·
- 四、 06.04 周六
- 4.1) Spring Cloud Config Client
- 4.2) 基于 `Zookeeper` 的配置中心
- 4.2.1) Zookeeper中的数据怎么存?
- 五、06.05 周日
- 5.1)深入理解 Spring Cloud的配置抽象
- 5.2)基于 `Consul` 的配置中心
- 5.2.1)Spring Cloud Consul Config
一、05.31 周二
1.1) 测试并发
文章链接: 测试并发
① 能测试并发的工具: Apache Bench ,并发模拟工具JMeter,代码模拟(CountDownLanch
)
② 模拟代码:
- 类
CountDownLanch
调用了 CountDownLanch 中的 await()方法后,线程处于阻塞状态。只有当其他的线程调用countdown()
方法将 计数cnt
减少到0时,才触发之前 因await()方法阻塞的线程继续执行。
- 类
Semaphore
与
ConutDownLatch
类似,但是它限制流量,类似阀门的作用。用于获取权限的acquire()
方法和用于释放权限的release
方法。
- 最终代码
1.2) 使用 Resilience4j
实现服务熔断
1.2.1)Hystrix 以外的选择
1.2.2) 核心组件
1.2.3)断路器
- 代码实现
二、06.01 周三
2.1)N皇后问题
leetcode 51,52
2.1.1) 代码实现
python DFS
class Solution:
def solveNQueens(self, n: int) -> List[List[str]]:
if n < 1: return []
self.result = []
self.cols = set(); self.pie = set(); self.na = set()
self.DFS(n, 0, [])
return self._generate_result(n)
def DFS(self, n, row, cur_state):
if row >= n:
self.result.append(cur_state)
return
for col in range(n):
if col in self.cols or row + col in self.pie or row - col in self.na:
continue
self.cols.add(col)
self.pie.add(row + col)
self.na.add(row - col)
self.DFS(n, row + 1, cur_state + [col])
# 恢复现场,归去来兮的感觉
self.cols.remove(col)
self.pie.remove(row + col)
self.na.remove(row - col)
def _generate_result(self, n):
board = []
for res in self.result:
for i in res:
board.append("." * i + "Q" + "." * (n - i - 1))
# 循环构建返回值,range()函数的步长是n,每n个是一组,每n组是一个结果情况
return [board[i: i + n] for i in range(0, len(board), n)]
更简洁的写法,利用Python
的独特语法,函数嵌套,循环嵌套等Java 版本
2.1.2) Python
代码涉及的语法等
- 将列表 list快速分组
myList = [1, 2, 3, 4]
groupList = [myList(i:i+3) for i in range(0, len(myList), 3)]
print (groupList)
参考
Pythion代码在线运行: https://www.json.cn/runcode/run_python3/ Python的语法:
三、 06.03 周五
3.1)使用 Resilience4j
实现服务限流
3.1.1) 使用 Bulkhead
实现
隔舱的意思
- 配置
实现对下游调用并发度的控制,在并发允许的数量范围内正常请求,对超过并发量的部分,则是直接返回
3.1.2) 使用 RateLimiter
实现
- 配置
使用
Postman
工具模拟在短时间内较多次请求,然后使用Spring Boot
提供的Actuator
中的endpointer
来观察超过请求量失败的情况
3.2) 服务熔断总结
3.2.1)模式 | 工具 | 观察与监控
3.3)基于 GIt的配置中心
3.3.1)·Spring Cloud Config Server
·
- 使用 Git 作为后端存储的 backend
四、 06.04 周六
4.1) Spring Cloud Config Client
- 配置刷新:
@RefreshScope
4.2) 基于 Zookeeper
的配置中心
- 主要是 使用
Zookeeper
中的 config
4.2.1) Zookeeper中的数据怎么存?
五、06.05 周日
5.1)深入理解 Spring Cloud的配置抽象
目标和实现Spring Cloud Config 的PropertySource
Spring Cloud Config Server通过 Spring Cloud Bus 对配置的集群进行一个刷新Spring Cloud Config ZookeeperZookeeperAutoConfiguration
类配置的组合顺序 下面的优先级顺序依次降低
5.2)基于 Consul
的配置中心
5.2.1)Spring Cloud Consul Config
Consult 中的数据怎么存 配置项如何定制 自定义即可配置项变更