首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谈谈系统设计的面试

作为一个已有系统的优化项目,不了解现有系统的架构,历史(演变的过程和演变的原因,当然,面试这个可以省去)而立刻上手设计都是耍流氓。...web 服务器,应用服务器,数据库服务器等之间的关系以及数量? 现在有没有使用类似于 redis / memcached 的缓存服务器?如果有,它们用来处理什么任务?...capacity 因问题而异,在这例子,起码要考虑 1) 缓存系统每秒的处理能力 2) 缓存系统的容量。...「很快」是个很虚的概念,我于是问这个面试者你觉得 redis 对于 1k 大小的value, commodity hardware 上做 GET 操作每秒钟的 QPS 是多少?...这种分级缓存的思路很多系统中都能见到,比如 TLB(不过多级 TLB 主要是为了节省内存)。 设计是否有优化的地方?

1.7K60

Redis压缩列表原理与应用分析

,从而达到节省内存的效果,这么介绍有点玄乎,我们先一起看看它的实现原理吧,Redis3.2版本,作者对压缩列表的实现在ziplist.h和ziplist.c。...相信到这里,我们都明白了压缩列表的原理,压缩列表并不是对数据利用某种算法进行压缩,而是将数据按照一定规则编码一块连续的内存区域,目的是节省内存。下面我们看看压缩列表Redis的应用领域。...Redis数据结构类型与压缩列表的应用 上表总结了压缩列表编码Redis不同的数据类型的应用,Redis一共支持五种数据结构类型,其中有三种数据结构一定条件下会应用压缩列表,至于什么条件后面会分析...key数量有没有达到一个数值(条件),或者是value值长度有没有达到一定的长度(条件)。...然而压缩列表利用巧妙的编码技术除了存储内容尽可能的减少不必要的内存开销,将数据存储于连续的内存区域,这对于Redis本身来说是有意义的,因为Redis是一款内存数据库软件,想办法尽可能减少内存的开销是Redis

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

什么是内存数据库以及它如何有效保存数据

这种数据库的一个好例子就是Memcached。 但是,如果内存数据库重启或崩溃后,如何恢复数据?如果只要一个内存数据库,那就没有办法了。一台机器停机 - 数据全部丢失。...这里的秘诀是,您仍然将内容保留在内存,但另外,您可以事务日志对磁盘上的每个操作进行持久化。如下图: ?...它们通常可以每秒完成大约100次随机操作。 如果您将每个字节字节的写入HDD的随机位置,则可以在这种情况下看到磁盘的吞吐量的峰值大概一秒钟100字节。再者,每秒钟只有100个字节!...连续访问每秒提供200-300兆字节,随机访问每秒提供1,000-10,000次查询,即四到五个数量级。 因此,我们的内存数据库会以每秒100 MB的事务刷到磁盘。这够快吗?真的很快。...如果一个事务大小是100字节,那么这将是每秒一百万个事务!这个数字非常高,您可以肯定地确保磁盘永远不会成为内存数据库的瓶颈。

2.4K50

优化SqlServer--数据压缩

减少数据库占用的磁盘空间量将减少整体数据文件存储空间,一下几个方面增加吞吐量:      1.更好的I/O利用率,每个页面可以读写更多的数据。     ...行压缩:压缩可以改变格式的存储固定值数据类型--也就说包含一个字节的值的4字节列可以压缩为1字节,1字节的列不能再压缩,但是null和0值不占字节。  ...with (DATA_COMPERSSION=PAGE)               添加 ALTER TABLE 表名 REBUILD with (DATA_COMPERSSION=PAGE)    估计节省空间...;          Pages compressed/sec:计算每秒压缩的页面数。...4.索引的非叶子也只能使用行压缩进行压缩。         5.非群集索引不继承标的压缩设置。         6.再删除群集索引时,表将保持这些压缩设置。

80771

音视频开发基础知识(2)——最通俗易懂的视频编解码理论知识

Stride Stride也可以称之为跨距,指的是图像存储时内存每行像素所占用的 空间。跨距为了能够快速读取一行像素,我们一般会对内存的图像实现内存对齐,比如16字节对齐。...视频,一个帧(Frame)就是指一幅静止的画面。帧率,就是指视频每秒钟包括的画面数量(FPS,Frame per second)。...宏块 每一帧图像,又是划分成一个个块来进行编码的,这一个个块H264叫做宏块,而在VP9、AV1 称之为超级块,其实概念是一样的。...我们知道声音可以表达成一种随着时间的推移形成的一种波形: 但是如果想要直接描述这样的一个曲线存储到计算机,是没有办法描述的。...采样的过程就是抽取某点的频率值,很显然,一秒内抽取的点越多,获取得频率信息更丰富。

