当前位置: 首页 > news >正文

网站分类主要有哪些海南城乡建设庁网站

网站分类主要有哪些,海南城乡建设庁网站,东莞建设网官方网站首页,WordPress最强大的主题目录 一、seata使用场景 二、seata组成 三、seata服务端搭建 四、客户端使用seata 4.1 客户端增加undo_log表 4.2 客户端增加seata相关配置 4.3 客户端使用注解 五、测试 一、seata使用场景 微服务中#xff0c;一个业务涉及到多个微服务系统#xff0c;每个微服务…目录 一、seata使用场景  二、seata组成 三、seata服务端搭建 四、客户端使用seata 4.1 客户端增加undo_log表 4.2 客户端增加seata相关配置 4.3 客户端使用注解 五、测试 一、seata使用场景  微服务中一个业务涉及到多个微服务系统每个微服务系统连接不同的数据库要求数据一致性时使用。如下订单操作调用下订单方法后需要增加订单记录、减少产品库存订单记录和产品库存 调用不同的微服务  数据存储在不同的数据库中 调用下订单方法时订单服务或库存服务任何一个出现问题此方法执行失败数据库记录需回滚。 理论支持cap、base 理论依据二阶段提交法准备、执行三阶段提交法询问、准备、执行消息最终一致性最大努力通知法 解决方案tcctry-confirm-cancel、sega、X/A等。 二、seata组成 seata是spring cloud生态中的分布式事务解决方案包括seata服务端和客户端 seata服务端是独立部署的seata担当事务协调器角色 seata客户端即每个微服务增加相关依赖和配置使用GlobalTransactional(rollbackFor Exception.class)注解即可 三、seata服务端搭建 1. 下载seata服务端包 本文使用的是seata1.7.0版本的包。 2. 修改seata配置文件 application.yml使用nacos注册seata服务管理seata服务配置 路径seataconf,application.yml # Copyright 1999-2019 Seata.io Group. # # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.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_logstash console:user:username: seatapassword: seataseata:config:# support: nacos 、 consul 、 apollo 、 zk 、 etcd3type: nacosnacos:server-addr: 127.0.0.1:8948namespace:group: SEATA_GROUPusername: nacospassword: context-path:##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: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:8948group: SEATA_GROUPnamespace:cluster: defaultusername: nacospassword: context-path:##if use MSE Nacos with auth, mutex with username/password attribute#access-key:#secret-key:security:secretKey: tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login 在nacos中增加seata配置 seataServer.properties配置文件 #For details about configuration items, see https://seata.io/zh-cn/docs/user/configurations.html #Transport configuration, for client and server transport.typeTCP transport.serverNIO transport.heartbeattrue transport.enableTmClientBatchSendRequestfalse transport.enableRmClientBatchSendRequesttrue transport.enableTcServerBatchSendResponsefalse transport.rpcRmRequestTimeout30000 transport.rpcTmRequestTimeout30000 transport.rpcTcRequestTimeout30000 transport.threadFactory.bossThreadPrefixNettyBoss transport.threadFactory.workerThreadPrefixNettyServerNIOWorker transport.threadFactory.serverExecutorThreadPrefixNettyServerBizHandler transport.threadFactory.shareBossWorkerfalse transport.threadFactory.clientSelectorThreadPrefixNettyClientSelector transport.threadFactory.clientSelectorThreadSize1 transport.threadFactory.clientWorkerThreadPrefixNettyClientWorkerThread transport.threadFactory.bossThreadSize1 transport.threadFactory.workerThreadSizedefault transport.shutdown.wait3 transport.serializationseata transport.compressornone#Transaction routing rules configuration, only for the client service.vgroupMapping.default_tx_groupdefault #If you use a registry, you can ignore it service.default.grouplist127.0.0.1:8091 service.enableDegradefalse service.disableGlobalTransactionfalse#Transaction rule configuration, only for the client client.rm.asyncCommitBufferLimit10000 client.rm.lock.retryInterval10 client.rm.lock.retryTimes30 client.rm.lock.retryPolicyBranchRollbackOnConflicttrue client.rm.reportRetryCount5 client.rm.tableMetaCheckEnabletrue client.rm.tableMetaCheckerInterval60000 client.rm.sqlParserTypedruid client.rm.reportSuccessEnablefalse client.rm.sagaBranchRegisterEnablefalse client.rm.sagaJsonParserfastjson client.rm.tccActionInterceptorOrder-2147482648 client.tm.commitRetryCount5 client.tm.rollbackRetryCount5 client.tm.defaultGlobalTransactionTimeout60000 client.tm.degradeCheckfalse client.tm.degradeCheckAllowTimes10 client.tm.degradeCheckPeriod2000 client.tm.interceptorOrder-2147482648 client.undo.dataValidationtrue client.undo.logSerializationjackson client.undo.onlyCareUpdateColumnstrue server.undo.logSaveDays7 server.undo.logDeletePeriod86400000 client.undo.logTableundo_log client.undo.compress.enabletrue client.undo.compress.typezip client.undo.compress.threshold64k #For TCC transaction mode tcc.fence.logTableNametcc_fence_log tcc.fence.cleanPeriod1h#Log rule configuration, for client and server log.exceptionRate100#Transaction storage configuration, only for the server. The file, db, and redis configuration values are optional. store.modedb store.lock.modedb store.session.modedb #Used for password encryption store.publicKey#These configurations are required if the store mode is db. If store.mode,store.lock.mode,store.session.mode are not equal to db, you can remove the configuration block. store.db.datasourcedruid store.db.dbTypemysql store.db.driverClassNamecom.mysql.cj.jdbc.Driver store.db.urljdbc:mysql://127.0.0.1:3306/seata?useUnicodetruerewriteBatchedStatementstrue store.db.userroot store.db.password store.db.minConn5 store.db.maxConn30 store.db.globalTableglobal_table store.db.branchTablebranch_table store.db.distributedLockTabledistributed_lock store.db.queryLimit100 store.db.lockTablelock_table store.db.maxWait5000#Transaction rule configuration, only for the server server.recovery.committingRetryPeriod1000 server.recovery.asynCommittingRetryPeriod1000 server.recovery.rollbackingRetryPeriod1000 server.recovery.timeoutRetryPeriod1000 server.maxCommitRetryTimeout-1 server.maxRollbackRetryTimeout-1 server.rollbackRetryTimeoutUnlockEnablefalse server.distributedLockExpireTime10000 server.xaerNotaRetryTimeout60000 server.session.branchAsyncQueueSize5000 server.session.enableBranchAsyncRemovefalse server.enableParallelRequestHandlefalse#Metrics configuration, only for the server metrics.enabledfalse metrics.registryTypecompact metrics.exporterListprometheus metrics.exporterPrometheusPort98983. 创建seata服务所需数据库表 在seata script目录下找到sql脚本 执行sql语句建表 -- -------------------------------- The script used when storeMode is db -------------------------------- -- the table to store GlobalSession data CREATE TABLE IF NOT EXISTS global_table (xid VARCHAR(128) NOT NULL,transaction_id BIGINT,status TINYINT NOT NULL,application_id VARCHAR(32),transaction_service_group VARCHAR(32),transaction_name VARCHAR(128),timeout INT,begin_time BIGINT,application_data VARCHAR(2000),gmt_create DATETIME,gmt_modified DATETIME,PRIMARY KEY (xid),KEY idx_status_gmt_modified (status , gmt_modified),KEY idx_transaction_id (transaction_id) ) ENGINE InnoDBDEFAULT CHARSET utf8mb4;-- the table to store BranchSession data CREATE TABLE IF NOT EXISTS branch_table (branch_id BIGINT NOT NULL,xid VARCHAR(128) NOT NULL,transaction_id BIGINT,resource_group_id VARCHAR(32),resource_id VARCHAR(256),branch_type VARCHAR(8),status TINYINT,client_id VARCHAR(64),application_data VARCHAR(2000),gmt_create DATETIME(6),gmt_modified DATETIME(6),PRIMARY KEY (branch_id),KEY idx_xid (xid) ) ENGINE InnoDBDEFAULT CHARSET utf8mb4;-- the table to store lock data CREATE TABLE IF NOT EXISTS lock_table (row_key VARCHAR(128) NOT NULL,xid VARCHAR(128),transaction_id BIGINT,branch_id BIGINT NOT NULL,resource_id VARCHAR(256),table_name VARCHAR(32),pk VARCHAR(36),status TINYINT NOT NULL DEFAULT 0 COMMENT 0:locked ,1:rollbacking,gmt_create DATETIME,gmt_modified DATETIME,PRIMARY KEY (row_key),KEY idx_status (status),KEY idx_branch_id (branch_id),KEY idx_xid (xid) ) ENGINE InnoDBDEFAULT CHARSET utf8mb4;CREATE TABLE IF NOT EXISTS distributed_lock (lock_key CHAR(20) NOT NULL,lock_value VARCHAR(20) NOT NULL,expire BIGINT,primary key (lock_key) ) ENGINE InnoDBDEFAULT CHARSET utf8mb4;INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES (AsyncCommitting, , 0); INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES (RetryCommitting, , 0); INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES (RetryRollbacking, , 0); INSERT INTO distributed_lock (lock_key, lock_value, expire) VALUES (TxTimeoutCheck, , 0); 四、客户端使用seata 示例由三个服务组成seataDemoWeb、demo-order、demo-product 其中seataDemoWeb服务提供rest接口test此接口调用demo-order和demo-product服务增加订单记录修改库存。 4.1 客户端增加undo_log表 demo-order和demo-product两个服务对应的数据库均需增加undo_log表 建表语句 CREATE TABLE undo_log (id bigint(20) NOT NULL AUTO_INCREMENT,branch_id bigint(20) NOT NULL,xid varchar(100) NOT NULL,context varchar(128) NOT NULL,rollback_info longblob NOT NULL,log_status int(11) NOT NULL,log_created datetime NOT NULL,log_modified datetime NOT NULL,ext varchar(100) DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY ux_undo_log (xid,branch_id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8; 4.2 客户端增加seata相关配置 seataDemoWeb、demo-order和demo-product在application.properties中增加seata配置 seata.enabledtrue seata.application-id${spring.application.name} seata.tx-service-groupseata-tx-group seata.service.vgroup-mapping.seata-tx-groupdefault seata.registry.typenacos seata.registry.nacos.server-addr127.0.0.1:8948 seata.registry.nacos.usernamenacos seata.registry.nacos.password seata.registry.nacos.namespacepublic seata.registry.nacos.groupSEATA_GROUP seata.registry.nacos.applicationseata-server pom增加seata依赖完整pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.2.10.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdhj.example/groupIdartifactIdproductDemo/artifactIdversion1.0.0/versionpackagingjar/packagingpropertieslombok.version1.18.24/lombok.version/propertiesdependenciesdependencygroupIdhj.example/groupIdartifactIddemoCommon/artifactIdversion1.0.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.12/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependency!-- nacos --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2.2.5.RELEASE/version/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactIdversion2.2.5.RELEASE/version/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-dubbo/artifactIdversion2.2.5.RELEASE/version/dependency!-- seata --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactIdversion2.2.5.RELEASE/versionexclusionsexclusiongroupIdio.seata/groupIdartifactIdseata-spring-boot-starter/artifactId/exclusion/exclusions/dependencydependencygroupIdio.seata/groupIdartifactIdseata-spring-boot-starter/artifactIdversion1.7.0/version/dependency/dependencies /project 4.3 客户端使用注解 在seataDemoWeb服务中增加GlobalTransaction注解 package hj.example.seatademoweb.controller;import com.baomidou.mybatisplus.extension.service.IService; import hj.example.democommon.entity.DemoOrder; import hj.example.democommon.entity.DemoProduct; import hj.example.democommon.entity.StateEnum; import hj.example.democommon.services.DemoOrderService; import hj.example.democommon.services.DemoProductService; import io.seata.spring.annotation.GlobalTransactional; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.Random;/*** Description: TODO* Author: * Date: 2023/8/29**/ RestController public class TestController {DubboReference(interfaceName demoOrderService)private DemoOrderService demoOrderService;DubboReference(interfaceName demoProductService)private DemoProductService demoProductService;RequestMapping(/test)GlobalTransactional(rollbackFor Exception.class)public ResponseEntityObject test() {DemoOrder demoOrder new DemoOrder();demoOrder.setAccountId(1);demoOrder.setState(StateEnum.NEW.name());demoOrderService.save(demoOrder);DemoProduct demoProduct new DemoProduct();demoProduct.setNum(Math.random()*10000);demoProductService.save(demoProduct);return new ResponseEntity(success, HttpStatus.OK);} }五、测试 修改4.3中的代码debug查看回滚 DemoProduct demoProduct new DemoProduct(); demoProduct.setNum(1/0); demoProductService.save(demoProduct);
http://www.dnsts.com.cn/news/274783.html

