技术选型是研发过程中一件重要的事,技术选型需要考虑多种因素,最重要的是首先搞清楚应用场景、业务场景这是根基,根基不稳可能后续很多决策都是错误的,做的越多会导致错的越多。
存储作为软件系统核心,是任何一个应用程序都离不开的,感兴趣同学可以思考反馈一下哪个程序离得开存储能够运行,我们可以探讨一下是否存在这么个程序。
在程序中应用的存储系统,我们应该有详尽的调研,深刻的理解以及简单的应用,是很好应用技术前提。
硬件基础,存储核心涉及cpu、IO、网络三个核心因素。硬件架构的发展方向是由追求单机主频转到追求多核研发方向,IO 磁盘由机械磁盘到SSD,速度在不断提升,网络由千兆网络到万兆网络以及飞速发展的无限网络。整个cpu多核发展方向网络的快速发展,就意味着未来发展方向是基于网络并行分布式存储,这会是未来潮流,抓住潮流才能使我们的学习以及应用事半功倍。基于对硬件的思考选择存储的演进方向。
上面的图是 jeff dean 说每个 程序员 都应了解的延迟数字,这样我们设计程序架构时,具体实现时才能有的放矢。要能够根据当下硬件处理能力进行合理设计而非基于想象。性能需要每一个设计实现细节整体考量,才能实现没有短板系统。
存储核心是数据结构,当下流行存储引擎有三种,他们是哈希存储引擎、B-树存储引擎、LSM存储引擎。作为存储数据结构有很高要求,既要能支撑很高的写能力又要支持超高读取能力。这是存储选型数据结构需要去思考得点。 哈希存储引擎,redis缓存和 Bitcask 属于这种, B-树 MySQL 数据库是这种存储引擎, LSM 分布式表格 HBase 是这种存储引擎。
从通用存储文件类型来说,包含 分布式文件系统、 分布式KV存储、 分布式表格存储、 分布式数据库,按照研发难易来说,分布式KV存储相对来说是简单的,但是使用场景是比较有限的。分布式数据库是最复杂的,使用上也是比较简单的,研发成本非常高,需要有持续稳定的投入以及相应的团队。
业务场景使我们选型场景核心的点,场景差异决定着存储选择方案,举个例子比如国民应用微信,微信朋友圈有7亿dau访问量巨大,但是业务特点是写少读多,比例1:6相当于我们可以针对性去设计存储架构,选取支持读取能力强存储,写相对弱系统。根据微信朋友圈,越是离现在近的数据越是读几率大,离现在越远数据读取几率越少,就可以将近的数据写入分布式缓存,远一些数据写入SSD类型存储,特别久远数据写入机械磁盘。这样既能满足性能要求,又能节省成本。
程序设计本质是平衡成本与性能,以及未来CPU由提高主频到提升多核性能、网络速度快速的发展,依据硬件发展并行分布式存储是未来发展方向。由大的选型来说一定是多级存储相结合,本地内存+分布式内存缓存(redis)+ SSD + 机械磁盘。有了大的原则,在取选取具体每一种相对更细节的问题,比如基于SSD存储是选择HBase还是RocksDB就是在具体一中类型中的选取。
存储自己研发还是开源?要看实际情况去慎重选择,尽量去选择开源,首先存储研发成本高、技术难度高、周期长,涉及理论众多,自研发需要团队有长时间没有产出的打算,当然如果团队有工程以及学习能力强的同学,这件事也不是不可为。开源的选择的化也不能直接随便就选择,一定要选择社区好,维护好,用户群体较大的,这样维护使用成本低,有了问题也容易去处理,并且要去深入去调研,存储是应用程序核心,使用一种就要深入调研,知其然知其所以然。
如果开源都不满足要求,那么自己研发就是一条必由之路,并且团队经过沟通后觉得也是一件必做不可得事。研发上相对对于应用来说有很多不同的地方,系统出问题后可能不能立即回滚,因为没有查到问题时,贸然处理数据可能会丢失,而数据是价值极大的,并且有些数据对用户来说极其珍贵的,这是一个巨大的难点。 需要对存储相关原理有深入认知,基于对原理认知来指导实践,相关概念非常多这是一个巨大挑战。 再有就是构建流程要包含严格详尽测试,单元测试、集成测试、测试人员测试、自动化测试等,通过严格测试来减少问题。
我们大部分应用都是数据密集型应用,设计一个优秀软件系统不是一件容易的事。需要对应用的技术以及业务有深刻认知,应用到的技术中存储是核心一环。《数据密集型应用系统设计》从原理上对存储进行深度探索与研究,豆瓣评分高达9.7,应该是每个程序员人手一本好书。《大规模分布式存储系统 原理解析与架构实战》从原理以及作者多年实践角度来详尽阐述分布式存储设计与实现,与前一本结合起来看,对于学习存储系统来说是事半功倍。
希望对大家能有点启发,你在实践中用过哪些存储,可以来分享一下。
以上所述就是小编给大家介绍的《存储选型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 常见分布式文件存储介绍、选型比较、架构设计
- 常见分布式文件存储介绍、选型比较、以及架构设计
- 如何选型一个合适的框架:分布式任务调度框架选型
- 我的技术栈选型
- 中文博客的字体选型
- React 组件库技术选型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Book of CSS3
Peter Gasston / No Starch Press / 2011-5-13 / USD 34.95
CSS3 is the technology behind most of the eye-catching visuals on the Web today, but the official documentation can be dry and hard to follow. Luckily, The Book of CSS3 distills the heady technical la......一起来看看 《The Book of CSS3》 这本书的介绍吧!