【Soul源码阅读】16.启动多台admin,多个网关,形成一个集群

soul源码阅读(八)插件流程梳理 目录 背景介绍 网关启动插件的工作流程 客户端请求网关后各插件的处理流程 总结 背景介绍 前面三篇文章 soul源码阅读(五)Spring Cloud应用示例运行 soul源码阅读(六)Spring Cloud应用示例运行续 soul源码阅读(七)Spring Cloud应用示例运行续2 我们通过以下两个问题: 一:{"code":-107,"message":"Can not find selector, please check your configuration!","data 阅读详情

目录

1.启动多台 soul-admin

2.启动多台 soul-bootstrap

3.启动多台业务系统

4.验证同步

4.1 负载均衡

4.2 数据同步


1.启动多台 soul-admin

修改配置文件,把可以开启允许并行执行的复选框。

application.yml

server:
  port: 9095

server:
  port: 9096

启动后状态:

 

2.启动多台 soul-bootstrap

跟上面的一样,修改配置文件,打开并行执行的开关。

application-local.yml

server:
  port: 9195

server:
  port: 9196

使用默认的同步数据策略 websocket,需要配置多个 soul-admin 的地址:

sync:
    websocket :
         urls: ws://localhost:9095/websocket,ws://localhost:9096/websocket

启动后状态:

3.启动多台业务系统

我们使用 examples 中自带的 soul-examples-http,启动两个节点。

修改配置文件 application.yml

server:
  port: 8188
  address: 0.0.0.0
soul:
  http:
    adminUrl: http://localhost:9095
    port: 8188
    contextPath: /http
    appName: http
    full: false

server:
  port: 8189
  address: 0.0.0.0
soul:
  http:
    adminUrl: http://localhost:9095
    port: 8189
    contextPath: /http
    appName: http
    full: false

这里的 adminUrl 配置一个 soul-admin 即可,连接上一个之后,只要能把数据同步过去,其他的节点也都可以通过数据库拿到同步后的数据。

启动后状态:

4.验证同步

4.1 负载均衡

【插件列表】【divide】【选择器列表】【修改】

2个 soul-bootstrap 节点,配置都一致,默认权重 weight 为50,我们调用几次接口,验证负载均衡。

连续调用6次 http://localhost:9195/http/order/findById?id=95 GET 请求,可以在 soul-bootstrap:9195 console 打印如下日志:

可以看到 "The request urlPath is" 轮流调用 8188 和 8189 两个业务服务节点,因为 weight 都是50,调用比例为 1:1,结果就跟轮询调用一样。

2021-01-31 03:48:06.507  INFO 15860 --- [-work-threads-3] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:48:06.509  INFO 15860 --- [-work-threads-3] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:48:06.510  INFO 15860 --- [-work-threads-3] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 03:48:06.594 ERROR 15860 --- [-work-threads-4] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:48:07.440  INFO 15860 --- [-work-threads-6] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:48:07.440  INFO 15860 --- [-work-threads-6] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:48:07.440  INFO 15860 --- [-work-threads-6] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 03:48:07.493 ERROR 15860 --- [-work-threads-7] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:48:07.759  INFO 15860 --- [-work-threads-9] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:48:07.760  INFO 15860 --- [-work-threads-9] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:48:07.760  INFO 15860 --- [-work-threads-9] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 03:48:07.779 ERROR 15860 --- [work-threads-10] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:48:08.044  INFO 15860 --- [work-threads-12] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:48:08.044  INFO 15860 --- [work-threads-12] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:48:08.045  INFO 15860 --- [work-threads-12] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 03:48:08.072 ERROR 15860 --- [work-threads-13] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:48:08.388  INFO 15860 --- [work-threads-15] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:48:08.388  INFO 15860 --- [work-threads-15] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:48:08.389  INFO 15860 --- [work-threads-15] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 03:48:08.410 ERROR 15860 --- [work-threads-16] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:48:08.744  INFO 15860 --- [work-threads-18] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:48:08.744  INFO 15860 --- [work-threads-18] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:48:08.744  INFO 15860 --- [work-threads-18] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 03:48:08.763 ERROR 15860 --- [work-threads-19] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide

我们再连续调用6次 http://localhost:9196/http/order/findById?id=95 GET 请求,可以在 soul-bootstrap:9196 console 打印如下日志:

同样可以看到 "The request urlPath is" 轮流调用 8188 和 8189 两个业务服务节点。

2021-01-31 03:51:50.681  INFO 17340 --- [work-threads-25] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:51:50.686  INFO 17340 --- [work-threads-25] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:51:50.688  INFO 17340 --- [work-threads-25] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 03:51:50.726 ERROR 17340 --- [-work-threads-1] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:51:51.352  INFO 17340 --- [-work-threads-3] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:51:51.352  INFO 17340 --- [-work-threads-3] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:51:51.352  INFO 17340 --- [-work-threads-3] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 03:51:51.375 ERROR 17340 --- [-work-threads-4] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:51:51.595  INFO 17340 --- [-work-threads-6] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:51:51.595  INFO 17340 --- [-work-threads-6] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:51:51.595  INFO 17340 --- [-work-threads-6] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 03:51:51.625 ERROR 17340 --- [-work-threads-7] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:51:51.800  INFO 17340 --- [-work-threads-9] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:51:51.800  INFO 17340 --- [-work-threads-9] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:51:51.800  INFO 17340 --- [-work-threads-9] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 03:51:51.819 ERROR 17340 --- [work-threads-10] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:51:51.996  INFO 17340 --- [work-threads-12] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:51:51.997  INFO 17340 --- [work-threads-12] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:51:51.997  INFO 17340 --- [work-threads-12] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 03:51:52.017 ERROR 17340 --- [work-threads-13] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 03:51:52.210  INFO 17340 --- [work-threads-15] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 03:51:52.210  INFO 17340 --- [work-threads-15] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 03:51:52.211  INFO 17340 --- [work-threads-15] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 03:51:52.232 ERROR 17340 --- [work-threads-16] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide

4.2 数据同步

在 9095 修改权重,然后调用接口,查看是否按照修改后的权重发送请求:

8188 weight 30,8189 weight 60。

从日志中可以看到,调用1次8188,就会调用2次8189,符合预期比例 30:60=1:2。

2021-01-31 04:14:58.252  INFO 15860 --- [work-threads-24] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 04:14:58.252  INFO 15860 --- [work-threads-24] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 04:14:58.252  INFO 15860 --- [work-threads-24] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 04:14:58.276 ERROR 15860 --- [work-threads-25] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 04:14:58.543  INFO 15860 --- [-work-threads-1] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 04:14:58.544  INFO 15860 --- [-work-threads-1] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 04:14:58.544  INFO 15860 --- [-work-threads-1] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 04:14:58.574 ERROR 15860 --- [-work-threads-3] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 04:14:59.127  INFO 15860 --- [-work-threads-4] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 04:14:59.127  INFO 15860 --- [-work-threads-4] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 04:14:59.127  INFO 15860 --- [-work-threads-4] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 04:14:59.155 ERROR 15860 --- [-work-threads-6] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 04:14:59.359  INFO 15860 --- [-work-threads-7] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 04:14:59.360  INFO 15860 --- [-work-threads-7] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 04:14:59.360  INFO 15860 --- [-work-threads-7] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8188/order/findById?id=95, retryTimes is 0
2021-01-31 04:14:59.394 ERROR 15860 --- [-work-threads-9] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 04:14:59.559  INFO 15860 --- [work-threads-10] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 04:14:59.559  INFO 15860 --- [work-threads-10] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 04:14:59.559  INFO 15860 --- [work-threads-10] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0
2021-01-31 04:14:59.587 ERROR 15860 --- [work-threads-12] o.d.s.plugin.base.utils.FallbackUtils    : can not match selector data: divide
2021-01-31 04:15:14.866  INFO 15860 --- [work-threads-13] o.d.soul.plugin.base.AbstractSoulPlugin  : divide selector success match , selector name :/http
2021-01-31 04:15:14.866  INFO 15860 --- [work-threads-13] o.d.soul.plugin.base.AbstractSoulPlugin  : divide rule success match , rule name :/http/order/findById
2021-01-31 04:15:14.866  INFO 15860 --- [work-threads-13] o.d.s.plugin.httpclient.WebClientPlugin  : The request urlPath is http://10.0.0.2:8189/order/findById?id=95, retryTimes is 0

 

Soul 网关(一)---- 架构设计简介、soul-admin、soul-bootstrap Soul 网关(一) Soul 是一个异步的,高性能的,跨语言的,响应式的API网关。今天先来整体了解一下 Soul 的结构。 Soul 架构图 两大部分:Soul-Admin(Soul 网关管理系统) 和 Soul-Cluster(网关Soul 集群) soul-admin (soul 网关的管理系统) soal-admin 依赖 MySQL,首先我们创建 soul 数据库,创建所需要的表,一共 12 个。 然后启动 soul-admin soul-admin 默认端口 9095 ,访问 http 阅读详情

相关推荐

soul网关-7-waf插件

之前的一篇学习Divide插件的笔记里面分析过插件链,waf插件是插件链上排在sign插件后面的第二个插件。 WafPlugin也继承自AbstractSoulPlugin,但在AbstractSoulPlugin的execute方法里面对waf插件与其他插件如divide插件稍有不同。 divide插件在AbstractSoulPlugin的execute方法里面的处理过程是: 判断内存缓存中是否有插件数据,没有则执行下一个插件 判断插件数据中是否启用的标志位是否为true,否则执行下一个插件 插件数据

nemointellego的专栏 592

soul 源码分析 —— 插件解析之选择器

选择器定义 选择器是什么? soul选择器就是网关的过滤器,所有的网关请求都会经过选择器功能就行路由断言,所有选择器匹配规则都通过后,才能进行下一步的请求。 soul网关还有一个规则的概念,规则也是实施网关请求的过滤。匹配规则的设置基本一样。 那选择器和规则有什么不同? 选择器可以看成是粗粒度的路由断言,比如:/http/** 规则可以看成是进一步的路由断言,比如:/http/order/findById 可以理解为:选择器相当于是对流量的第一次筛选,规则就是最终的筛选。 选择器和规则都必须满足,网关请求才

cj271230的博客 528

Soul网关源码分析-0期(预热)

启动 soul-admin成功后, 启动soul-bootstrap soul-admin下打印几行信息 2021-01-13 23:00:42.047 INFO 16544 --- [0.0-9095-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2021-01-13 23:00:42.047 INFO 16544 --- [0.0

zm469568595的博客 1842

LeetCode117-填充每个节点的下一个右侧节点指针 II

LeetCode117-填充每个节点的下一个右侧节点指针 II 题目 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被设置为 NULL。 解法 class Solution { public Node connect(Node

viva_la__vida的博客 362

Soul源码分析–soul-admin入门

Soul源码分析–soul-admin运行使用原理介绍 运行 上一篇介绍过 soul-admin 启动有两种数据库选择,一种是MySQL, 一种是内存H2数据库。如果本地有MySQL,建议还是使用MySQL数据库,毕竟等下我们还是需要看看 soul-admin 启动时创建的表结构。 启动后我们选择"插件列表"->“divide”,如果没有启动别的服务,这个菜单里面应该是空的。 这里我们还要启动 Soul 网关主要的服务 soul-bootstrap,如果不想自己写业务服务来测试,需要把 soul-e

yutanbo123的博客 752

Linux 集群介绍及配置(网关+主调度器+备份调度器+2web服务器+NFS服务器)(双机热备+负载均衡+共享目录+DNAT)

产生背景 近年来服务器的性能有了大幅度的提升,服务器作为处理关键性事物的业务主机已随处可见。对于要求有高可用性和高安全性的系统,如金融、邮电、交通、电力、证券等行业,用户对系统安全性能提出了更高的要求,这时就需要一套能让系统永不停机的解决方案,集群技术应运而生。 集群技术是实现系统高可用性、可靠性、稳定性、安全性并需要快速处理能力、大容量存储及系统的可管理性的重要手段。 服务器集群:一组相互...

LKmnbZ's Blog 780

Soul 极简入门(国产微服务网关)

1. 概述 Soul是基于WebFlux实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。 作者:我希望能够有一样东西像灵魂一样,保护您的微服务。在参考了 Kong、Spring Cloud Gateway等优秀的网关后,站在巨人的肩膀上,Soul 由此诞生! 作者是艿艿的大表弟,胖友信么?! 目前 Soul 功能列表如下: 支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。 Soul 是极其少支持 Dubbo 的 AP...

weixin_42073629的博客 4935

OpenClaw工程实战

OpenClaw工程实战总览摘要 OpenClaw是一款面向AI Agent开发的全栈式解决方案,采用四层模块化架构(基础设施层、核心引擎层、生态组件层和应用适配层)。文档全面覆盖从环境配置到企业落地的九大技术板块,包含MCP协议实战、多Agent编排、商业级项目实践等核心内容。系统支持全场景部署(本地/云端/边缘设备),集成3286个市场技能,通过Gateway网关实现智能路由与多模型调度。典型应用场景包括企业数字化、开发者提效和全渠道智能助手。

lza_csdn2019的博客 628

soul网关学习六之soul-admin使用websocket同步数据到网关

soul-admin 可以使用websocket与soul-bootstrap进行通信 soul-bootstrap中配置websokcet的地址 1.配置加载 在项目启动时会在 WebsocketSyncDataConfiguration 中注册 websocketConfig websocket 配置 pluginSubscriber 用于广播plugin的改动 metaSubscribers 用于广播 metaData的改动 authSubscribers 用于改动 auth的改动 看下 Webs

Bo_java的博客 309

electron打包客户端在rk3588上支持h265硬解

前言我们的客户端程序是用electron打包的前端程序,其在rk3588主机上的linux环境运行。之前使用客户端查看h264编码的视频直播是没有问题的,但视频源更改为h265编码后就不能查看了,奇怪的是打包的windows客户端则可以正常查看,另外rk3588主机上的chromium浏览器也是支持播放h265编码的视频的,并且是硬件解码。

lxkj_2024的博客 2006

【CV论文精读】【协同感知综述】Collaborative Perception for Autonomous Driving :Current Status and Future Trend

感知是自动驾驶系统的关键模块之一,近年来取得了很大进展。然而,单个车辆的有限能力导致感知性能提高的瓶颈。为了突破个体感知的局限,协作感知被提出,它使车辆能够共享信息来感知视线和视野之外的环境。本文综述了有前途的协作感知技术的相关工作,包括介绍了基本概念,概括了协作模式,总结了协作感知的关键要素和应用。最后,我们讨论了这一研究领域面临的挑战和问题,并给出了一些潜在的进一步方向。

weixin_44184852的博客 4689

soul网关系列(八):soul-admin与网关数据同步之zookeeper

本篇文章主要介绍soul网关admin与bootstrap数据同步的另外三种方式(zookeeper/http长连接/nacos)

坚持、死磕、重复 602

EPICS Phoebus手册1

EPICS客户端phoebus 手册

yuyuyuliang00的博客 3950

Soul高性能服务网关搭建指南

<?xml version="1.0" encoding="UTF-8"?> <!-- ~ Licensed to the Apache Software Foundation (ASF) under one or more ~ contributor license agreements. See the NOTICE file distributed with ~ this work for additional information regarding copyri.

一个天秤座的架构师 2万+

AD18 PCB模块的Copy

在PCB布局时,时常会将元器件先分模块进行排布,最后才会进行总体的布局,在局部布局的时候,想要移动一个模块的器件总是很麻烦,需要选中全部才能进行移动,有些时候还有选漏的情况,所以会将局部布局的模块把它看做一个整体进行移动,效果如下,元件,布线,铜皮,过孔以及元件编号的位置摆放都和源模块一模一样。4、再选中需要复用的模块内的元件,按照第3步的顺序排序,粘贴刚刚复制的Channel Offset参数。在PCB布局时,有多个模块原理图是一模一样的情况,我们可以只画一个模块,之后灵活应用模块,进行copy。

qq_53859658的博客 3237

智能车竞赛循迹控制:基于状态机的直道、弯道、十字路口处理策略

在嵌入式系统与自动控制领域,PID控制算法是实现精确运动控制的基础。其原理是通过比例、积分、微分三个环节的线性组合,对系统误差进行实时校正,从而实现对目标值的快速、稳定跟踪。这项技术的核心价值在于为各类自动控制系统提供了稳定、可靠且易于实现的解决方案,广泛应用于机器人、无人机、工业自动化等场景。在智能车循迹这类特定应用中,赛道环境复杂多变,单一的PID控制器难以应对直道、弯道、十字路口等不同赛道元素的控制需求。此时,有限状态机(FSM)作为一种高效的**决策框架**,能够根据实时感知的赛道特征(如边线曲率、

weixin_34034261的博客 282

Soul网关(十)---- 多soul-admin与多soul-bootstrap的数据同步

演示多个 soul-admin 和 多个 soul-bootstrap 数据同步 分别在 9095 端口、9096 端口启动 soul-admin; 分别在 9197 端口、9198端口启动 soul-bootstrap; 在其中一个 soul-admin 改动divide选择器其中的一个rule: 将精确匹配URL 由 /http/order/findById 改为 /http/order/findById111 改完之后可以看到另外一个 soul-admin 中此条规则也同步更新了。 ========

Loving you 785

YOLOv13优化Faster_Block:卷积(Partial Convolution)、多层感知机(MLP)结构和残差连接

Faster_Block 代表了现代深度学习中效率与性能平衡的一个典型案例。它通过部分卷积技术巧妙地减少了计算开销,同时通过精心设计的架构保持了强大的特征学习能力。这种设计思想对于移动端部署、实时应用和大规模模型训练都具有重要意义。 未来的发展方向可能包括更智能的动态分割策略、与新兴硬件的深度适配,以及与其他先进技术(如自注意力机制、神经架构搜索等)的结合。Faster_Block 的成功展示了在深度学习领域,创新往往来自于对问题本质的深刻理解和巧妙的工程实现。

FJN110的博客 427

原始的接收前端数据方法

@PostMapping("test") @ApiOperation("测试") public String Test(HttpServletRequest request){ //数据在reqest中 String str= testService.test(retquest); return str; } public String test(HttpServletRequest request) { net.sf.json.JSONObjec

等哈哆 267

Claude Code 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例展示如何使用 Claude Code 配合 Python 的 `ezdxf` 库,从零开始生成专业级 CAD 机械图纸。我们将绘制一个完整的法兰盘零件图,包含主视图、俯视图、标注尺寸、粗糙度标记和标题栏,最终生成标准 DXF 文件,可直接在 AutoCAD 或 FreeCAD 中打开编辑。

yueyeguzhuo的专栏 892

Arduino、ESP32驱动BMP390L数字大气压传感器(压力传感器)

BMP390L是一款博世新研发的工业级专用数字气压传感器,具有极高的温度稳定性、低漂移、低功耗。

不脱发的程序猿 2006

soul网关系列(九):soul-admin与网关数据同步之http长轮询-admin端

soul-admin与网关数据同步之http长轮询-admin端

坚持、死磕、重复 403

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

集群系统概述

 集群系统概述1引言第一台计算机问世已经半个世纪了,在这期间计算机技术经历了五次更新换代。更新换代的标志主要有两个:一个是计算机的器件,另一个是系统体系结构。从第一代到第五代计算机,器件发生了根本的变化:从电子管、晶体管发展到集成电路,而集成电路又经小规模、中规模、大规模、非常大规模等阶段发展到超大规模阶段。系统体系结构的不断改进,许多重要的概念的不断提出并且得

linfengfeiye的专栏 8519

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Gateway-集群和动态网关

网关怎么实现集群:使用nginx实现。 基于nginx部署gateway集群 1、将网关项目多个部署启动 例如: 网关1 127.0.0.1:81 网关1 127.0.0.1:82 2、配置nginx,增加下面配置,实现请求转发 3、各个微服务如何知道是哪个网关请求的 在网关的过滤器中给请求头添加可以区别网关的信息。 动态Gateway 动态网关:任何配置都实现不用重启网关服务器都可以及时刷新。 实现思路: 1、分布式配置中心,阅读性差。 2、基于数据库表结构设计。 gateway提供对应的接口:1、直接

weixin_44044929的博客 3842

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用Istio进行多集群部署管理(2):单控制平面Gateway连接拓扑

单控制平面拓扑下,多个 Kubernetes 集群共同使用在其中一个集群上运行的单个 Istio 控制平面。控制平面的 Pilot 管理本地和远程集群上的服务,并为所有集群配置 Envoy Sidecar 代理。 集群感知的服务路由 Istio 1.1 中引入了集群感知的服务路由能力,在单一控制平面拓扑配置下,使用 Istio 的 Split-horizon EDS(水平分割端点发现服务)功能可以通过其入口网关将服务请求路由到其他集群。基于请求源的位置,Istio 能够将请求路由到不同的端点。 在该配

阿里云云栖号 1587

Soul网关源码解析(番外1):soul-admin启动流程

Soul网关源码解析(番外1):soul-admin启动流程 Soul网关源码解析(番外1):soul-admin启动流程Soul-admin启动流程流程图小结参考 Soul-admin启动流程 首先load并执行sql脚本 #LocalDataSourceLoader 实现 InstantiationAwareBeanPostProcessor接口 public Object postProcessAfterInitialization(@NonNull final Object bean, f

S_powerStone的博客 440
上一篇: 【Soul源码阅读】15.soul-admin 与 soul-bootstrap 同步机制之 nacos 解析(下)
下一篇: 【Soul源码阅读】17.插件之 hystrix
hellboy0621
博客等级 码龄9年 61粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值