Browsed by
标签:支付

分布式事务问题的几种方案

分布式事务问题的几种方案

閱讀本文約花費: 8 (分鐘)分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。 这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景。如果要玩儿,那么基于 Spring+JTA 就可以搞定,自己随便搜个 demo 看看就知道了。 对于这个方案,一般来说某个系统内部如果出现跨多个库的这么一个操作,是不合规的。我可以给大家介绍一下, 现在微服务,一个大的系统分成几十个甚至几百个服务。一般来说,我们的规定和规范,是要求每个服务只能操作自己对应的一个数据库。 如果你要操作别的服务对应的库,不允许直连别的服务的库,违反微服务架构的规范,你随便交叉胡乱访问,几百个服务的话,全体乱套,这样的一套服务是没法管理的,没法治理的,可能会出现数据被别人改错,自己的库被别人写挂等情况。 如果你要操作别人的服务的库,你必须是通过调用别的服务的接口来实现,绝对不允许…

Read More Read More

再有人问你分布式事务,把这篇扔给他

再有人问你分布式事务,把这篇扔给他

閱讀本文約花費: 24 (分鐘)前言 不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。 事务的具体定义 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。简单地说,事务提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。 数据库本地事务 ACID 说到数据库事务就不得不说,数据库事务中的四大特性,ACID: A:原子性(Atomicity) 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 就像你买东西要么交钱收货一起都执行,要么要是发不出货,就退钱。 C:一致性(Consistency) 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么…

Read More Read More

常用的分布式事务解决方案

常用的分布式事务解决方案

閱讀本文約花費: 46 (分鐘)众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本文首先会为大家梳理分布式事务的基本概念和理论基础,然后介绍几种目前常用的分布式事务解决方案。废话不多说,那就开始吧~ 什么是事务? 事务由一组操作构成,我们希望这组操作能够全部正确执行,如果这一组操作中的任意一个步骤发生错误,那么就需要回滚之前已经完成的操作。也就是同一个事务中的所有操作,要么全都正确执行,要么全都不要执行。 事务的四大特性 ACID 说到事务,就不得不提一下事务著名的四大特性。 原子性 原子性要求,事务是一个不可分割的执行单元,事务中的所有操作要么全都执行,要么全都不执行。 一致性 一致性要求,事务在开始前和结束后,数据库的完整性约束没有被破坏。 隔离性 事务的执行是相互独立的,它们不会相互干扰,一个事务不会看到另一个正在运行过程中的事务的数据。 持久性 持久性要求,一个事务完成之后,事务的执行结果必须是持久化保存的。即使数据库发生崩溃,在数据库恢复后事务提交的结果…

Read More Read More

优惠券系统应该如何设计?

优惠券系统应该如何设计?

閱讀本文約花費: 9 (分鐘)双十一节日气氛已经愈演愈烈了,优惠券已经成为了绝对的关键词,近两周一直在做优惠券需求,从最初的一无所知到现在建立初步的优惠券框架结构,一路也是磕磕碰碰。今天就把这段时间的输入总结一下然后输出。 优惠券的投放方式有多种,本文采用的是活动页送券这种形式。 一、创建优惠券 优惠券是一套规则的组合,创建优惠券是优惠券系统设计的第一步,主要有以下几部分组成:基本信息、优惠类型、使用范围、有效期等。 基本信息包括优惠券名称、发放数量、优惠券是否可叠加、每人限领张数、是否和其他促销同时使用(优惠优先级)、使用规则等。 优惠类型 优惠类型要根据公司实际情况和用户群体去设计,主要有满减、立减、折扣券或优惠码。满减、立减、折扣券属于私有券,只能个人账号使用;优惠码属于共有券,给有兑换码并且兑换的用户使用。 使用范围 使用优惠券的用户类型、使用优惠券的商品类型、订单类型。用户类型一般指是否区分新老用户、不同的等级用户;商品类型指哪些区域、哪些品类的商品可使用;订单类型指订单满多少元可使用、满多少件可使用。 有效期 有效期一般有两种: 一种是固定的有效期,设定一个时间段;另一种是设定一个有效数,比如:30天,一般是从领取之日起30天内有效。多数情况下都会选择第二种,增加紧迫感,促进用户下单。优惠券因涉及金额,通常需要财务审批,财务审批后优惠券ID生成。到此,优惠券的基本规则大…

Read More Read More

微服务划分的姿势

微服务划分的姿势

