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

全面的聊城网站建设微信公众平台号申请注册入口

全面的聊城网站建设,微信公众平台号申请注册入口,网站设计需要那些模块,微信开发者中心分布式事务 - seata 一、本地事务与分布式事务 1.1、本地事务 本地事务#xff0c;也就是传统的单机事务。在传统数据库事务中#xff0c;必须要满足四个原则#xff08;ACID#xff09;。 1.2、分布式事务 分布式事务#xff0c;就是指不是在单个服务或单个数据库架构…分布式事务 - seata 一、本地事务与分布式事务 1.1、本地事务 本地事务也就是传统的单机事务。在传统数据库事务中必须要满足四个原则ACID。 1.2、分布式事务 分布式事务就是指不是在单个服务或单个数据库架构下产生的事务例如 跨数据源的分布式事务跨服务的分布式事务综合情况 在数据库水平拆分、服务垂直拆分之后一个业务操作通常要跨多个数据库、服务才能完成。例如电商行业中比较常见的下单付款案例包括下面几个行为 创建新订单扣减商品库存从用户账户余额扣除金额 完成上面的操作需要访问三个不同的微服务和三个不同的数据库或者不同的服务中进行 RPC 调用。 订单的创建、库存的扣减、账户扣款在每一个服务和数据库内是一个本地事务可以保证ACID原则。 但是当我们把三件事情看做一个业务要满足保证“业务”的原子性要么所有操作全部成功要么全部失败不允许出现部分成功部分失败的现象这就是分布式系统下的事务了。 此时ACID难以满足这是分布式事务要解决的问题。 二、理论基础 解决分布式事务问题需要一些分布式系统的基础知识作为理论指导。 2.1 CAP 理论 Consistency一致性Availability可用性Partition tolerance 分区容错性 Consistency一致性用户访问分布式系统中的任意节点得到的数据必须一致。 Availability 可用性用户访问集群中的任意健康节点必须能得到响应而不是超时或拒绝。 Partition tolerance 分区容错性—— Partition分区因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接形成独立分区。 Tolerance容错在集群出现分区时整个系统也要持续对外提供服务 注意在分布式系统中系统间的网络不能100%保证健康一定会有故障的时候而服务有必须对外保证服务。因此Partition Tolerance不可避免。 如果此时要保证一致性就必须等待网络恢复完成数据同步后整个集群才对外提供服务服务处于阻塞状态不可用。 如果此时要保证可用性就不能等待网络恢复那node01、node02与node03之间就会出现数据不一致。 也就是说在P一定会出现的情况下A和C之间只能实现一个。 2.2 BASE 理论 BASE理论是对CAP的一种解决思路包含三个思想 Basically Available 基本可用分布式系统在出现故障时允许损失部分可用性即保证核心可用。**Soft State软状态**在一定时间内允许出现中间状态比如临时的不一致状态。Eventually Consistent最终一致性虽然无法保证强一致性但是在软状态结束后最终达到数据一致。 2.3.解决分布式事务的思路 分布式事务最大的问题是各个子事务的一致性问题因此可以借鉴CAP定理和BASE理论有两种解决思路 AP模式各子事务分别执行和提交允许出现结果不一致然后采用弥补措施恢复数据即可实现最终一致。 CP模式各个子事务执行后互相等待同时提交同时回滚达成强一致。但事务等待过程中处于弱可用状态。 三、Seata 相关概念 Seata事务管理中有三个重要的角色 TC (Transaction Coordinator) - **事务协调者**维护全局和分支事务的状态协调全局事务提交或回滚。 TM (Transaction Manager) - **事务管理器**定义全局事务的范围、开始全局事务、提交或回滚全局事务。 RM (Resource Manager) - **资源管理器**管理分支事务处理的资源与TC交谈以注册分支事务和报告分支事务的状态并驱动分支事务提交或回滚。 Seata提供了四种不同的分布式事务解决方案 XA模式强一致性分阶段事务模式牺牲了一定的可用性无业务侵入TCC模式最终一致的分阶段事务模式有业务侵入AT模式最终一致的分阶段事务模式无业务侵入也是Seata的默认模式SAGA模式长事务模式有业务侵入 四、安装并设置默认 AT 模式 官方文档 版本对照表如下 Seata 下载对应版本地址 解压后得到安装包可看到原始配置 yml 数据库新建表 -- 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_and_branch_id (xid , branch_id) ) 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;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,PRIMARY KEY (id),UNIQUE KEY ux_undo_log (xid,branch_id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8;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); 修改配置文件 server:port: 7091spring:application:name: seata-server # 日志配置 logging:config: classpath:logback-spring.xmlfile:path: ${user.home}/logs/seata# 不外接日志故如下配置可暂不考虑extend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstash # 新增加的console控制台 # 可通过访问http://localhost:7091进行登录账号如下seata/seata console:user:username: seatapassword: seataseata:# Seata接入Nacos配置中心config:# support: file, nacos, consul, apollo, zk, etcd3type: nacosnacos:server-addr: 127.0.0.1:8848namespace: 891d7906-dd03-4b8c-9fe9-a1f0609b3189group: SEATA_GROUPusername: nacospassword: nacos##if use MSE Nacos with auth, mutex with username/password attribute#access-key: #secret-key: # Seata接入Nacos服务注册中心registry:# support: file, nacos, eureka, redis, zk, consul, etcd3, sofatype: nacosnacos:application: seata-serverserver-addr: 127.0.0.1:8848group: SEATA_GROUPnamespace: 891d7906-dd03-4b8c-9fe9-a1f0609b3189cluster: defaultusername: nacospassword: nacos##if use MSE Nacos with auth, mutex with username/password attribute#access-key: #secret-key: # 此处可不必配置由于接入了nacos配置以下store相关配置可直接通过seataServer.properties进行配置# store:# support: file 、 db 、 redis# mode: db # server: # service-port: 8091 #If not configured, the default is ${server.port} 1000security:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login Nacos 配置 # 存储模式 store.modedbstore.db.datasourcedruid store.db.dbTypemysql # 需要根据mysql的版本调整driverClassName # mysql8及以上版本对应的drivercom.mysql.cj.jdbc.Driver # mysql8以下版本的drivercom.mysql.jdbc.Driver store.db.driverClassNamecom.mysql.jdbc.Driver # 注意根据生产实际情况调整参数host和port store.db.urljdbc:mysql://127.0.0.1:3306/seata?useUnicodetruerewriteBatchedStatementstrue # 数据库用户名密码 store.db.userroot store.db.password12345678 # 微服务里配置与这里一致 service.vgroupMapping.dev_tx_groupdefault直接进入 bin命令 sh seate-server.sh 有点气用的云服务器一直报错。。。以为没启动起来 你给我说 这是启动起来了我。。
http://www.hkea.cn/news/14310703/

