ZUUL 流程分析
[TOC] ZUUL 流程分析开始 https://segmentfault.com/a/1190000020925235 注解@EnableZuulProxy 上有一个 @Import(ZuulProxyMarkerConfiguration.class)-> 把 Maker初始化为Spring的Bean. 这时可以通过源码的注释,或者MATA-INF/spring.factories org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.cloud.netflix.zuul.ZuulServerAutoConfiguration,\ org.springframework.cloud.netflix.zuul.ZuulProxyAutoConfiguration 源码如下: 12345678910111213141516/** * Responsible for adding in a marker bean to trigger activation...
Docker 多架构镜像
快速的方法. 新版本的Docker.只需要改把Docker配置改成: 参考文档: https://blog.minirplus.com/16897/ 一.新版本(Containerd)Docker 配置 打开设置 打开 Features in development 选择 Beta featuresExperimental features 勾选 Use Containerd .... 保存 PS: 这个方法会把所有镜像和运行的容器清空…..(如果有很多资料,慎用). 1docker build --platform linux/arm64 -t dji-cloud-api-impl . 二. 使用 buildx1. 使用multiarch/qemu-user-static创建多架构环境1docker run --rm --privileged multiarch/qemu-user-static --reset -p yes 2. 创建自定义Builder123456789# 创建 builder 并使用docker buildx creat...
容器中使用tcpdump抓包
参数 https://mp.weixin.qq.com/s/fk73gXSKUDX1GzBFhV2fKw 复制容器内没有tcdump、route、ifconfig等网络命令,给我们网络调试、排查问题带来了很大的困难。我们知道,容器有自已的网络命名空间,所以我们只需要进入到容器的网络命名空间,再利用主机上的命令进行调试就可以了。 1.运行一个nginx容器1# 通过宿主机的8000端口映射到容器的80端口$ docker run -d -p 8000:80 nginx:1.26.2 nginx 2.找到容器中PID为1的进程在宿主机上对应的PID1$ docker inspect -f {{.State.Pid}} nginx 我们可以在宿主机上通过ps命令,确认4439进程就是对应我们容器中运行的nginx进程: 3.使用nsenter命令进入容器网络命名空间,并抓包 1# 进入到进程号为4439的网络命名空间$ nsenter -t 4439 -n 然后,我们可以使用ifconfig命令查看该网络命名空间下的网络设备信息(这...
Pulsar 订阅模式
订阅模式 一个 SubscriptionName 表示一个消费者. Exclusive 独占模式同时只有一个SubscriptionName能消费数据. 并且是第一个连接使用的SubscriptionName 情况: 多个消费者使用同一个 SubscriptionName,每一个消费者都能收到相同的消息 多个消费者使用不同的 SubscriptionName,只有第一个 SubscriptionName 的消费者能收到消息, 后面订阅的 SubscriptionName 的不能消费, 并且当每一个消费者断开后, 也不会自动转换到后面添加的 SubscriptionName 消费者. Shared 共享模式情况: 同一个 SubscriptionName 有多个时,会把数据轮训发送到消费者, 每一个消费者只有一部分数据. 如果有一个消费者断开, 数据会在剩下的消费者中发送. 不同 SubscriptionName,同时发送多份数据. Failover 灾备模式实际测试情况:(好像跟 Shared 没什么不同???) 同一个 Subscr...
SpringBoot 开发小技巧-1
接口Controller接口调试 打印Controller接口的请求参数、请求Header和响应结果 123456spring: mvc: log-request-details: truelogging: level: web: TRACE 加上 log-request-details 这个才不会被打码. 统计接口耗时AOP 优点:代码解耦,复用性强,易于维护。 缺点:可能增加系统复杂度,性能略有损耗(毕竟要生成代理)。 拦截器 优点:与Spring MVC等框架集成好,实现简单。 缺点:只能用于Web层,不能跨应用层。 性能监控工具 优点:功能全面,可视化强,易于分析。 缺点:可能引入外部依赖,成本较高。 可以使用 Listener 实现简单的 12345678910111213141516171819@Componentpublic class TimeCountListener implements ApplicationListener<ServletRequestHandledEvent> { @Overri...
Spring 实用工具类
唯一ID生成器Spring提供了3个默认的唯一ID生成器。定义了抽象接口,我们也可以自定义 1234@FunctionalInterfacepublic interface IdGenerator { UUID generateId();} 1. SimpleIdGenerator 取值范围:从1开始到Long.MAX_VALUE 12300000000-0000-0000-0000-00000000000100000000-0000-0000-0000-00000000000200000000-0000-0000-0000-000000000003 2. JdkIdGenerator 直接使用的UUID随机生成 123c63482d8-7a87-465a-a421-ef52d1fedf428eafc317-d994-4a1f-884a-dc4911a6e12bf969bef3-1d2b-448e-9272-8810db002fb9 3. AlternativeJdkIdGenerator 安全的随机ID生成器. 取值:通过SecureRand...