Soul 学习笔记之 soul集群配置(十)

系列目录地址

配置使用统一数据库

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/soul?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

websocket方式

配置admin和bootstrap端口一一对应

soul-admin

server:
  port: 9095

soul-bootstrap

server:
  port: 9195
soul:
  sync:
    websocket :
     // 对应admin的数据同步端口
     urls: ws://localhost:9095/websocket

配置方式一:一个admin对应一个bootstrap

  • 分别打包soul-admin,soul-bootstrap,配置多个一一配对关系: 9095-9195,9096-9196
  • 打包soul-example-http,注册到admin:9095.相关配置
  • 启动admin:9095 bootstrap:9195
     java -jar soul-cluster-1/admin/soul-admin.jar --spring.config.location=soul-cluster-1/admin/application.yml
     java -jar soul-cluster-1/bootstrap/soul-bootstrap.jar --spring.config.location=soul-cluster-1/bootstrap/application-local.yml
    
  • 启动admin:9096 bootstrap:9196
     java -jar soul-cluster-2/admin/soul-admin.jar --spring.config.location=soul-cluster-2/admin/application.yml
     java -jar soul-cluster-2/bootstrap/soul-bootstrap.jar --spring.config.location=soul-cluster-2/bootstrap/application-local.yml
    
  • 配置application.yml注册到 soul.http.adminUrl: http://localhost:9095
    java -jar soul-example-http/soul-test-http.jar --spring.config.location=soul-example-http/application.yml
    
  • 启动完成
    启动所有
  • admin注册结果, soul-example-http只注册到admin:9095。观察结果发现两个admin都有http服务,因为他们共用了一个数据库。
    admin-9095
    soul-9096
  • 访问结果,都可以通过网关转发到同一个http服务
    9195
    9196

配置admin对多个bootstrap

经过测试,一个admin配置多个bootstrap是可以的,这种方式admin就相当于一个注册中心的功能,新的服务只需要注册到admin就可以在多个网关共享数据。
这种方式可以组合成kafka的Partition-Replication,形成高可用方案。 partition对应admin, replication对应bootstrap。这是就成了soul的高可用集群配置。有一个问题,当一个admin down了之后,与之对应的网关会失去同步数据,没有数据更新。

配置一个bootstrap对应多个admin

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

配置一个bootstrap对多个admin,例如,启动两个admin,两个bootstrap, 两个bootstrap都连接到所有admin上,变成一个高可用soul集群。

zookeeper方式

配置admin和bootstrap端口一一对应

soul-admin

server:
  port: 9095

soul-bootstrap

server:
  port: 9195
soul:
  sync:
     zookeeper:
       url: localhost:2181
       sessionTimeout: 5000
       connectionTimeout: 2000

把soul-bootstrap的zookeeper依赖加上

<!--soul data sync start use zookeeper-->
<dependency>
    <groupId>org.dromara</groupId>
    <artifactId>soul-spring-boot-starter-sync-data-zookeeper</artifactId>
    <version>${project.version}</version>
</dependency>

总结

  • websocket方式

bootstrap可以配置多个admin
soul 配置admin和bootstrap可以很灵活,可以参照其他各种高可用模型进行配置。
弊端admin和bootstrap多对多耦合很大,下线或增加admin,bootstrap要重新配置。
所以集群方式还是使用zookeeper作为配置中心

  • zookeeper或者nacos (推荐)

高可用注册中心,admin和bootstrap的增加减少不用改配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值