几千万记录,数据库表结构如何平滑变更? | 答水友问
问题域:数据量大、并发量高场景,如何在流量低峰期,平滑实施表结构变更?画外音,一般来说,是指增加表的属性,因为:(1)如果是减column,升级程序不使用即可;(2)如果是修改column,程序兼容性容易出问题;首先,一起看下有哪些常见方案。方案一:在线修改表结构。画外音:altertableadd
每秒20W次并发分词检索,架构如何设计?
提问。==沈哥,我们有个业务,类似于“标题分词检索”,并发量非常大,大概20W次每秒,数据量不是很大,大概500W级别,而且数据不会频繁更新,平均每天更新一次,请问有什么好的方案么?==这是一个典型的,短文本分词搜索的问题,简单聊聊自己的经验。常见的文本检索方案有哪些?(1)数据库LIKE法将标题数
每秒30W次的点赞业务,怎么优化?
提问,30WQPS的点赞计数业务,如何设计?可以看到,这个业务的特点是:(1)吞吐量超高;(2)能够接受一定数据不一致;画外音:计数有微小不准确,不是大问题。先用最朴素的思想,只考虑点赞计数,可以怎么做?有几点是最容易想到的:(1)肯定不能用数据库抗实时读写流量;(2)redis天然支持固化,可以用
盘口数据频繁变化,100W用户如何实时通知?
提问:盘口数据频繁变化,如何做缓存与推送,如何降低数据库压力?并没有做过相关的业务,结合自己的架构经验,说说自己的思路和想法,希望对大家有启示。一、业务抽象(1)有很多客户端关注盘口,假设百万级别;(2)数据量不一定很大,上市交易的股票个数,假设万级别;(3)写的量比较大,每秒钟有很多交易发生,假设
几万条群离线消息,如何高效拉取,会不会丢?
提问:(1)群离线消息是推还是拉?(2)几万条群离线消息,怎么保证不丢失?群离线消息,是推还是拉?关于写扩散、读扩散的问题,之前专门撰文写过,今天不直接同步结论,重点说说设计的思考过程。画外音:结论不如思路重要。假如群离线是推,流程应该如何?会遇到什么问题?先看看群离线消息的核心数据结构。群成员表:
粉丝关系链,10亿数据,如何设计?
什么是关系链业务?关系链主要分为两类,弱好友关系与强好友关系,两类都有典型的互联网产品应用。弱好友关系的建立,不需要双方彼此同意:用户A关注用户B,不需要用户B同意,此时用户A与用户B为弱好友关系,对A而言,暂且理解为“关注”;用户B关注用户A,也不需要用户A同意,此时用户A与用户B也为弱好友关系,
处理亿级数据的“定时任务”,如何缩短执行时间?
问题抽象:(1)用户会员系统;(2)用户会有分数流水,每个月要做一次分数统计,对不同分数等级的会员做不同业务处理;数据假设:(1)假设用户在100w级别;(2)假设用户日均1条流水,也就是说日增流水数据量在100W级别,月新增流水在3kW级别,3个月流水数据量在亿级别;常见解决方案:用一个定时任务,
用单库自增键来生成id了,后期怎么分库?哎,这个坑大!
沈老师,我们现在用户中心是单库单表,uid使用数据库自增主键,uid被很多业务关联,不能变化。现在用户中心数据量逐步变大,有分库需求了,如何由单库升级为多库,保持历史uid不变,并且新生成的数据不冲突,有什么好办法么?==问题描述完==应该有不少公司都会利用数据库“插入数据自动自增id”来作为业务i
1000亿文本信息,高并发MD5查询,这么大数据量的业务怎么弄?
沈老师,你好,想请教一个身份证信息检索的问题。公司有一个每秒5万并发查询的业务,(假设)根据身份证MD5查询身份证信息,目前有1000亿条数据,纯文本存储,前几天看你写LevelDB,请问这个业务能利用LevelDB内存数据库进行存储么?有没有其他优化方案?画外音:LevelDB《内存KV缓存/数据
30亿日志,检索+分页+后台展示,你是否遇到过更奇葩的需求?
沈老师,你好,想请教一个数据库查询日志,前台页面显示的问题。需求:(1)按照某些特定检索条件查询日志;(2)通过前台Web页面查询并显示相关日志信息;(3)检索需求包含用户,时间段区间,类型等特定字段;希望做到:(1)查询速度尽可能快;(2)支持分页查询;目前方案:日志信息存储在Oracle中,根据
高速飞机上换引擎,MQ如何实现平滑迁移?
一、MQ架构简述如上图,使用MQ异步通信,一般分为三层:消息发送方:使用MQ客户端生成消息。MQ-client::SendMsg(topic,msg);MQ服务:中转消息。消息接收方:使用MQ客户端消费消息。MQ-client::RecvMsg(topic,msg,CALLBACK_FUNC);这是
即时抽奖,等概论中奖,如何实现?哇卡,这个有点意思。
需求抽象一下:(1)前100个人有资格,假设抽出N=5个奖品;(2)报名就出奖,不用等100人到齐;(3)每个人概率一样,礼物平均发放;(4)有一个特例;花1分钟说下解决方案。画外音:文末会有一个更有意思的问题。特例怎么处理?用一个特殊的逻辑分支处理。报名就可以抽,不用等人齐,意味着什么?奖品可能发
故障转移,服务发现,负载均衡,居然都和它有关!!!
没错,说的就是连接池,玩互联网架构,连接池是必须要掌握的。什么是连接池?创建与管理连接缓冲池的技术,本质是资源复用,不用频繁创建与销毁连接,能提高性能。画外音:数据库连接池,服务连接池,都是连接池。微服务分层架构中,连接池扮演着极其重要的角色。如上图:(1)上层虚线框,是web集群;(2)下层虚线框
APP还在用域名连接后端?用IP提速N倍!
无线时代,网络稳定性差,应用流量敏感,APP与Server之间每次HTTP请求都需要进行DNS解析,有没有可能直接使用IP来提速呢?典型HTTP请求处理过程如何?第一步,客户端访问DNS服务器,由域名拿到Nginx的外网IP;第二步,客户端使用外网IP访问Nginx;第三步,Nginx将请求分发给实
微服务架构,多“微”才合适?
以前的文章讨论过《互联网架构,究竟为啥要做服务化?》,随着数据量、并发量、业务复杂度的增长,互联网架构会出现以下问题:代码到处拷贝底层复杂性扩散基础库(so/jar/dll)耦合SQL质量得不到保障,业务相互影响数据库耦合“服务化”是一个很好的解决上述痛点的方案。那么问题来了,微服务架构多“微”才合
互联网架构“高并发”到底怎么玩?
最近留言问“高并发”的朋友颇多,公众号又不支持历史文章检索,故重新优化发布,希望大家有收获。什么是高并发?高并发(HighConcurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关的常见指标有哪些?响应时间(Respons
究竟啥才是互联网架构“高可用”
最近留言问“高可用”的朋友颇多,找历史文章又找不到,故重新优化发布,希望大家有收获。一、什么是高可用高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%%。如果系
1万属性,100亿数据,每秒10万吞吐,架构如何设计?
有一类业务场景,没有固定的schema存储,却有着海量的数据行数,架构上如何来实现这类业务的存储与检索呢?58最核心的数据“帖子”的架构实现技术细节,今天和大家聊一聊。一、背景描述及业务介绍什么是58最核心的数据?58是一个信息平台,有很多垂直品类:招聘、房产、二手物品、二手车、黄页等等,每个品类又
数据库软件架构,到底要设计些什么?
一、基本概念概念一:单库概念二:分片分片解决“数据量太大”这一问题,也就是通常说的“水平切分”。一旦引入分片,势必面临“数据路由”的新问题,数据到底要访问哪个库。路由规则通常有3种方法:(1)范围:range优点:简单,容易扩展。缺点:各库压力不均(新号段更活跃)。(2)哈希:hash优点:简单,数
互联网架构,究竟为什么需要配置中心?
配置中心是互联网架构体系中很重要的一块,但为什么会有配置中心,是不是一开始就要有配置中心,它究竟解决什么问题,这是今天要讨论的问题。随着互联网业务的越来越复杂,用户量与流量越来越大,“服务化分层”是架构演进的必由之路。如上图,站点应用会调用服务,上游服务调用底层服务,依赖关系会变得非常复杂。对于同一