如何从 2 个不同的 spring 引导应用程序访问同一个数据库
How to access the same DB from 2 different spring boot applications
我有 2 个 spring 微服务应用程序并希望它们访问同一个数据库。但是当我 运行 它们时,两个应用程序都会创建不同的数据库。 Application.yml 个文件:
服务 1:
server.port: 8002
logging:
level:
org:
springframework:
jdbc:
core:
DEBUG
spring:
application:
name: movie
datasource:
url: jdbc:h2:mem:movie_service
driver-class-name: org.h2.Driver
h2:
console:
enabled: true
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_URI:http://localhost:8001/eureka}
registryFetchIntervalSeconds: 1
instance:
leaseRenewalIntervalInSeconds: 1
#preferIpAddress: true
eureka.instance.prefer-ip-address: false
服务 2:
server.port: 8003
spring:
application.name: client
datasource:
url: jdbc:h2:mem:movie_service
driver-class-name: org.h2.Driver
h2:
console:
enabled: true
logging:
level:
org:
springframework:
jdbc:
core:
DEBUG
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_URI:http://localhost:8001/eureka}
registryFetchIntervalSeconds: 1
instance:
leaseRenewalIntervalInSeconds: 1
#preferIpAddress: true
eureka.instance.prefer-ip-address: false
我认为通过提供相同的 URL,一个服务将创建数据库,而另一个将使用它。
H2是一个内存数据库,使用允许多个用户的数据库。
更新:
其实我也不是很准确。 H2 有服务器模式,但你是运行 应用程序中嵌入的数据库。
您需要将数据库作为一项服务,然后您可以从您的微服务应用程序连接到该 运行 数据库。
附带说明一下,让不同的微服务访问同一个数据库是一种常见的反模式。
数据库——如果完全共享的话——应该只由一个微服务组件的实例共享。
我有 2 个 spring 微服务应用程序并希望它们访问同一个数据库。但是当我 运行 它们时,两个应用程序都会创建不同的数据库。 Application.yml 个文件:
服务 1:
server.port: 8002
logging:
level:
org:
springframework:
jdbc:
core:
DEBUG
spring:
application:
name: movie
datasource:
url: jdbc:h2:mem:movie_service
driver-class-name: org.h2.Driver
h2:
console:
enabled: true
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_URI:http://localhost:8001/eureka}
registryFetchIntervalSeconds: 1
instance:
leaseRenewalIntervalInSeconds: 1
#preferIpAddress: true
eureka.instance.prefer-ip-address: false
服务 2:
server.port: 8003
spring:
application.name: client
datasource:
url: jdbc:h2:mem:movie_service
driver-class-name: org.h2.Driver
h2:
console:
enabled: true
logging:
level:
org:
springframework:
jdbc:
core:
DEBUG
eureka:
client:
serviceUrl:
defaultZone: ${EUREKA_URI:http://localhost:8001/eureka}
registryFetchIntervalSeconds: 1
instance:
leaseRenewalIntervalInSeconds: 1
#preferIpAddress: true
eureka.instance.prefer-ip-address: false
我认为通过提供相同的 URL,一个服务将创建数据库,而另一个将使用它。
H2是一个内存数据库,使用允许多个用户的数据库。
更新:
其实我也不是很准确。 H2 有服务器模式,但你是运行 应用程序中嵌入的数据库。
您需要将数据库作为一项服务,然后您可以从您的微服务应用程序连接到该 运行 数据库。
附带说明一下,让不同的微服务访问同一个数据库是一种常见的反模式。
数据库——如果完全共享的话——应该只由一个微服务组件的实例共享。