84421

软硬件融合技术内幕 终极篇 (13) —— 飞鸽传书的背后 ()

在上期,我们提到了,现代的计算机,为了提升数据传输的速率,突破并行总线的限制,把内存总线和PCI总线都进行了串行化。...但是,这种方式也有两个弊病: 如果一个帧(字节)中有2个bit的误码,则奇偶校验会失效; 无法恢复传输的正确内容,1个bit的误码会造成整帧错误,也就是一定的误码率会被放大一个数量级; 那么,有没有合适的方法对其进行改进呢...工作8.0 GHz的PCI-E 3.0传输,每通道每秒理论上最多可传输7.877Gb的数据链路层数据。...而万兆以太网使用的是66b/64b编码,工作10.3125GHz,每通道每秒理论上最多可传输10Gb的数据链路层数据。...那么,有没有更好的办法来进一步提升计算机与其他设备的数据传输速率呢? 请看下期。

45620

【愚公系列】2021年12月 Redis数据库-Redis的配置

AOF持久化 工作方式 :以日志的形式记录所有更新操作到AOF日志文件,redis服务重新启动时会读取该日志文 件来重新构建数据库,以保证启动后数据完整性。...优势 :AOF提供两种同步机制,一个是fsync always每次有数据变化就同步到日志文件和fsync everysec每秒同步一次到日志文件,最大限度保证数据完整性。...,默认数据库为0 ############### 快照方式 ############### save 900 1 #900s(15m)之后,至少有1个key发生变化,则快照 save...300 10 #300s(5m)之后,至少有10个key发生变化,则快照 save 60 10000 #60s(1m)之后,至少有1000个key发生变化,则快照 rdbcompression...64 #哈希表每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间 list-max-ziplist-entries 512 #list数据类型多少节点以下会采用去指针的紧凑存储格式

21930

Web服务器带宽的选择

我们浏览的网页,大多由文字和图片组成,一个汉字才 2 个字节,图片经过压缩,通常也几十 KB 左右。只要页面内容不是特别多的话,1M 带宽的速度,跟 5M 带宽的打开速度没有什么差别。...根据用户每秒请求数据量的大小估算接口类的用户,每秒请求 10 次,每次数据量是 50 个汉字(100字节),那这 1M 的带宽,可以承载的用户数量约为:128*1000/10/100 = 128 个用户...用户需接收图片,假设每秒下载一次图片大小为 10KB,那么可以同时承载 12.8 人。...如果是个人博客网站,一篇文章 1000 字,还会配 2 张图,那么这一篇文章大小 100KB 左右,相当于每秒可以接收一个用户的访问。...有人会说,1M 带宽用那么久了,都有“情怀”在里面,不想换,又不想影响用户体验,有没有办法?有,使用 CDN。

6.2K50

Z大牛 | 谈谈Zabbix的容量规划

如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。...比如,如果我们有3000个监控项(item),监控周期是60s,经计算所得,每秒处理值的数量为3000/60 = 50. 这意味着每秒钟有50个新值写入Zabbix数据库。...根据数据库的类型,Zabbix数据库需要为每组值总共占用约90字节的空间。...,依赖于数据库引擎,一般大约90字节。...数据库大小根据回收清理(housekeeper)设置,某些时间点增长或停止增长。 根据上述公式,可计算出Zabbix需要使用的空间。同时,考虑到后续的扩容,建议预留至少20%的冗余量。

1.4K40

如何设计一个短网址系统

1.为什么需要短链接 短链接主要用来为长链接生成更短的别名,用户点击短链接会重定向到原来的长链接,显示、打印、发送消息、发送推文等场景下,短链接节省了很大的显示空间,更重要的是,用户不太可能去拒绝输入一个短链接...100 KB: 200 * 500字节= 100 KB / s 对于读请求,由于我们期望每秒进行约 20 K 的 URL 重定向,因此我们的总传出数据的服务将是每秒 10 MB: 20K * 500字节...5.数据库设计 面试的早期阶段定义数据库模式将有助于理解数据各个组件之间的交互,并指导数据分区。 我们要存储的数据有以下特点: 我们需要存储海量的数据,比如上亿条记录。...一种方法是基于范围的分区:我们可以根据网址的第一个字母或 url 的哈希值 将网址存储单独的分区,比如将所有以字母“ A”开头的网址保存在一个分区,字母“ B”开头的保存在另一个分区,依此类推。...我们可以系统的三个位置添加一个负载平衡器(LB) : 客户端和应用程序服务器之间 应用程序服务器和数据库服务器之间 应用程序服务器和缓存服务器之间 最初,我们可以使用简单的 Round Robin

