博客

缓存与数据库一致性保证 问题来了: 当数据money发生变化的时候: ①是更新缓存中的数据,还是淘汰缓存中的数据呢? ②是先操纵数据库中的数据再操纵缓存中的数据,还是先操纵缓存中的数据再操纵数据库中的数据呢? 更新缓存 VS 淘汰缓存 问:数据变化时,到底是选择更新缓存还是淘汰缓存? 答:主要取决于…

继续阅读

用搜索引擎和缓存来缓解读库的压力 数据库做读库的话,常常对模糊查找力不从心,即使做了读写分离,这个问题还未能解决。 以我们所举的交易网站为例,经常根据商品的标题来查找对应的商品。对于这种需求,一般我们都是通过like功能来实现的,但是这种方式的代价非常大。此时我们可以使用搜索引擎的倒排索引来完成。 …

继续阅读

应用的拆分与服务化 随着业务的发展,应用越来越大。我们需要考虑如何避免让应用越来越臃肿。这就需要把应用拆开,从一个应用变为俩个甚至更多。 我们把公共的服务拆分出来,形成一种服务化的模式,简称SOA。 问题: ①SOA的优点是什么? ②SOA之间如何通信? 微服务架构 为什么要服务化(优点)? ①防止…

继续阅读

跨库Join的问题 在拆分之前,系统中很多列表和详情页所需的数据是可以通过sql join来完成的。而拆分后,数据库可能是分布式在不同实例和不同的主机上,join将变得非常麻烦。 全局表 系统中所有模块都可能会依赖到的一些表在各个库中都保存。 字段冗余 “订单表”中保存“卖家Id”的同时,将卖家的“…

继续阅读

垂直和水平拆分 拆分的方式分两种: 垂直拆分:按功能或业务将原来一个表中的内容拆分成多个表,或者一个库拆分成多个库。 水平拆分:将同类型的数据分别存放与相同结构的多个表中。 垂直拆分库 垂直拆分表 水平拆分表 水平拆表拆库

数据库读写分离 Mysql复制原理 负载容量的规划 上面的答案是1台主3台从。分析如下: 2倍的负载就是提高到 1000 X2 =2000次的查询 2000 x 20% = 400 次的写操作 80% X 1000 X 2 =1600 次的读操作 将1600的读操作转移到从库上去,每台从库支持100…

继续阅读

负载均衡的常见策略 轮循(Round Robin) 能力比较弱的服务器导致能力较弱的服务器最先超载。 加权轮循(Weighted Round Robin) 这种算法解决了简单轮循调度算法的缺点:传入的请求按顺序被分配到集群中服务器,但是会考虑提前为每台服务器分配的权重。 最少连接数(Least Co…

继续阅读

负载均衡中如何维护用户的session会话? 把同一个用户在某一个会话中的请求,都分配到固定的某一台服务器中,常见的负载均衡算法有ip_hash法。 Session数据集中存储。session数据集中存储就是利用数据库或者缓存来存储session数据,实现了session和应用服务器的解耦 。 使用…

继续阅读

QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务…

继续阅读

负载均衡 什么是负载均衡? 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据【均匀】分摊到多个操作单元上执行,负载均衡的关键在于【均匀】。 负载均衡架构

750/1491