- 浏览: 441711 次
最新评论
-
liaodongdakai:
Java读源码之Netty深入剖析网盘地址:https://p ...
java Netty 之 字符串消息收发(ChannelBuffer) -
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
java Netty 之 教学视频 -
ccqy66:
感觉步骤1的描述有问题吧,aof重写时是不会读原aof文件是, ...
Redis的AOF重写机制 -
dick1305:
没有了,能否再提供一个下载地址。谢谢。
java Netty 之 教学视频 -
dick1305:
...
java NIO 之 mina 和 netty
文章列表
互联网一致性架构设计 -- 库存扣除一致性
- 博客分类:
- 架构--学习
互联网一致性架构设计 -- 库存扣除一致性
业务复杂、数据量大、并发量大的业务场景下,典型的互联网架构,一般会分为这么几层:
调用层,一般是处于端上的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双主一致性
- 博客分类:
- 架构--学习
互联网一致性架构设计 -- DB双主一致性
MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。
解决方法
在一 ...
互联网一致性架构设计 -- DB主从一致性
- 博客分类:
- 架构--学习
互联网一致性架构设计 -- 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轮询是否可被完全替代
- 博客分类:
- 架构--学习
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)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
高可用标准
假设系统一直能够提 ...