是否存在任何组件可以监视服务器、资源或其他 Docker 实例的使用情况,并在需要更多资源时启动新的 Docker 容器?
Docker 容器可能会也可能不会部署在同一台服务器上。
例如 :
1)当消息队列增长太快时,侦听该队列的其他 Docker 容器将启动以帮助消费消息。
2)当通过负载均衡器向服务器发出太多请求时,会运行其他docker实例。
我想在项目中使用Spring Cloud Bus动态更新配置。我们的环境中已经有Apache ActiveMQ。有可能使用ActiveMQ代替RabbitMQ作为代理吗?它们都是AMQP服务器的一种。
我在pom.xml中这样设置依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
它看起来像一个标准的AMQP启动器,不限于RabbitMQ。但是,以下错误日志会在配置服务器启动时提示:
org.springframework.amqp.AmqpIOException: java.io.IOException
at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:65)
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:218)
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:476)
at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$1.createConnection(ConnectionFactoryUtils.java:80)
at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:130)
at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:67)
at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:439)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1083)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: null
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:350)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:648)
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:205)
... 7 common frames omitted
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:37)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:367)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:293)
... 9 common frames omitted
Caused by: com.rabbitmq.client.MalformedFrameException: AMQP protocol version mismatch; we are version 0-9-1, server sent …Run Code Online (Sandbox Code Playgroud) 我正在尝试在docker容器上旋转Consul服务器,并将其用作我的SpringBoot云应用程序的配置服务器。为此,我想在Consul中有一些预配置的数据(键值对)。
我当前在docker-compose.yml中的配置是:
consul:
image: "progrium/consul:latest"
container_name: "consul"
ports:
- '9330:8300'
- '9400:8400'
- '9500:8500'
- '9600:53'
command: "-server -bootstrap -ui-dir /ui"
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以预填充键值对?
在我的 springboot 应用程序中,我在使用 Orbitz consul 客户端和 spring-consul 时生成了以下日志。该日志是在执行使用 Orbitz 的 consul 客户端的周期任务(每 2 分钟一次)时生成的。我想关闭以下日志,因为它们不必要地填充日志文件。
AutoConfigurationReportLoggingInitializer [pool-45-thread-1] [DEBUG] []
=========================
AUTO-CONFIGURATION REPORT
=========================
Positive matches:
-----------------
ConfigurationPropertiesRebinderAutoConfiguration matched
ConfigurationPropertiesRebinderAutoConfiguration#configurationPropertiesBeans matched
ConfigurationPropertiesRebinderAutoConfiguration#configurationPropertiesBeans matched
Negative matches:
-----------------
ConsulAutoConfiguration.RetryConfiguration did not match
EncryptionBootstrapConfiguration.RsaEncryptionConfiguration did not match
- required @ConditionalOnClass classes not found: org.springframework.security.rsa.crypto.RsaSecretEncryptor (OnClassCondition)
EncryptionBootstrapConfiguration.VanillaEncryptionConfiguration did not match
- @ConditionalOnMissing classes not found: org.springframework.security.rsa.crypto.RsaSecretEncryptor (OnClassCondition)
- Keystore nor key found in Environment (EncryptionBootstrapConfiguration.KeyCondition)
Exclusions:
-----------
None
Unconditional classes:
----------------------
None
Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring-boot 或 Spring-Cloud Framework 来开发 Web 应用程序。系统主要处理来自客户端的HTTP Restful请求,然后将其保存到MySQL数据库中。
但我计划让它更具可扩展性。它应该能够启动每个服务的更多实例,并使系统可以处理更多传入请求。
但我不确定我这样做是否正确,有谁能来帮我检查一下我目前的做法是否合理,或者提出我的做法是否存在潜在的风险。
我正在做的是:
服务A在其控制器中接收请求,然后将其异步写入RocketMQ。RocketMQ用于削峰。
然后服务B订阅服务A写入的RocketMQ主题,并将消息以列表的形式缓存到Redis中。
服务 C 启动一个守护线程检查 Redis 中的消息编号。如果缓存列表大小达到一定值,它将拉取所有消息并将它们保存到MySQL中,然后刷新Redis中的缓存。
我正在尝试将一些服务从一个 Spring Boot 项目迁移到另一个项目,当然存在很多问题,但除了我陷入困境之外,所有问题都已解决
更正应用程序的类路径,使其包含类 org.springframework.boot.sql.init.dependency.AnnotationDependsOnDatabaseInitializationDetector 和 org.springframework.beans.factory.config.ConfigurableListableBeanFactory 的兼容版本
这是我的 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.5</version>
<relativePath/> <!– lookup parent from repository –>
</parent>-->
<groupId>com.hpw</groupId>
<artifactId>box</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>box</name>
<description>Box</description>
<properties>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.6.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.13</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.6.4</version> …Run Code Online (Sandbox Code Playgroud) 据我了解,当数据库事务跨越微服务时,我们可以通过发布事件来使用消息代理(kafka,RabbitMQ等)来解决此问题,以便订阅者微服务可以通过侦听这些事件来更新其数据库。
如果发生异常,我们可以发送失败事件,以便订阅服务器服务可以更新其状态。
这还不够吗?这种方法有什么问题?
为什么以及何时需要事件来源?
我们真的需要事件源吗?
我有一个使用fixedDelay或配置的 spring 调度程序任务cron,并且该应用程序的多个实例在多个 JVM 上运行。
默认行为是所有实例都在执行调度程序任务。
有没有一种方法可以控制这种行为,以便只有一个实例会执行调度程序任务,而其他实例则不会。
如果您知道任何方法,请告诉我。
谢谢
我正在运行 Spring Cloud Brixton SR3 - Spring Netflix Eureka、Spring Cloud Config 和 Discovery Client 应用程序。当客户端应用程序配置为
eureka.client.healthcheck.enabled=true 和 spring.cloud.config.discovery.enabled=true
该应用程序启动时在 Eureka 注册,状态为“UNKNOWN”,永远不会更改为“UP”。如果这些标志中的任何一个设置为 false,则应用程序启动时注册为“UP”。
当两个标志都启用/为真时,我会看到这一系列的日志记录:
2016-07-13 17:41:38.144 INFO 13180 --- [ main] com.netflix.discovery.DiscoveryClient : Saw local status change event StatusChangeEvent [timestamp=1468456898144, current=UP, previous=STARTING]
2016-07-13 17:41:38.144 DEBUG 13180 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator : Executing on-demand update of local InstanceInfo
2016-07-13 17:41:38.144 DEBUG 13180 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator : Canceling the latest scheduled update, it will be rescheduled at the end of on demand update
2016-07-13 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用弹簧和弹簧靴创建弹簧云微服务.我开发了一个Spring云Eureka服务器作为一个独立的弹簧启动项目.并为Zuul服务器创建了用于网关代理和路由的Spring启动项目.
任何人都可以帮助我澄清我对容器化和云部署我的Spring云微服务的困惑吗?
spring-boot ×5
docker ×3
spring ×3
consul ×1
cqrs ×1
java ×1
logging ×1
maven-3 ×1
maven-plugin ×1
performance ×1
pom.xml ×1
rocketmq ×1
spring-batch ×1
spring-cloud ×1