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

以前做视频的网站吗淘宝上面如何做网站

以前做视频的网站吗,淘宝上面如何做网站,长沙网站建设电话,东莞沙田最新消息Seata Sea学习分布式事务Seata二阶段提交协议AT模式TCC模式 Seata服务搭建Seata Server#xff08;事务协调者TC#xff09;环境搭建seata服务搭建-db数据源seata服务搭建-nacos启动seata服务 分布式事务代码搭建-client端搭建接入微服务应用 Sea学习 事务#xff1a;事务是… Seata Sea学习分布式事务Seata二阶段提交协议AT模式TCC模式 Seata服务搭建Seata Server事务协调者TC环境搭建seata服务搭建-db数据源seata服务搭建-nacos启动seata服务 分布式事务代码搭建-client端搭建接入微服务应用 Sea学习 事务事务是访问数据库并更新数据库中各项数据的一个程序执行单元。在关系数据库中一个事务由一组或多组SQL语句组成。事务应该具有4个属性原子性、一致性、隔离性、持久性。例如更新商品的接口这就是一个事务事务是对程序而言的。 原子性事务是一个不可分割的工作单元事务中包括的诸多操作要么都做要么都不做。一致性保持数据的一致隔离性一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的并发执行的各个事务之间不能互相干扰。隔离性又分为四个级别来保证事务之间的隔离性读未提交、读已提交、可重复读、串行化(事务串行执行不会产生并发问题)持久性一个事务执行并提交后就持久到数据库 本地事务大多数场景下我们的应用都只需要操作单一的数据库这种情况下的事务称之为本地事务。本地事务的ACID特性由数据库直接支持。 分布式事务 两种分布式事务场景1、同一服务不同数据库2、同一数据库不同服务此时都会产生分布式事务的问题。此时用本地数据库事务是无法支持分布式事务的。此时用Seata处理分布式事务问题 Seata seata的三大角色 在seata的架构中一共有三个角色 TC:事务协调者TM:事务管理器RM:资源管理器 管理分支事务处理的资源与TC交谈以注册分支事务的状态并驱动分支事务提交或回滚。其中TC为单独部署的server服务端TM和RM为嵌入到应用中的client客户端。 二阶段提交协议 常见的分布式事务解决方案 seata阿里分布式事务框架消息队列sagaXA 他们都有一个共同点都是遵循二阶段协议2PC。两阶段是指完成整个分布式事务划分成两个步骤完成。 1、准备阶段在这个阶段事务的协调者会向所有涉及的数据库或者资源管理器发送准备请求。每个数据库或者资源管理器收到准备请求后会执行相应的操作并且记录准备状态。如果准备成功就向协调者发送准备就绪的ask。协调者等待所有参与者都发送准备就绪的信号如果有任何一个参与者未能准备就绪或者出现了错误协调者将会发送回滚请求给所有参与者。 提交阶段如果所有参与者都准备就绪协调者会向他们发送提交请求。参与者接收到提交请求后会正式提交事务并且释放相关资源。如果有任何一个参与者未能接收到请求或者出现了错误协调者将会发送回滚请求给所有参与者。 图例第一阶段 第二阶段 就像是军训一样准备阶段教官让所有同学都立正站好所有同学都得对齐站好谁没有站好全部同学都得重新立正直到所有同学都准备好然后训练阶段同学们都站一排齐步走只要有一个没走齐的就重新开始已经尽力去解释了我相信即使没有学过计算机的应该也知道这玩意是什么了嘿嘿看着是不是毫无压力 AT模式 一阶段 befrore image:将要更新的数据查询出来。afer image:事务执行后将执行完的数据查出来 二阶段 二阶段提交 因为一阶段已经完成了提交动作所以二阶段如果没有异常则直接删除before image、after image、行锁 二阶段回滚 根据before image拿到逆向sql回滚数据回滚完成后删除befor image、after image、行锁 TCC模式 Seata服务搭建 Seata分TC、TM、RM三个角色其中TC为单独服务端部署TM和RM由业务系统引入依赖来进行集成。 Seata Server事务协调者TC环境搭建 seata服务搭建-db数据源 下载安装包 2.2.5对应的seata包时1.3.0下载地址https://github.com/apache/incubator-seata/releases?page2 修改server端存储模式打开config/file.conf修改mode“db”修改数据库连接信息创建数据库新建表可以去seata提供的资源信息中下载 ## transaction log store, only used in seata-server store {## store mode: file、db、redismode db## database store propertydb {## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.datasource druid## mysql/oracle/postgresql/h2/oceanbase etc.dbType mysqldriverClassName com.mysql.jdbc.Driverurl jdbc:mysql://192.168.184.1:3306/seatauser rootpassword 123456minConn 5maxConn 30globalTable global_tablebranchTable branch_tablelockTable lock_tablequeryLimit 100maxWait 5000} }建表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_gmt_modified_status (gmt_modified, status),KEY idx_transaction_id (transaction_id) ) ENGINE InnoDBDEFAULT CHARSET utf8;-- 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 utf8;-- the table to store lock data CREATE TABLE IF NOT EXISTS lock_table (row_key VARCHAR(128) NOT NULL,xid VARCHAR(96),transaction_id BIGINT,branch_id BIGINT NOT NULL,resource_id VARCHAR(256),table_name VARCHAR(32),pk VARCHAR(36),gmt_create DATETIME,gmt_modified DATETIME,PRIMARY KEY (row_key),KEY idx_branch_id (branch_id) ) ENGINE InnoDBDEFAULT CHARSET utf8;seata服务搭建-nacos db存储模式nacos(注册配置中心)部署 步骤5配置Nacos注册中心负责事务参与者(微服务)和TC通信 使用DBNacos的方式部署高可用集群模式 问题seata为何需要注册中心和配置中心 注册中心是事务参与者需要与事务协调者进行通信。配置中心是如果不配置seata会使用默认的配置script/config-center/config.txt文件。使用的配置中心的目的是所有TC都使用nacos配置中心中的配置方便统一管理 将Seata server注册到nacos修改confi目录下的registry.conf配置 registry {# file 、nacos 、eureka、redis、zk、consul、etcd3、sofatype nacosnacos {application seata-serverserverAddr 127.0.0.1:8848group SEATA_GROUPnamespace cluster defaultusername password } }config {# file、nacos 、apollo、zk、consul、etcd3type nacosnacos {serverAddr 127.0.0.1:8848namespace group SEATA_GROUPusername password } }将配置注册到nacos修改confi.txt,还需要将config.txt的数据源改为db,然后通过nacos/nacos-config.sh注册到nacos store.db.urljdbc:mysql://192.168.184.1:3306/seata?useUnicodetrue store.db.userroot store.db.password123456 transport.typeTCP transport.serverNIO transport.heartbeattrue transport.enableClientBatchSendRequestfalse 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 service.vgroupMapping.my_test_tx_groupdefault service.default.grouplist127.0.0.1:8091 service.enableDegradefalse service.disableGlobalTransactionfalse client.rm.asyncCommitBufferLimit10000 client.rm.lock.retryInterval10 client.rm.lock.retryTimes30 client.rm.lock.retryPolicyBranchRollbackOnConflicttrue client.rm.reportRetryCount5 client.rm.tableMetaCheckEnablefalse client.rm.sqlParserTypedruid client.rm.reportSuccessEnablefalse client.rm.sagaBranchRegisterEnablefalse client.tm.commitRetryCount5 client.tm.rollbackRetryCount5 client.tm.defaultGlobalTransactionTimeout60000 client.tm.degradeCheckfalse client.tm.degradeCheckAllowTimes10 client.tm.degradeCheckPeriod2000 store.modedb store.db.datasourcedruid store.db.dbTypemysql store.db.driverClassNamecom.mysql.jdbc.Driver store.db.urljdbc:mysql://192.168.184.1:3306/seata?useUnicodetrue store.db.userroot store.db.password123456 store.db.minConn5 store.db.maxConn30 store.db.globalTableglobal_table store.db.branchTablebranch_table store.db.queryLimit100 store.db.lockTablelock_table store.db.maxWait5000 store.redis.host127.0.0.1 store.redis.port6379 store.redis.maxConn10 store.redis.minConn1 store.redis.database0 store.redis.passwordnull store.redis.queryLimit100 server.recovery.committingRetryPeriod1000 server.recovery.asynCommittingRetryPeriod1000 server.recovery.rollbackingRetryPeriod1000 server.recovery.timeoutRetryPeriod1000 server.maxCommitRetryTimeout-1 server.maxRollbackRetryTimeout-1 server.rollbackRetryTimeoutUnlockEnablefalse client.undo.dataValidationtrue client.undo.logSerializationjackson client.undo.onlyCareUpdateColumnstrue server.undo.logSaveDays7 server.undo.logDeletePeriod86400000 client.undo.logTableundo_log client.log.exceptionRate100 transport.serializationseata transport.compressornone metrics.enabledfalse metrics.registryTypecompact metrics.exporterListprometheus metrics.exporterPrometheusPort9898注册配置到nacos 打开\script\config-center\nacos运行nacos-config.sh linux端运行如果是本地sh nacos-config.sh如果nacos在远程sh nacos-config.sh -h 192.168.184.15 -p 8848 执行后 可以看到配置已经注册到了nacos 启动seata服务 sh seata-server.sh -h 192.168.184.15 -p 8091运行seata服务sh seata-server.sh -h 192.168.184.15 -p 8091默认端口号8091 此时可以看到seata服务已经注册到了nacos 分布式事务代码搭建-client端搭建 声明式事务实现GlobalTransactional 接入微服务应用 业务场景 用户下单整个业务逻辑由三个微服务构成 订单服务根据采购需求创建订单。库存服务对给定的商品扣除库存数量 启动seata server端seata server使用nacos作为配置中心和注册中心(上一步已完成) 配置微服务整合seata前置工作新建两个数据库用来测试 在两个库创建两个表 DROP TABLE IF EXISTS order_tbl; CREATE TABLE order_tbl (id int NOT NULL AUTO_INCREMENT,product_id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,total_amount int NULL DEFAULT NULL,status varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ROW_FORMAT Dynamic;SET FOREIGN_KEY_CHECKS 1;DROP TABLE IF EXISTS stock_tpl; CREATE TABLE stock_tpl (id int NOT NULL AUTO_INCREMENT,product_id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,count int NULL DEFAULT NULL,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ROW_FORMAT Dynamic;SET FOREIGN_KEY_CHECKS 1;测试项目架构图 具体项目见码云 https://gitee.com/www_zzq_com/springcloud-alibaba_study第一步添加pom依赖 !--添加seata依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactId/dependency第二步各微服务对应的数据库中添加undo_log表 undo_log表作用回滚数据使用 CREATE TABLE IF NOT EXISTS undo_log (branch_id BIGINT(20) NOT NULL COMMENT branch transaction id,xid VARCHAR(100) NOT NULL COMMENT global transaction id,context VARCHAR(128) NOT NULL COMMENT undo_log context,such as serialization,rollback_info LONGBLOB NOT NULL COMMENT rollback info,log_status INT(11) NOT NULL COMMENT 0:normal status,1:defense status,log_created DATETIME(6) NOT NULL COMMENT create datetime,log_modified DATETIME(6) NOT NULL COMMENT modify datetime,UNIQUE KEY ux_undo_log (xid, branch_id) ) ENGINE InnoDBAUTO_INCREMENT 1DEFAULT CHARSET utf8 COMMENT AT transaction mode undo table;第三步配置事务的组 config.txt中配置的分组和客户端必须一一对应 server:port: 8083 spring:application:name: order-seata-servicecloud:nacos:server-addr: 192.168.184.15:8848username: nacospassword: nacosdiscovery:namespace: publicalibaba:seata:tx-service-group: shanghai #配置事务分组第四步 配置文件中进行配置与seata服务进行交互 #seata配置 seata:#seata注册中心registry:#配置seata的注册中心告诉seata client怎么去访问seata servertype: nacosnacos:server-addr: 192.168.184.15:8848 #seata server所在的nacos服务地址application: seata-server #seata server的服务名username: nacospassword: nacos#seata配置中心config:type: nacosnacos:server-addr: 192.168.184.15:8848 #seata server所在的nacos服务地址username: nacospassword: nacos第五步使用在业务方法上添加GlobalTransactional注解 GlobalTransactionalpublic OrderTbl create(OrderTbl orderTbl) {//插入能否成功orderMapper.insertOrder(orderTbl);//扣减库存,能否成功String s stockService.detectStock(orderTbl.getProductId());int a1/0;return orderTbl;}
http://www.hkea.cn/news/14291103/