閱讀本文約花費: 10 (分鐘)我们知道微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析,所以这篇文章谈到的划分也不是绝对标准,仅供参考。 有人说微服务不难,难的是服务的划分,虽然我持保留意见,但是从侧面也反应了划分具有一定的困难。这里的矛盾在于粒度,如果粒度太大了,分和不分似乎都差不多;如果粒度太小了,聚合、发布、调用链、调试等都是坑。 以下谈到的拆分是前人经验的总结,我罗列了三种行家的拆分姿势,每个的的经验和视野不同,各有偏颇,我在这里更多的是谈共鸣和感受,希望对你有所启发。 拆分姿势 姿势一:新浪微博微服务专家胡忠想从纵横两个维度来划分,简单粗暴。 纵向拆分 从业务维度进行拆分。标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。 横向拆分 从公共且独立功能维度拆分。标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。 纵向以业务为基准,关系铁的在一起;横向功能独立的在一起。我想如果拆分这么简单,你有底气拆,敢拆吗?所以我们又继续比对一下其他专家的言论。 姿势二:阿里的小伙伴从综合的维度来看,部分维度和上面会有重合 服务拆分要迎合业务的需要 充分考虑业务独立性和专业性,避免以团队来定义服务边界,从…

Read More Read More

美国宪法修正案

美国宪法修正案

閱讀本文約花費: 6 (分鐘)宪法修正案是美国宪法规定的正式改变宪法的形式之一(另一形式是召开另一次制宪会议,但并未被使用过),是美国宪法的重要组成部分,代表了美国宪法制度的基本发展方向。其中具有重大影响的是关于公民权利的宪法前10条修正案(即”权利法案”)。 自宪法签署完成后,已有二十七项修正案经批准,其中前十项统称权利法案。对美国宪法的修正程序受美国宪法第五条所规定。另有其他许多已向国会提议,但是未向各州提交的美国宪法修正提议。 修正案在生效之前,须经国会参众两院的三分之二表决通过,或是由三分之二的州会议(称作宪法第五条会议)的要求,而后才能提呈给各州,并经过四分之三州份或其会议的批准,批准的方式是由国会在提案时决定。迄今为止,没有任何一个修正案是由州会议的要求而提出。只有1933年的第二十一修正案,是采行州会议的方式来批准。 目前美国宪法共存在27个有效的修正案。其中,最初的10个修正案是一次性被通过的,因为其主要规定了人民的权利和对政府的限制,因此被统称为权利法案。此后的17个修正案则是逐次获得通过的。 顺序 修正案 提出日期 生效日期 第一修正案 保护言论自由、信仰自由、出版自由,以及集会的权利、抗议的权利和请愿的权利 1789年9月25日 1791年12月15日 第二修正案 保护持有与携带武器的权利 1789年9月25日 1791年12月15日 …

Read More Read More

由12306.CN谈谈网站性能技术

由12306.CN谈谈网站性能技术

閱讀本文約花費: 31 (分鐘) 12306.cn网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解,所以,如果有什么问题还请大家一起讨论和指正。(这又是一篇长文,只讨论性能问题,不讨论那些UI,用户体验,或是是否把支付和购票下单环节分开的功能性的东西) 业务 任何技术都离不开业务需求,所以,要说明性能问题,首先还是想先说说业务问题。 其一,有人可能把这个东西和QQ或是网游相比。但我觉得这两者是不一样的,网游和QQ在线或是登录时访问的更多的是用户自己的数据,而订票系统访问的是中心的票量数据,这是不一样的。不要觉得网游或是QQ能行你就以为这是一样的。网游和QQ 的后端负载相对于电子商务的系统还是简单。 其二,有人说春节期间订火车的这个事好像网站的秒杀活动。的确很相似,但是如果你的思考不在表面的话,你会发现这也有些不一样。火车票这个事,一方面会伴随着大量的查询操作,更BT的是下单的时候需要对数据库很多的一致性的操作,一方面是从起点到终点各个分段票的一致性,另一方面,买的人路线、车次、时间选择有很多,会不停地改变下单方式。而秒杀,直接杀就好了,没有那么多查询和一致性的问题。另外,关于秒杀,完全可以做成只接受前N个用户的请求(完全不操作后端的任何数据, 仅仅只是对用户的下单操作log),这种业务,只…

Read More Read More

方方日记 20200224

方方日记 20200224