相关文章:

  • 彩票网站开发解决方案建一个免费网站
  • app网站开发培训淘宝客网站如何做推广方案
  • 商城的网站建设三步做一个抓娃娃机
  • 域名解析好了怎么做网站深圳 网站优化公司排名
  • 手机如何制作网页泰安搜索引擎优化招聘
  • 蒙古网站后缀网站开发如何挣钱
  • ps教程网站有哪些二级域名在线扫描
  • 江苏泰兴网站建设wordpress替代品
  • 做视频素材怎么下载网站wordpress.en
  • 域名备案的网站建设书组织建设是什么意思
  • 有关网站建设国内外现状的文献济南网站建设山东聚搜网力推
  • 杭州企业推广网站html电影网页设计教程
  • Soho外贸常用网站合肥有哪些做网站的公司
  • asp网站设计要求深圳微信网站
  • 网站上的图文介绍怎么做美食网站建设多少钱
  • 公司查询企业查询 天眼查工具类网站怎么优化seo
  • 门户网站设计思路设计公司包装
  • asp网站会员注册不了建e网灯具
  • 网站建设和维护做什么建设职业学校精品网站
  • 凡科网的网站免费的可以用吗用node和vue做的网站
  • 南阳住房和城乡建设厅网站dw个人网站制作
  • 品牌网站策划书电子商务网站建设和技术现状
  • 泰安网站建设推广门户网站建设提案
  • 做悬赏的网站推广文案是什么
  • 做淘宝链接模板网站怎么申请网站空间
  • 外贸网店系统网站关键字优化工具
  • 贵州住房城乡建设厅官方网站学校网站三合一建设方案
  • 晋江市规划局建设网站工程建设企业等采用
  • 专业做能源招聘的网站wordpress时间有问题
  • iis6.0不能新建网站wordpress繁體模板