摘要: 市面上绝大多数的系统都具有充值(支付)功能。具有自有账户体系的系软件统往往还具有提现(代付)功能。支付/代付对接大休上可以分为四个阶段 第一阶段:支付代码嵌入到业务代码 优点:简单,无分布式事务问题 缺点:伸缩性差,可扩展性差,项目管理角度来看不好明确分工 第二阶段:服务化,单独的支付服务 优点:伸 阅读全文
posted @ 2017-11-04 22:03 彭彭(moext.com) 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 在微服务架构流行的今天,一次交易需要跨越多个服务和数据库来实现,而分布式事务是我们必须要面对的难点之一。面试时我也喜欢问候选人对分布式事务的理解及解决方案,有些候选人一上来就大谈特谈MQ,甚至连哪个MQ性能更好都谈到了。我说,除了MQ呢,候选人就回答不上来了。 分布式事务的产生 以下单扣钱扣库存为倒 阅读全文
posted @ 2017-10-25 22:09 彭彭(moext.com) 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 高可用是互联网应用一直在追求的指标之一(高性能、易伸缩,易扩展是另外三个),追求100%的高可用是不现实的,通常一个系统能达到99.99%的高可以就可以认为非常不错了。高可用的实现理论基础在于冗余,而对于数据库,Redis这些有状态的中间件,要实现高可用除了冗余外还需要一个核心的功能:复制。下图是一 阅读全文
posted @ 2017-10-23 20:18 彭彭(moext.com) 阅读(1267) 评论(0) 推荐(0) 编辑
摘要: 背景: 交易系统账户服务,存在着A与B之间互相转账的需求,如一笔转账交易 (A+100元,B 100元),A和B其中一方可以为普通用户,也可以为商户,两种角色都可以加款,可以扣款,余额不允许扣成负数。 方案1: 每次按账户ID更新余额表。 为了防止对某账户余额的并发更新,可以采用悲观锁机制,如: 锁 阅读全文
posted @ 2017-10-19 20:21 彭彭(moext.com) 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 多数业务系统都自带用户登陆模块,而其中最常见的登陆方式为用户名+密码,常见的安全性考虑浅析如下 1、当用户输入不存在的用户名时,提示“用户名不存在”更友好? 容易让攻击者尝试出存在的用户名,具有安全隐患。请统一提示:用户名或密码错误 2、当发现某恶意请求后,限IP? 某广告:每日代理IP量可达100 阅读全文
posted @ 2017-10-18 20:36 彭彭(moext.com) 阅读(912) 评论(0) 推荐(1) 编辑