mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-09 08:20:31 +08:00
feat(elevator): 部署与 V1 对齐 Consul,Ribbon 固定 ninca-crk-std
- bootstrap:discovery.enabled=false、注册字段与 access-control,与 V1 fat-jar 一致(宿主机仍 192.168.3.12) - application:v2-maven 使用 elevator-app、tomcat UTF-8;注释与静态 Ribbon 说明 - 新增 NincaCrkStdRibbonConfiguration + @RibbonClient,避免 Edgware 下 Feign 无可用实例 - deploy README 更新 Consul / ninca-crk-std 说明 Made-with: Cursor Former-commit-id: 0a6ac9552cb18403816120113c56f13876a5a11f
This commit is contained in:
+5
@@ -1,15 +1,20 @@
|
|||||||
package cn.cloudwalk.elevator;
|
package cn.cloudwalk.elevator;
|
||||||
|
|
||||||
import cn.cloudwalk.event.EnableCloudwalkEvent;
|
import cn.cloudwalk.event.EnableCloudwalkEvent;
|
||||||
|
import cn.cloudwalk.ribbon.NincaCrkStdRibbonConfiguration;
|
||||||
import com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration;
|
import com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration;
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.cache.annotation.EnableCaching;
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
import org.springframework.cloud.netflix.feign.EnableFeignClients;
|
import org.springframework.cloud.netflix.feign.EnableFeignClients;
|
||||||
|
import org.springframework.cloud.netflix.ribbon.RibbonClient;
|
||||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||||
import org.springframework.scheduling.annotation.EnableAsync;
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
|
|
||||||
|
/** Ribbon 名称需与 {@code feign.ninca-crk-std.name} 及 Feign Client 一致。 */
|
||||||
|
@RibbonClient(name = "${feign.ninca-crk-std.name:ninca-crk-std}",
|
||||||
|
configuration = NincaCrkStdRibbonConfiguration.class)
|
||||||
@EnableCloudwalkEvent
|
@EnableCloudwalkEvent
|
||||||
@EnableAsync
|
@EnableAsync
|
||||||
@EnableCaching
|
@EnableCaching
|
||||||
|
|||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
package cn.cloudwalk.ribbon;
|
||||||
|
|
||||||
|
import com.netflix.client.config.IClientConfig;
|
||||||
|
import com.netflix.loadbalancer.ConfigurationBasedServerList;
|
||||||
|
import com.netflix.loadbalancer.Server;
|
||||||
|
import com.netflix.loadbalancer.ServerList;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为 Feign 客户端 {@code ninca-crk-std} 强制使用配置型 ServerList,避免 Consul 发现返回空列表时覆盖
|
||||||
|
* {@code ninca-crk-std.ribbon.listOfServers}(Edgware 下常见「Load balancer does not have available server」)。
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class NincaCrkStdRibbonConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ServerList<Server> ribbonServerList(IClientConfig config) {
|
||||||
|
ConfigurationBasedServerList list = new ConfigurationBasedServerList();
|
||||||
|
list.initWithNiwsConfig(config);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,10 +39,14 @@ cd v2-maven && ./run.sh
|
|||||||
|
|
||||||
## Consul(`192.168.3.12` Docker)
|
## Consul(`192.168.3.12` Docker)
|
||||||
|
|
||||||
本仓库在 **`v1-legacy/bootstrap.properties`**、**`v2-maven/bootstrap.properties`** 中写入:
|
本仓库在 **`v1-legacy/bootstrap.properties`**、**`v2-maven/bootstrap.properties`** 中写入,并与 **V1 运行包 `bootstrap.properties` 中 Consul 段**对齐:
|
||||||
|
|
||||||
- `spring.cloud.consul.host=192.168.3.12`
|
- `spring.cloud.consul.host=192.168.3.12`
|
||||||
- `spring.cloud.consul.port=8500`
|
- `spring.cloud.consul.port=8500`
|
||||||
|
- `spring.cloud.consul.enabled=true`
|
||||||
|
- `spring.cloud.consul.discovery.register=true`
|
||||||
|
- **`spring.cloud.consul.discovery.enabled=false`**(与 V1 一致:不作为 Consul **客户端**做服务发现)
|
||||||
|
- `spring.profiles.active=access-control`(与 V1 一致)
|
||||||
|
|
||||||
用于覆盖 fat-jar 内 **`10.128.161.95:8500`**,与 **`deploy/consul-docker`**(`hashicorp/consul:1.22`)对齐。在同一目录执行 `./run.sh` 时,Spring Cloud 会加载上述 **`bootstrap.properties`**。
|
用于覆盖 fat-jar 内 **`10.128.161.95:8500`**,与 **`deploy/consul-docker`**(`hashicorp/consul:1.22`)对齐。在同一目录执行 `./run.sh` 时,Spring Cloud 会加载上述 **`bootstrap.properties`**。
|
||||||
|
|
||||||
@@ -50,11 +54,9 @@ cd v2-maven && ./run.sh
|
|||||||
|
|
||||||
**说明**:jar 内 **Dubbo / ZooKeeper** 仍可能指向旧 IP(如 `10.128.161.95:2181`);若启动报 ZK 连接失败,需在 **`application.properties`** 中另行改 Dubbo 注册中心(本次仅处理 Consul)。
|
**说明**:jar 内 **Dubbo / ZooKeeper** 仍可能指向旧 IP(如 `10.128.161.95:2181`);若启动报 ZK 连接失败,需在 **`application.properties`** 中另行改 Dubbo 注册中心(本次仅处理 Consul)。
|
||||||
|
|
||||||
### Feign `ninca-crk-std`(Ribbon / Consul)
|
### Feign `ninca-crk-std`(Ribbon)
|
||||||
|
|
||||||
若日志出现 **`Load balancer does not have available server for client: ninca-crk-std`**,表示 **Consul 里没有名为 `ninca-crk-std` 的注册实例**,而 Feign 默认用 **Consul 服务发现**拉实例列表。
|
在 **`spring.cloud.consul.discovery.enabled=false`**(与 V1 对齐)时,不从 Consul 拉 **`ninca-crk-std`** 实例,需在 **`application.properties`** 中配置 **Ribbon 静态列表**(`ninca-crk-std.ribbon.*` 与 `ninca-crk-std.ip`),按环境改成可访问的 **`主机:端口`**。Maven 构建的 `cw-elevator-application-2.0.0.jar` 另含 `NincaCrkStdRibbonConfiguration`,避免 Edgware 下静态列表被忽略。
|
||||||
|
|
||||||
**做法**:① 在目标环境启动 **`ninca-crk-std`(访客标准服务)** 并注册到同一 Consul;或 ② 在 **`application.properties`** 中使用 **Ribbon 静态列表**(已增加 `ninca-crk-std.ribbon.NIWSServerListClassName` 与 `listOfServers`,默认与 `ninca-crk-std.ip` 一致),把 **`listOfServers`** 改成你实际可访问的 **`主机:端口`**。
|
|
||||||
|
|
||||||
## Redis 与 `SPRING_APPLICATION_JSON`
|
## Redis 与 `SPRING_APPLICATION_JSON`
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# deploy/v1-legacy \uFF1A\u5386\u53F2\u5305 cw-elevator-application-V1.0.0.20211103.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
# deploy/v1-legacy \uFF1A\u5386\u53F2\u5305 cw-elevator-application-V1.0.0.20211103.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
||||||
server.port=18080
|
server.port=18080
|
||||||
|
server.tomcat.uri-encoding=UTF-8
|
||||||
spring.application.name=elevator-app
|
spring.application.name=elevator-app
|
||||||
# OpenFeign 2.1.x\uFF1A\u591A\u4E2A @FeignClient \u5171\u540C name \u5360\u4F4D\u7B26\u65F6\u91CD\u590D\u6CE8\u518C FeignClientSpecification\uFF0C\u4E0E Spring \u9519\u8BEF\u63D0\u793A\u4E00\u81F4
|
# OpenFeign 2.1.x\uFF1A\u591A\u4E2A @FeignClient \u5171\u540C name \u5360\u4F4D\u7B26\u65F6\u91CD\u590D\u6CE8\u518C FeignClientSpecification\uFF0C\u4E0E Spring \u9519\u8BEF\u63D0\u793A\u4E00\u81F4
|
||||||
spring.main.allow-bean-definition-overriding=true
|
spring.main.allow-bean-definition-overriding=true
|
||||||
@@ -80,8 +81,7 @@ feign.device.name=cwos-portal
|
|||||||
feign.resource.name=cwos-portal
|
feign.resource.name=cwos-portal
|
||||||
feign.cwos-portal.name=cwos-portal
|
feign.cwos-portal.name=cwos-portal
|
||||||
feign.ninca-crk-std.name=ninca-crk-std
|
feign.ninca-crk-std.name=ninca-crk-std
|
||||||
# Feign/Ribbon 默认从 Consul 按服务名发现 ninca-crk-std;Consul 无注册时出现「Load balancer does not have available server」。
|
# bootstrap \u5DF2\u4E0E V1 fat-jar \u5185\u7F6E\uFF1AConsul \u53D1\u73B0\u5173\u95ED\u3002\u9759\u6001 Ribbon \u4E0E ninca-crk-std.ip \u6309\u73AF\u5883\u4E00\u81F4\u4FEE\u6539\u3002
|
||||||
# 以下两行改为静态 ServerList(与下行 ninca-crk-std.ip 同目标时保持一致;若访客服务只部署在其它 IP/端口请一起修改):
|
|
||||||
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
||||||
ninca-crk-std.ribbon.listOfServers=10.128.161.95:16106
|
ninca-crk-std.ribbon.listOfServers=10.128.161.95:16106
|
||||||
feign.davinci-portal.name=cwos-portal
|
feign.davinci-portal.name=cwos-portal
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
# 与 JAR 同目录,Spring Cloud 会加载本文件,覆盖 jar 内 bootstrap.properties 中的旧 Consul 地址。
|
# 与 JAR 同目录,覆盖 jar 内 bootstrap;Consul 段与 V1 运行包对齐。
|
||||||
# 对应 192.168.3.12 上 Docker: hashicorp/consul:1.22(8500)
|
# Dubbo/ZooKeeper 仅 V1 fat-jar 内嵌使用;若启动报 ZK 相关错误再于外置 application 中处理。
|
||||||
spring.cloud.consul.host=192.168.3.12
|
spring.cloud.consul.host=192.168.3.12
|
||||||
spring.cloud.consul.port=8500
|
spring.cloud.consul.port=8500
|
||||||
|
spring.cloud.consul.enabled=true
|
||||||
|
spring.cloud.consul.discovery.register=true
|
||||||
|
spring.cloud.consul.discovery.enabled=false
|
||||||
|
spring.cloud.consul.discovery.prefer-ip-address=true
|
||||||
|
spring.cloud.consul.discovery.instance-id=${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}
|
||||||
|
spring.cloud.consul.discovery.ip-address=${spring.cloud.client.ipAddress}
|
||||||
|
spring.cloud.consul.discovery.deregister=false
|
||||||
|
|
||||||
|
spring.profiles.active=access-control
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# deploy/v2-maven \uFF1Amaven \u6784\u5EFA cw-elevator-application-2.0.0.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
# deploy/v2-maven \uFF1Amaven \u6784\u5EFA cw-elevator-application-2.0.0.jar\uFF08\u540C\u76EE\u5F55\u542F\u52A8\uFF09
|
||||||
server.port=18081
|
server.port=18081
|
||||||
spring.application.name=cw-elevator-application
|
server.tomcat.uri-encoding=UTF-8
|
||||||
|
spring.application.name=elevator-app
|
||||||
# Boot 1.5 \u65E0 spring.main.allow-bean-definition-overriding\uFF1B\u82E5\u91CD\u590D Bean \u9700\u5728\u4EE3\u7801\u4FA7\u6D88\u6B67\u4E49\u6216\u5347\u7EA7 Spring Boot
|
# Boot 1.5 \u65E0 spring.main.allow-bean-definition-overriding\uFF1B\u82E5\u91CD\u590D Bean \u9700\u5728\u4EE3\u7801\u4FA7\u6D88\u6B67\u4E49\u6216\u5347\u7EA7 Spring Boot
|
||||||
|
|
||||||
|
|
||||||
@@ -80,7 +81,8 @@ feign.device.name=cwos-portal
|
|||||||
feign.resource.name=cwos-portal
|
feign.resource.name=cwos-portal
|
||||||
feign.cwos-portal.name=cwos-portal
|
feign.cwos-portal.name=cwos-portal
|
||||||
feign.ninca-crk-std.name=ninca-crk-std
|
feign.ninca-crk-std.name=ninca-crk-std
|
||||||
# 见 v1-legacy 同段注释:Consul 无 ninca-crk-std 时用静态 Ribbon 列表。
|
# bootstrap \u5DF2\u4E0E V1 \u5BF9\u9F50 spring.cloud.consul.discovery.enabled=false\uFF08\u4E0D\u4ECE Consul \u62C9\u5B9E\u4F8B\uFF09\u3002
|
||||||
|
# Feign \u8D70 Ribbon \u65F6\u4ECD\u9700\u9759\u6001\u5B9E\u4F8B\uFF08V1 \u8FD0\u884C\u5305\u672A\u5199\u6B64\u6BB5\uFF0CV2 \u8865\u9F50\u5E76\u914D NincaCrkStdRibbonConfiguration\uFF09\u3002\u4E0E ninca-crk-std.ip \u4E00\u540C\u6309\u73AF\u5883\u6539\u3002
|
||||||
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
ninca-crk-std.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
|
||||||
ninca-crk-std.ribbon.listOfServers=10.128.161.95:16106
|
ninca-crk-std.ribbon.listOfServers=10.128.161.95:16106
|
||||||
feign.davinci-portal.name=cwos-portal
|
feign.davinci-portal.name=cwos-portal
|
||||||
|
|||||||
@@ -1,3 +1,14 @@
|
|||||||
# 覆盖 fat-jar 内嵌 Consul 地址,指向局域网 Docker Consul。
|
# 与 V1 运行包 cw-elevator-application-V1.0.0.20211103/bootstrap.properties 中 Consul 段对齐。
|
||||||
|
# Dubbo/ZooKeeper:V1 fat-jar 内含 dubbo 注册地址,本 Maven V2 工程未使用 Dubbo,故不写 zookeeper 段。
|
||||||
|
# Consul 宿主机按本环境(局域网 Docker)覆盖。
|
||||||
spring.cloud.consul.host=192.168.3.12
|
spring.cloud.consul.host=192.168.3.12
|
||||||
spring.cloud.consul.port=8500
|
spring.cloud.consul.port=8500
|
||||||
|
spring.cloud.consul.enabled=true
|
||||||
|
spring.cloud.consul.discovery.register=true
|
||||||
|
spring.cloud.consul.discovery.enabled=false
|
||||||
|
spring.cloud.consul.discovery.prefer-ip-address=true
|
||||||
|
spring.cloud.consul.discovery.instance-id=${spring.application.name}-${spring.cloud.client.ipAddress}:${server.port}
|
||||||
|
spring.cloud.consul.discovery.ip-address=${spring.cloud.client.ipAddress}
|
||||||
|
spring.cloud.consul.discovery.deregister=false
|
||||||
|
|
||||||
|
spring.profiles.active=access-control
|
||||||
|
|||||||
Reference in New Issue
Block a user