文章目录

  • 一、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()方法阻塞的线程继续执行。

java单机熔断框架 java服务熔断_List

  • Semaphore

ConutDownLatch 类似,但是它限制流量,类似阀门的作用。用于获取权限的 acquire() 方法和用于释放权限的 release 方法。

  • 最终代码

java单机熔断框架 java服务熔断_List_02

1.2) 使用 Resilience4j 实现服务熔断

1.2.1)Hystrix 以外的选择

java单机熔断框架 java服务熔断_开发语言_03

1.2.2) 核心组件

java单机熔断框架 java服务熔断_List_04

1.2.3)断路器

java单机熔断框架 java服务熔断_List_05

  • 代码实现

二、06.01 周三

2.1)N皇后问题

leetcode 51,52

java单机熔断框架 java服务熔断_开发语言_06

2.1.1) 代码实现

python DFS

java单机熔断框架 java服务熔断_List_07

java单机熔断框架 java服务熔断_java_08

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单机熔断框架 java服务熔断_Cloud_09

Java 版本

java单机熔断框架 java服务熔断_java_10

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 实现

隔舱的意思

java单机熔断框架 java服务熔断_Cloud_11

  • 配置

实现对下游调用并发度的控制,在并发允许的数量范围内正常请求,对超过并发量的部分,则是直接返回

3.1.2) 使用 RateLimiter实现

java单机熔断框架 java服务熔断_List_12

  • 配置

使用 Postman 工具模拟在短时间内较多次请求,然后使用 Spring Boot 提供的 Actuator 中的 endpointer 来观察超过请求量失败的情况

3.2) 服务熔断总结

3.2.1)模式 | 工具 | 观察与监控

java单机熔断框架 java服务熔断_Cloud_13

java单机熔断框架 java服务熔断_List_14

3.3)基于 GIt的配置中心

3.3.1)·Spring Cloud Config Server·

java单机熔断框架 java服务熔断_List_15

java单机熔断框架 java服务熔断_java单机熔断框架_16

  • 使用 Git 作为后端存储的 backend

四、 06.04 周六

4.1) Spring Cloud Config Client

java单机熔断框架 java服务熔断_java单机熔断框架_17

  • 配置刷新: @RefreshScope
  • java单机熔断框架 java服务熔断_开发语言_18


4.2) 基于 Zookeeper 的配置中心

  • 主要是 使用 Zookeeper 中的 config

4.2.1) Zookeeper中的数据怎么存?

java单机熔断框架 java服务熔断_List_19

五、06.05 周日

5.1)深入理解 Spring Cloud的配置抽象

目标和实现

java单机熔断框架 java服务熔断_java单机熔断框架_20

Spring Cloud Config 的 PropertySource

java单机熔断框架 java服务熔断_开发语言_21

Spring Cloud Config Server通过 Spring Cloud Bus 对配置的集群进行一个刷新

java单机熔断框架 java服务熔断_java_22

Spring Cloud Config ZookeeperZookeeperAutoConfiguration

java单机熔断框架 java服务熔断_开发语言_23

配置的组合顺序 下面的优先级顺序依次降低

java单机熔断框架 java服务熔断_Cloud_24

5.2)基于 Consul 的配置中心

5.2.1)Spring Cloud Consul Config

java单机熔断框架 java服务熔断_java_25

Consult 中的数据怎么存 配置项

java单机熔断框架 java服务熔断_Cloud_26

如何定制 自定义即可

java单机熔断框架 java服务熔断_java单机熔断框架_27

配置项变更

java单机熔断框架 java服务熔断_java单机熔断框架_28