分布式键值模型可以看成是分布式表格模型的一种特例。然而,由于它只支持针对单个key-value的增、删、查、改操作,因此,适用之前提到的哈希分布算法。
Amazon Dynamo是分布式键值系统,最初用于支持购物车应用。Dynamo将很多分布式技术融合到-一个系统内,学习Dynamo的设计对理解分布式系统的理论很有帮助。当然,这个系统的主要价值在于学术层面,从工程的角度看,Dynamo 牺牲了一致性,却没有换来什么好处,不适合直接模仿。
本章首先详细介绍Bigtable的架构及实现,接着分析Megastore的架构,最后介绍Microsoft Azure Storage的架构。
关系数据库理论汇集了计算机科学家几十年的智慧,Oracle、 Microsoft SQL Server、MySQL 等关系数据库系统广泛应用在各行各业中。可以说,没有关系数据库,就没有今天的IT或者互联网行业。然而,关系数据库设计之初并没有预见到IT行业发展如此之快,总是假设系统运行在单机这一封闭系统上。
本章首先介绍数据库中间层架构,接着介绍MicrosoftSQLAzure,最后介绍Google Spanner。
实践篇
===
这部分内容将以笔者在阿里巴巴开发的分布式数据库OceanBase为例详细介绍分布式数据库内部实现以及实践过程中的经验总结。
从模块划分的角度看,OceanBase 可以划分为四个模块:主控服务器RootServer、更新服务器UpdateServer、基线数据服务器ChunkServer以及合并服务器MergeServer。OceanBase系统内部按照时间线将数据划分为基线数据和增量数据,基线数据是只读的,所有的修改更新到增量数据中,系统内部通过合并操作定期将增量数据融合到基线数据中。本章介绍OceanBase系统的设计思路和整体架构。
分布式存储引擎层包含三个模块: RootServer、 UpdateServer 以及ChunkServer。其中,RootServer 用于整体控制,实现子表分布、副本复制、负载均衡、机器管理以及Schema管理; UpdateServer 用于存储增量数据,数据结构为一个内存B树,并通过主备实时同步实现高可用,另外,UpdateServer的网络框架也经过专门的优化;ChunkServer用于存储基线数据,基线数据按照主键有序划分为一个个子表,每个子表在ChunkServer上存储了一个或者多个SSTable,另外,定期合并和数据分发的主要逻辑也由ChunkServer实现。
数据库功能层构建在分布式存储引擎层之上,实现完整的关系数据库功能。对于使用者来说,OceanBase与MySQL数据库并没有什么区别,可以通过MySQL客户端连接OceanBase,也可以在程序中通过JDBC/ODBC操作OceanBase。
OceanBase的MergeServer模块支持MySQL协议,能够将其中的SQL请求解析出来,并转化为OceanBase系统的内部调用。
OceanBase系统一直在不断演化,需要在代码不断变化的过程中保持系统的稳定性。因此,合理的质量保证体系关乎系统的成败。为了保证系统质量,OceanBase 做了大量工作,在RD (指开发工程师)开发、QA (指测试工程师)测试、上线试运行各个阶段对系统质量把关。
专题篇
===
云存储和大数据是近年来兴起的两大热门领域,其底层都依赖分布式存储技术,这部分将简单介绍这两方面的基础知识。
云存储是云计算的存储部分,并且可以作为一种服务提供给用户,任何经过授权的合法用户都可以通过网络访问云存储,享受云存储带来的便利。云存储是随着互联网和云计算逐步发展起来的,从大规模系统软件架构的角度看,云计算后端架构的难点集中在云存储。本章首先对云存储做-个初步的介绍,接着介绍Amazon、Google 以及Microsoft 的云平台整体架构。
随着云时代的来临,大数据(Big Data)也吸引了越来越多的关注。2012年7月,阿里巴巴数据公司成立并设立了一个全新的岗位:首席数据官( Chief Data Oficer,CDO),由此可见数据在未来的价值。这也意味着与“大数据存储、计算和价值提取"相关的技术岗位将会得更加重要。
本章首先介绍大数据的概念以及大数据计算平台,接着介绍MapReduce离线处理系统,最后,介绍流式计算系统和实时分析系统。
读者对象
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/8c9fab5eedb01a009b12da1b632493b6.jpeg)
最后总结
搞定算法,面试字节再不怕,有需要文章中分享的这些二叉树、链表、字符串、栈和队列等等各大面试高频知识点及解析
最后再分享一份终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
EiWu-1713003903219)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!