1.7K10

字节的奥秘

在数码产品,最常见的名词就是“字节”了。不管是U盘容量、手机存储空间,还是网络带宽,下载速度,都会涉及所谓“字节”这个单位。但到底“字节”是一个什么东西呢?...而“字节”(英文叫“byte”),则是由八个“位”组合成的另外一个单位。 ? [三位二进制数表示的8个序列的八卦] 1.1.3最小信号盒子 第一章,我们讲过,世界上所有的信息都能用数字来表达。...1.2 KMGT 1.2.1容量和速度的单位 各种各样的数码产品,一般都会有两个指标:一是速度,一是容量。...U盘上我们细心点看标签,有些会写上“USB2.0”或“USB3.0”,这个就是表示速度的指标。 USB2.0标准,表示电脑可以以每秒30M个字节的速度,与U盘传输数据。...节省空间的压缩,要付出CPU计算时间为代价,这就是计算机世界的时空交换原则:你要节省空间,就要付出时间,反之亦然。

1.2K50

客快物流大数据项目(八十六):ClickHouse的深入了解

基准测试超过了目前很多主流的列式数据库ClickHouse集群的每台服务器每秒能处理数亿到十亿多行和数十千兆字节的数据ClickHouse会充分利用所有可用的硬件,以尽可能快地处理每个查询单个查询...ClickHouse提供了丰富的数据类型、数据库引擎和表引擎,它所存储的表类似于关系型数据库的表,默认情况下使用结构化方式节点本地存储表的数据,同时支持多种数据压缩方式ClickHouse独立于Hadoop...生态系统,不依赖Hadoop的HDFS,但可以扩展HDFS进行数据查询,ClickHouse还支持查询Kafka和MySQL的数据ClickHouse目前已经很多大型企业得到了充分的生产验证,其存储...,没有必要修改读取数据时,会从数据库中提取出大量的行,但只用到一小部分列表很“宽”,即表包含大量的列查询频率相对较低(通常每台服务器每秒查询数百次或更少)对于简单查询,允许大约50毫秒的延迟列的值是比较小的数值和短字符串...(例如,每个URL只有60个字节处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行)不需要事务数据一致性要求较低每次查询只会查询一个大表。

1.2K121

高性能 AMD 云主机如何选?AWS、谷歌云、UCloud、腾讯云测试大 PK | 技术

高性能云主机的常用配置,我们对四家云商分别选择了 8 核 32G 和 2000G 数据盘。...UCloud 相比腾讯云和 Google 云可减少 0.88 秒~ 1.48 秒的 CPU 耗时,比 AWS 可节省大约 4.57 秒的运行时间。...本次内网性能测试,我们使用了 Netperf 网络性能测试工具,通过 8 台辅助机和 1 台测试机,使用 UDP 协议+小包,小包大小为 1 字节同等情况下,统计测试机每秒收到包的数量。...我们使用 sysbench 基准测试工具对数据库中一个表存放 2000 万条数据,并同时开启 500 个线程,得出结果数据:每秒请求数 QPS 与每秒事务数 TPS 越大,则表现越好;测试耗时与平均时延越小...QPS 和 TPS 作为衡量数据库性能的关键指标,也是云主机性能的直接体现。

2.8K20

从CPU角度理解Go的结构体内存对齐

大家写Go时有没有注意过,一个struct所占的空间不见得等于各个字段加起来的空间之和,甚至有时候把字段的顺序调整一下,struct的所占空间又有不同的结果。...T1结构体各字段的顺序是按int8、int64、int32定义的,所以把各字段在内存的布局应该形如下面这样:因为第2个字段需要8字节,所以会有一个字节的数据排列到第2个字。...以T1结构体为例,实际存储数据的只有13字节,但实际用了24字节,浪费了将近一半,那有没有什么办法既可以做到内存对齐提高CPU读取效率又能减少内存浪费的吗? 答案就是调整struct字段的顺序。...: 我们看到,通过调整结构体的字段顺序确实节省了内存空间,那我们真的有必要这样节省空间吗?...以student结构体为例,经过重新排列后,节省了16字节的空间,假设我们程序需要排列全校同学的成绩,需要定义一个长度为10万的Student类型的数组,那剩下的内存也不过16MB的空间,跟现在个人电脑的

61420

Canal+Otter - 前日篇(2)

