seata除了使用文件作为默认的配置中心和服务发现外,还可以使用nacos,我们学习下如何配置:首先启动mysql、nacos、seata,然后copy默认配置进行修改
# docker run -d --name nacos -p 8848:8848 -e MODE=standalone -e MYSQL_MASTER_SERVICE_HOST=你的mysql所在ip -e MYSQL_MASTER_SERVICE_DB_NAME=nacos -e MYSQL_MASTER_SERVICE_USER=root -e MYSQL_MASTER_SERVICE_PASSWORD=mysql密码 -e MYSQL_SLAVE_SERVICE_HOST=你的mysql所在ip -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_DATABASE_NUM=1 nacos/nacos-server:latest# docker run -d --name seata -p 8091:8091 -e SEATA_IP=你想指定的ip -e SEATA_PORT=8091 seataio/seata-server:1.4.2version: "3.1"services:mysql:image: mysql:5.7container_name: mysqlenvironment:- MYSQL_ROOT_PASSWORD=123456command: --default-authentication-plugin=mysql_native_password --default-time-zone='+08:00'volumes:- ./mysql:/docker-entrypoint-initdb.d- ./mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnfports:- "3306:3306"extra_hosts:- host.docker.internal:host-gatewayseata-server:image: seataio/seata-server:1.5.2ports:- "7091:7091"- "8091:8091"environment:- STORE_MODE=db# 以SEATA_IP作为host注册seata server# - SEATA_IP=host.docker.internal# - SEATA_PORT=8091volumes:# - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" #设置系统时区# - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone" #设置时区# 假设我们通过docker cp命令把资源文件拷贝到相对路径`./seata-server/resources`中# 如有问题,请阅读上面的[注意事项]以及[使用自定义配置文件]- /Users/xiazemin//resources:/seata-server/resources- /Users/xiazemin/logs:/root/logs/seata/depends_on:- mysql- nacosextra_hosts:- host.docker.internal:host-gatewaynacos:image: nacos/nacos-server:2.0.2ports:- "8848:8848"environment:- MODE=standalone- MYSQL_MASTER_SERVICE_HOST=host.docker.internal- MYSQL_MASTER_SERVICE_DB_NAME=nacos- MYSQL_SERVICE_HOST=host.docker.internal- MYSQL_SERVICE_DB_NAME=nacos- MYSQL_SERVICE_USER=root- MYSQL_SERVICE_PASSWORD=123456- MYSQL_MASTER_SERVICE_USER=root- MYSQL_MASTER_SERVICE_PASSWORD=123456- MYSQL_SLAVE_SERVICE_HOST=host.docker.internal- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_DATABASE_NUM=1- NACOS_AUTH_SYSTEM_TYPE=nacosvolumes:- /Users/xiazemin/nacos/conf:/home/nacos/conf- /Users/xiazemin/nacos/data:/home/nacos/datadepends_on:- mysqlextra_hosts:- host.docker.internal:host-gateway
然后,首先修改nacos的配置文件/nacos/conf/application.properties
# springserver.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}server.contextPath=/nacosserver.port=${NACOS_APPLICATION_PORT:8848}spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:""}nacos.cmdb.dumpTaskInterval=3600nacos.cmdb.eventTaskInterval=10nacos.cmdb.labelTaskInterval=300nacos.cmdb.loadDataAtStart=falsedb.num=${MYSQL_DATABASE_NUM:1}db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}&serverTimezone=UTCdb.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}&serverTimezone=UTCdb.user=${MYSQL_SERVICE_USER}db.password=${MYSQL_SERVICE_PASSWORD}### The auth system to use, currently only 'nacos' is supported:nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}### The token expiration in seconds:nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}### The default token:nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D# default current work dirserver.tomcat.basedir=## spring security config### turn off securitynacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}# metrics for elastic searchmanagement.metrics.export.elastic.enabled=falsemanagement.metrics.export.influx.enabled=falsenacos.naming.distro.taskDispatchThreadCount=10nacos.naming.distro.taskDispatchPeriod=200nacos.naming.distro.batchSyncKeyCount=1000nacos.naming.distro.initDataRatio=0.9nacos.naming.distro.syncRetryDelay=5000nacos.naming.data.warmup=trueservice.vgroupMapping.default_tx_group=default### Security ###nacos.core.auth.enabled=truenacos.core.auth.username=nacosnacos.core.auth.password=nacos
然后修改seata的配置文件/resources/application.yml
server:port: 7091spring:application:name: seata-serverlogging:config: classpath:logback-spring.xmlfile:path: ${user.home}/logs/seataextend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstashconsole:user:username: seatapassword: seataseata:config:# support: nacos, consul, apollo, zk, etcd3type: nacos #filenacos:server-addr: host.docker.internal:8848namespace:group: SEATA_GROUPusername: nacospassword: nacos##if use MSE Nacos with auth, mutex with username/password attribute#access-key: ""#secret-key: ""data-id: seataServer.propertiesregistry:# support: nacos, eureka, redis, zk, consul, etcd3, sofatype: nacos #filenacos:application: seata-serverserver-addr: host.docker.internal:8848group: SEATA_GROUPnamespace:cluster: defaultusername: nacospassword: nacos##if use MSE Nacos with auth, mutex with username/password attribute#access-key: ""#secret-key: ""store:# support: file 、 db 、 redismode: dbdb:datasource: druiddbType: mysql# 需要根据mysql的版本调整driverClassName# mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver# mysql8以下版本的driver:com.mysql.jdbc.DriverdriverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://host.docker.internal:3306/seata_server?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=falseuser: rootpassword: 123456min-conn: 5max-conn: 100global-table: global_tablebranch-table: branch_tablelock-table: lock_tabledistributed-lock-table: distributed_lockquery-limit: 100max-wait: 5000# server:# service-port: 8091 #If not configured, the default is '${server.port} + 1000'security:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
尝试启动
% docker compose -f ./seata/exp4/docker-compose.yaml up
查看效果,首先登录nacos的控制端
http://127.0.0.1:8848/nacos/#/login,输入用户名:nacos,密码:nacos可以看到下面界面

至此配置中心启动成功
文章转载自golang算法架构leetcode技术php,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