相关文章:

  • 宝安做棋牌网站建设找哪家公司好自己做的网站收费
  • phpcms 网站根目录三里河网站建设
  • 请人制作一个网站需要多少钱jquery插件网站推荐
  • 二七郑州网站建设环卫公厕建设门户网站访谈
  • 怎样知道哪个网站做推广好seo工作是什么意思
  • 免费图片素材网站有哪些西安做网站选哪家
  • 企业站seo报价wordpress 怎么安全
  • 怎么做网站网站的代理网站开发客户挖掘
  • 竞价推广网站建设山西住房与城乡建设部网站
  • 做音乐网站需要什么腾讯企业邮箱扫码登录
  • 做外贸的网站域名怎么买泉州外贸网站开发公司
  • 网站建设的一般步骤包括泰安网站建设哪家不错
  • 北太平庄网站建设上海市工程建设交易中心网站
  • 网站建设总结经验中国公司网
  • 湖南企业网站营销设计顺德做网站
  • 谁可以做网站优化排名推广山东济宁做网站的公司
  • 网站开发与运营网站建设需求登记表 免费下载
  • 网站备案取名营销型集团网站建设
  • 在哪个网站可以免费做广告长沙做网站seo优化外包
  • 动感技术网站建设制作图片的软件ppt
  • 东莞装饰网站建设南京网站制作步骤
  • 购物网站建设渠道wordpress最新免费主题下载
  • wordpress能开发商城网站吗网站在线生成app
  • 婚恋网网站架构网站申请专利
  • 纵横网站建立河北二级建造师考试最新消息
  • 厦门市建设管理协会网站首页吉林市城市建设档案馆官方网站
  • 个人做网站能赚到钱吗网站备案查询官网入口
  • 专门做外贸的网站国内哪个应用商店app最全
  • 重庆网站建设仿站怎样才能做好销售
  • 网站开发发展趋势2018山东高端网站建设方案