相关文章:

  • 网站制作培训机构网页制作的收获与体会
  • 百度网站建设如何培训机构网站如何建设
  • 抽奖机网站怎么做的外贸免费网站建设
  • 正能量网站地址链接免费万户网络技术
  • 如何制作网站导航栏wordpress 导入excel
  • 深圳注册贸易公司网上注册流程wordpress 优化方案
  • 无锡企业建站模板it行业公司排名
  • 北京网站seo外包将网站发布到微信小程序怎么做
  • 青海网站建设怎么建设乌海做网站
  • 阜城县网站建设报价天津的网站建设
  • 北京专业做网站电话网站机房建设目的
  • 深圳vi设计团队如何给网站做seo
  • 如何选择常州网站建设黄页内容
  • 一个网站主机多少钱一年网站链接分析工具
  • 网站做a视频在线观看网站哪里建网站便宜
  • 网站建设 检查 通报网站规划文案
  • it企业网站模板下载自己建设网站的利弊
  • 阜阳市建设局网站短视频seo营销系统
  • 利用高权重网站做关键词深做网站公司
  • 重庆网站推广平台网络营销方式有哪些?举例说明
  • 百度做网站骗人到哪里去投诉广告公司名字怎么取
  • 网站设计报价怎么做做网站网页需要多久
  • 广州品牌网站设计公司怎么建网站免费的
  • 济南网站建设 首选搜点网络网页创建站点
  • 做网站按钮做网站排名费用多少
  • 贵阳网站建设方案咨询wordpress geek theme
  • 网站页面 原则旅游网站开发项目策划书
  • 拟定网站优化方案地产公司做网站维护写代码么6
  • 网站无后台添加后台wordpress 内链设置
  • 自我建设外贸网站com和cn和net域名区别