Java研究院 Java研究院

人非生而知之者,知之,而后知不知。

目录
Seata实践三(redis+Apollo)
/      

Seata实践三(redis+Apollo)

准备工作

Apollo

下载安装

如果存在Apollo环境的或者项目已经用到的,可以跳过这步。

这里
有Apollo的基本安装和启动说明,按照默认说明按照,访问 http://localhost:8070/
应该能看到如下界面:
Apollo

至此,Apollo 的基础环境就具备了。

创建seata应用

因为我们要用Apollo来做配置中心,那么需要在Apollo上创建seata应用来存在配置信息。

如上图的项目首页,点击 创建项目 ,按照下图信息填好创建项目
Apollo

提交后能在首页看到我们刚刚创建的项目
Apollo

授权三方访问

这一步不是必须的,但是为了方便,可以有这个步骤。

Seata实践一(nacos) 中介绍过注册配置文件到nacos,这个步骤做的也是同样的操作,
而授权三方访问就是为了生成访问密钥。

点击 首页 - 管理员工具 - 开放平台授权管理

按照如下信息填写好(正常第一次是创建,二次直接查询即可),然后在赋权部分提交即可,图示的红色token,后面要用到。

Apollo的准备工作告一段落。

Seata

seata的下载启动不再赘述,可以参照之前的讲解。这里主要说一下redis和Apollo相关的配置。

seata 配置

registry.conf 的详细内容如下,已经省去无关内容。
可以看到,指定了用redis作为注册中心,Apollo作为配置中心。同级目录下的 file.conf 用不到了。

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "redis"
  loadBalance = "RandomLoadBalance"
  loadBalanceVirtualNodes = 10
  
  redis {
    serverAddr = "localhost:6379"
    db = 0
    password = "5EqhauyQ4D2i89nI"
    cluster = "default"
    timeout = 50000
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "apollo"
 
  apollo {
    appId = "seata-server"
    apolloMeta = "http://127.0.0.1:8080"
    namespace = "application"
    apolloAccesskeySecret = ""
  }
}

注册配置到 Apollo

去到seata的源码 seata/script/config-center/apollo 目录下,找到 apollo-config.sh 脚本。
同时修改 config.txt 文件的内容(如果之前按照 nacos 注册的步骤操作则可以不改或者微调)。主要是修改 db 连接信息以及
service.vgroupMapping的值,自定义,保持一致即可。

然后执行命令

 ./apollo-config.sh -h localhost -p 8070 -e DEV -a seata-server -c default -n application -d apollo -r apollo -t 01bc0e23675f6052733278db0d7f1c46d47a1d34

根据你的实际情况,如果Apollo都是默认配置,则只需将 -t 参数换成上面生成的 token 即可。
如果注册成功,能在 Apollo 的 application 中看到如下配置信息。

如果没问题的话,确保你的 redis 已启动,就可以启动seata了。

创建项目工程

这部分请参照 Seata实践二(consul) 。因为主体结构不变,redis只是用来做seata的注册中心,不能替代项目原有的
微服务注册中心。

  • 工程目录结构
  • application.yml 核心配置如下。
server:
  port: 30002

spring:
  application:
    name: apollo-stock
  cloud:
    consul:
      discovery:
        service-name: ${spring.application.name}
        heartbeat:
          enabled: true
      host: localhost
      port: 8500

seata:
  enabled: true
  application-id: ${spring.application.name}
  tx-service-group: apollo-service-group
  enable-auto-data-source-proxy: true
  data-source-proxy-mode: AT
  use-jdk-proxy: false
  client:
    rm:
      async-commit-buffer-limit: 10000
      report-retry-count: 5
      table-meta-check-enable: false
      report-success-enable: false
      saga-branch-register-enable: false
      saga-json-parser: fastjson
      lock:
        retry-interval: 10
        retry-times: 30
        retry-policy-branch-rollback-on-conflict: true
    tm:
      commit-retry-count: 5
      rollback-retry-count: 5
      default-global-transaction-timeout: 60000
      degrade-check: false
      degrade-check-period: 2000
      degrade-check-allow-times: 10
    undo:
      data-validation: true
      log-serialization: jackson
      log-table: undo_log
      only-care-update-columns: true
  service:
    vgroup-mapping:
      apollo-service-group: default
    grouplist:
      default: 127.0.0.1:8091
    enable-degrade: false
    disable-global-transaction: false
 
  config:
    type: apollo
    apollo:
      apollo-meta: http://localhost:8080
      app-id: seata-server
      namespace: application
      apollo-accesskey-secret: ""

  registry:
    type: redis
    load-balance: RandomLoadBalance
    load-balance-virtual-nodes: 10
    redis:
      server-addr: localhost:6379
      db: 0
      password: "5EqhauyQ4D2i89nI"
      timeout: 0

  log:
    exception-rate: 100


可以看到 seata 配置指定了redis作为注册中心、Apollo作为配置中心。

此外还需要在pom中 引入Apollo和redis依赖,完整项目信息见源码,源码已本地验证通过,可直接下载使用。

源码

star fork


才疏学浅,难免有坑,有坑也不填
标题:Seata实践三(redis+Apollo)
地址:https://studying.icu/articles/2021/09/18/1631947436699.html