閱讀本文約花費: 12 (分鐘)方方武汉日记二月初二(2月24日) 检验一个国家的文明尺度,不是看你军队多威武,不是看你科技多发达,而是你对弱势人群的态度。 检验你的只有一条:就是你对弱势人群的态度 文/方方 二月二,龙抬头。春耕应该从今天开始吧?但不知道,今年此日,地里有没有劳作的农人。继续晴天,很暖和,有一种大太阳能把病毒晒死的感觉。院里月季都在抽枝发芽,我几乎没有怎么打理它们,但它们依然旺盛生长。 平时经常吃仟吉系列的“工匠面包”。今天他们的老板陆先生让物流给我送了一箱。真不知该怎么感谢。我的同事道波正在门口值班,老远看到我,说一看走路就知道是你。我属于大步流星走路的人,而道波永远穿双尖尖的高跟鞋,慢速行走。以前一起出差,她基本跟不上我的步伐。道波帮我把东西拿回家,我也顺手分送给她一袋。我们平时经常交换食品。我送她喜欢的铁观音,而她做的菜也经常倒腾到我这里。这种事进行过多少年都记不清了。她做的藕夹和珍珠元子,是我们的最爱。住文联大院里最大好处,就是不缺吃的。 北京同学在群里转发一帖,乃武汉疫情防控指挥部的18号令,问怎么回事?马上有知情同学解读说,先发了17号令。发错了,现在改正。18号令是为否定17号令而发的。坏事传千里这句话,真是没说错。很快就看到网上有教授解读“朝令夕改”这一成语。然后说,这简直不是朝令夕改,而是朝令午改呀。唉,全国人民都盯着武汉,而武汉偏偏昏招频出,真…

Read More Read More

阿里玄难:面向不确定性的软件设计几点思考

阿里玄难:面向不确定性的软件设计几点思考

閱讀本文約花費: 19 (分鐘) 在纷繁复杂的业务发展中,变化已成为了唯一的不变。如何保障基础设施的安全、高可用性,同时提供高效的创新支持?今天,阿里副总裁、业务平台事业部掌门人玄难,结合阿里巴巴业务平台建设和个人多年大型软件设计经验,提炼成几点思考,希望对大家的软件架构设计有所启发。 玄难 阿里副总裁 业务平台事业部掌门人 特别说明:本文中所说的软件都指代面向最终用户的偏业务的软件,不包含操作系统、中间件等系统软件。 1、软件发展的几个阶段 软件工具和信息化阶段:软件最早是为了数值计算,以工具的形态出现的。包括PC时代我们非常熟悉的Excel,Word这些好东西。以及典型的企业内部管理的信息系统,例如:企业流程审批、进销存管理系统等等。 互联网服务阶段:随着PC互联网兴起,淘宝、QQ、Google、新浪这些全新的互联网服务逐步进入了我们的日常生活。 社会基础设施阶段:随着移动互联网、IOT、人工智能的出现和高速发展,各种各样的软件进入社会经济生活的方方面面,软件之间相互连接,构成了一个纷繁复杂的生态系统,变成了不可或缺的社会基础设施。 随着软件形态的变化,过去非常高效的系统架构和组织形态遇到了全面的挑战。因为我们所处的环境已经从量变到质变,突破临界点,产生了本质的不同。 阿里巴巴就是这个过程中的典型代表。从过去单一的电商业务演变成了复杂的经济体,没有了确定性的业务边界,蓬勃发展的…

Read More Read More

阿里云ACP考试认证心得+须知

阿里云ACP考试认证心得+须知

閱讀本文約花費: 8 (分鐘)一、 简介 阿里云针对不同产品类别、用户行业、用户成长阶段,精心打造不同的认证考试。 二、 阿里云认证体系 助理工程师(ACA),Alibaba Cloud Certified Associate获得此认证,证明您可以进行阿里云基础产品的使用和管理; 认证工程师(ACP),Alibaba Cloud Certified Professional获得此认证,证明您可以基于阿里云产品解决企业的基本业务问题; 认证高级工程师(ACE),Alibaba Cloud Certified Expert获得此认证,证明您可以基于阿里云产品进行架构设计并解决业务发展中的主要问题。 ACP认证目前又按专业方向分四种 云计算(主要对应阿里云基础架构产品)、 大数据(主要对应阿里云大数据系列产品)、 云安全(主要对应阿里云云盾系列产品)、 企业级互联网架构(主要对应阿里云企业级中间件系列产品)。 目前主流的认证是阿里云云计算ACP认证,适用范围最广、考试难度较小,是面向使用阿里云云计算产品的架构、开发、运维人员的专业技术认证。大数据、安全、企业级互联网架构,这三个各侧重于一个方向,适合该方向的从业者考取。 三、 考前购买须知(下面以阿里云云计算ACP专业认证为例) 1.去云市场购买阿里云云计算ACP专业认证考试授权码,目前的云计算ACP价格为1200元,ACE价格为1920…

Read More Read More