我们这里分析MySQL5.6以后的默认引擎InnoDB。 InnoDB引擎结构: ? 1. 内存: innoDB 将数据库文件按页读取到内存,按照最少使用算法。来保留数据。...查询缓冲:查询缓冲的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓冲检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。...由于innoDB处理更新是脏页,而且脏页是存在于内存,如果断电,则会丢失。为了防止这个问题,引入了redo log:将每次的页面修改存入redo log。...由于master thread每秒都会将log缓存刷入,所以我们可以认为log的记录一定比数据库的更新一些。异常断电重启时,mysql会根据checkpoint检查redo log来做恢复。...释放全局锁 Binlog文件: 文件头 四字节 Magic Number,用来识别是正常的binlog文件 事件 文件头之后,跟随的是一个一个事件依次排列。

65730

一日一知:架构到底是什么?

如何管理数据流:数据是直接写进数据库还是先进消息队列再进数据库每秒钟1000万个请求,怎么把请求划分到不同的服务器?你现在的基础设施能不能扛住这么大的并发量?...二、问题解答 1 请问下有没有工具或方法可以一次查询多个git项目(本地文件路径),提示哪些是已修改但没有提交的项目。...3 playwright怎么判断页面上有没有某个元素呢?如果判断有某个元素就执行相应的操作,没有就下一步。...这些详细信息我希望要每天更新(重新爬取),请问应该怎样设计数据库的表比较合理? 目前的做法是把所有商品的详细信息放入一个表,按录入时间来区分,这样就可以按照时间段来查询商品的价格走势。...停止,客户端可以web上获取爬取任务,然后跑回传。获取任务的用的get post,客服端那边不能直接链接数据库。所以纠结有啥好的解决办法。思路没,或者是一些可以参考的实例这样。

62220

现有1亿个用户10天的签到情况,你能统计出这10天连续签到的用户总数吗?

Web 和移动应用的业务场景,我们经常需要保存这样一种信息:统计用户在手机 App 上的签到打卡信息。 签到打卡的场景,我们只用记录签到(1)或未签到(0),它就是非常典型的二值状态。...String 类型是会保存为二进制的字节数组,所以,Redis 就把字节数组的每个 bit 位利用起来,用来表示一个元素的二值状态。你可以把 Bitmap 看作是一个 bit 数组。...BITOP命令示意图 回到我们的标题:如果记录了 1 亿个用户 10 天的签到情况,你有办法统计出这 10 天连续签到的用户总数吗?...不过,实际应用时,最好对 Bitmap 设置过期时间,让 Redis 自动删除不再需要的签到记录,以节省内存开销。...所以,如果只需要统计数据的二值状态,例如商品有没有、用户在不在等,就可以使用 Bitmap,因为它只用一个 bit 位就能表示 0 或 1。在记录海量数据时,Bitmap 能够有效地节省内存空间。

57510

SCN、ORA-19706错误和_external_scn_rejection_threshold_hours参数

SCN可以说是Oracle的很基础,但同时也是很重要的东西,它是一个单向增长的“时钟”,广泛应用于数据库的恢复、事务ACID、一致性读还有分布式事务。...为什么不设计成64位,这个或许是觉得48位已经足够长了并且为了节省两个字节的空间:)。...SCN Headroom:这个是指Maximum Reasonable SCN与当前数据库SCN的差值。alert通常是以“天”为单位,这个只是为了容易让人读而已。...解决的办法将_external_scn_rejection_threshold_hours这个隐含参数设置为较小的值,推荐的值是24,即1天。...一个具有很多系统的大型企业环境里面,db link使用很多,甚至有一些不容易管控到的数据库也在跟关键系统通过 db link进行连接,在这样的环境,过高的SCN扩散到关键系统,而系统如果打了这个补丁

1.1K30

(转载)如何计算服务器能够承受多大的pv

这时请注意你对外的网络的带宽,国内服务器便宜但带宽很贵,很可能你机房是与大家共享一条100M的光纤,实际每个人可分到2M左右带宽。...一天总流量:每个页面20k字节 ---- 基本概念: Throughput(吞吐量):按照常规理解网络吞吐量表示单位时间内通过网卡数据量之和,其中即包括本机网卡发送出去的数据量也包括本机网卡接收到的数据量...QPS - Queries Per Second 每秒处理的查询数(如果是数据库,就相当于读取) TPS - Transactions Per Second 每秒处理的事务数(如果是数据库,就相当于写入...、修改) IOPS,每秒磁盘进行的I/O操作次数 例如对某个数据库测试,分开两次测QPS与TPS。...时,也可以表示类似 LoadRunner 的 Transaction per Second 数 KB/Sec:每秒从服务器端接收 到的数据量(只是接收),相当于LoadRunner的Throughput

6.2K30
领券