`
youyu4
  • 浏览: 425499 次
社区版块
存档分类
最新评论
文章列表
互联网一致性架构设计 -- 库存扣除一致性     业务复杂、数据量大、并发量大的业务场景下,典型的互联网架构,一般会分为这么几层: 调用层,一般是处于端上的browser或者APP 站点层,一般是拼装html或者json返回的web-server层 服务层,一般是提供RPC调用接口的service层 数据层,提供固化数据存储的db         扣除库存的过程   对于库存业务,一般有个库存服务,提供库存的查询、扣减、设置等RPC接口:       1. 库存查询,stock-service本质上执行的是         select num ...

金钱观

金钱观     导读:谈钱不伤感情(影响夫妻关系的5种金钱人格)            这是一本关于金钱与夫妻关系的书。我们都知道美国的离婚率大约为 50%,而有近 70%的 离婚夫妇说,他们之所以离婚,主要是因为金钱问题。那么中国的情况又如何?我们身边是 否也有很多夫妻因为金钱的问题而争吵不断呢?          每个人考虑和处理金钱问题的方式都是独特的,我们称之为金钱人格,每对夫妻之间都存在 着金钱关系,这种关系会对他们的婚姻生活产生全面的影响。          所以,本书的主要目的在于,引导夫妻双方意识到自己的金钱人格,以求停止有关金钱的争 吵,一起努力 创建他们 ...
互联网一致性架构设计 -- 事务一致性     按业务区分   单库事务 多库事务       例子:用户下了一个订单,需要修改余额表,订单表,流水表       单库事务   start transaction; CURDtable t_account; any Exception rollback; CURDtable t_order; any Exceptionrollback; CURDtable t_flow; any Exceptionrollback; com ...
互联网一致性架构设计 -- 消息时序一致性     为什么时序难以保证,消息一致性难?         原因   时钟不一致 多客户端(发送方) 服务集群(多接收方) 网络传输与多线程       时钟不一致          分布式环境下,有多个客户端、有web集群、service集群、db集群,他们都分布在不同的机器上,机器之间都是使用的本地时钟,而没有一个所谓的“全局时钟”,所以不能用“本地时间”来完全决定消息的时序。
互联网一致性架构设计 -- 冗余表数据一致性     需求分析          互联网很多业务场景的数据量很大,此时数据库架构要进行水平切分,水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非patition key上的查询可能就需要扫描多个库了。   例如订单表,业务上对用户和商家都有订单查询需求:       Order(oid, info_detail)     T(buyer_id, seller_id, oid)       1. 如果用buyer_id来分库,seller_id的查询就需要扫描多库。   ...
互联网一致性架构设计 -- DB和Cache一致性     需求分析   下面两种情况会出现脏数据:       单库情况下       服务层的并发读写,缓存与数据库的操作交叉进行,这种情况虽然少见,但理论上是存在的,后发起的请求 ...
互联网一致性架构设计 -- DB双主一致性            MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。          解决方法          在一 ...
互联网一致性架构设计 -- DB主从一致性     需求分析          大部分互联网的业务都是 “ 读多写少 ” 的场景,数据库层面,读性能往往成为瓶颈。如下图:业界通常采用 “ 一主多从,读写分离,冗余多个读库 ” 的数据库架构来提升数据库的读性能。       这种架构的一个潜在缺点是,业务方有可能读取到并不是最新的旧数据:   系统先对DB-master进行了一个写操作,写主库 很短的时间内并发进行了一个读操作,读从库,此时主从同步没有完成,故读取到了一个旧数据 主从同步完成         解决方法   半同步复制 强制读主 数据 ...
互联网一致性架构设计 -- session一致性     session是什么          服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。          Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,以保持登录状态。         什么是session一致性问题          当只有一台web-server提供服务时,每次http短连接请求,都能够正确路由到存储session的对应web ...
缓存架构设计     需求分析       缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。       例如对于用户的余额信息表account(uid, money),业务上的需求是:   查询用户的余额,SELECT money FROM account WHERE uid=XXX,占99%的请求 更改用户余额,UPDATE account SET money=XXX WHERE uid=XXX,占1%的请求     由于大部分的请求是查询,我们在缓存中建立uid到money的键值对,能够极大降低数据库的压力。     ...
DNS轮询是否可被完全替代     有人会有以下观点   nginx前端加入lvs和keepalived可以替代“DNS轮询” F5能搞定接入层高可用、扩展性、负载均衡,可以替代“DNS轮询”     “DNS轮询”究竟是不是过时的技术,是不是可以被其他方案替代,接入层架构技术演进,是本文将要细致讨论的内容。         问题域       nginx、lvs、keepalived、f5、DNS轮询,每每提到这些技术,往往讨论的是接入层的这样几个问题:   可用性:任何一台机器挂了,服务受不受影响 扩展性:能否通过增加机器,扩充系统的性能 反向代理 ...
专注的重要性            成功和非常成功的区别,在于一个词:专注;这是巴菲特和比尔盖茨都共同提出的观点。     什么是专注?          专注并不意味着短视,反而需要你用更宽阔的视野去了解自己当下要做什么,以及为什么要这么做。专注也不是指在很长的一段时间内僵化地重复一件事;实际上,要做大事,你必须根据经验教训做出明知的迭代和修正。       专注包含以下方面   立长志(而不是常立志) 基于目标提炼行动 持之以恒的收集信息和数据 基于反馈修生目标       专注的优势   更具执行力 学习能力更强 进步更快 更自信 ...
互联网架构 -- 负载均衡     什么是负载均衡          负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。         常见的负载均衡方案          常见互联网分布式架构分为:客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问每一个下游,就能实现“将请求/数据【均匀】分摊到多个操作单元上执行”。         【客户端层->反向代理层】的负 ...
互联网架构 -- 高并发            高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。     高并发的标准   响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。 吞吐量:单位时间内处理的请求数量。 QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。 并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。   ...
互联网架构 -- 高可用     什么是高可用          高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。     高可用标准   假设系统一直能够提 ...
Global site tag (gtag.js) - Google Analytics