您现在的位置是:数据库 >>正文
HBase+Elasticsearch,百亿级数据中心架构设计实践
数据库28人已围观
简介业务背景今天给大家分享一下我们在公司里,面向多个业务团队设计的数据中心架构,他是如何一步一步的从多业务团队数据现状分析开始,然后逐步的演化设计出一个数据中心架构来的,希望能帮助大家对现在很流行的数据中 ...
今天给大家分享一下我们在公司里,百亿面向多个业务团队设计的数据中计实践数据中心架构,他是心架如何一步一步的从多业务团队数据现状分析开始 ,然后逐步的构设演化设计出一个数据中心架构来的,希望能帮助大家对现在很流行的百亿数据中心这个概念构建起来系统化的认知。
首先跟大家说一下在没有数据中心的数据中计实践时候,公司里的心架各个业务团队是什么样的免费模板一个状况 ,简单来说,构设就是百亿不同的业务团队有有研发自己的业务系统 ,有自己独立的数据中计实践数据存储,平时就是心架自己的系统访问自己的数据就够了。
如下图 1 所示:

图 1
没引入多业务数据中心时的构设痛点但是接着随着你的系统逐步演进 ,模板下载需求越来越多,百亿越来越复杂 ,数据中计实践逐步的心架会出现每个系统都需要访问其他系统的数据的情况。
此时就会出现你每个系统必须开一些数据接口 ,让别的系统来调用你的接口访问你的数据,同时你自己也可能要访问别人的接口去获取别人的数据 。
如下图 2 所示:

图 2
大家看到上图是什么感觉?是云计算不是觉得很懵逼?因为实际上随着系统慢慢演化,可能会搞成系统 A 开的接口被系统 B 和 C 调用,系统 B 开的接口被系统 A 和 C 调用 ,系统 C 开的接口被系统 A 和 B 调用 。
这个时候就会出现非常尴尬的场景,就是混乱,没错,我敢打赌,你盯着上面的图看 10s ,源码库应该还是很懵逼 ,没什么头绪。
没错 ,所以其实这就是最大的痛点 ,各个业务系统其实都是一个数据孤岛,也就是大家都只能访问到自己的数据,然后别人要访问你的数据 ,必须通过你的接口来访问,服务器租用最后导致 n 个业务系统之间错综复杂的调用关系,进而导致系统不好维护 ,运维困难。
数据中心的架构设计思想所以这个问题 ,我们设计了一个面向多业务团队的数据中心,这个数据中心的架构设计思想 ,就是通过各个业务系统的数据存储的变更监听 。
比如针对 MySQL 数据库就可以部署 Canal 来监听他的数据变更 ,亿华云然后把各个业务系统的数据都拉取到数据中台里统一存储。
如下图 3 所示 :

图 3
接着数据中心可以提供两种数据访问模式 ,一个是主动查询接口 ,一个是被动监听 MQ 通知 。
也就是说,对于数据中心来说,你各个业务系统都可以调用数据中心的接口 ,直接获取你想要的其他业务系统的数据,同时数据中心也会把各个业务数据的变更通知发送到 MQ ,你也可以订阅你感兴趣的业务数据变更通知。
如下图 4 所示 :

图 4
大家看到上面的架构设计图,是不是瞬间感觉世界一下子就清净了?
没错 ,其实在互联网公司里,对于多业务系统错综复杂的互相调用接口访问对方数据,往往会抽出一个统一的公共的数据中心来 ,让各个业务系统实现数据共享,这样就可以大幅度的提升我们系统整体架构的整洁性了。
数据中心的数据存储架构设计那么再来给大家讲一下数据中心架构设计的另外一个关键点 ,就是他的数据存储架构设计。
大家可以想一下,虽然我们的各个业务系统的数据存储基本都是以 MySQL 为主的,但是我们的数据中心的存储架构其实跟业务系统的需求是不同的 ,因为业务系统一般都是需要利用 MySQL 的事务机制实现复杂的业务逻辑 。
但是对于我们数据中心来说,本质仅仅是将数据同步过来,然后后续的重点是对外提供查询。
这是功能上定位的不同,另外一个不同就是数据量级的不同 ,因为我们的数据中心是存储所有业务系统的全量数据的 ,所以这就导致了可能各个业务系统的数据量级是百万级到亿级 ,而我们的数据中心他的数据量级可能是百亿级的 ,这是很大的一个特点。
如下图 5 所示 :

图 5
所以最终我们的数据中心存储架构采用的是 HBase+Elasticsearch 作为核心架构 。
也就是说,基于 HBase 把数据以 kv 的格式分布式的存储在多台服务器上,写入的时候是 kv 格式,读取的时候也是 kv 格式 ,key 就是数据的主键 id ,value 就是一行完整的数据。
同时会为各个查询接口的查询条件 ,把要查询的字段值写入 ES 里建立查询索引,让查询接口可以基于 ES 中的索引先搜索数据主键 id,然后根据数据主键 id 去 HBase 里查询完整的一行数据。
如下图 6 所示 :

图 6
接下来给大家说一下这套架构下的一些技术难点和问题 :
一个是 Hbase 和 ES 之间的一致性问题如何保证 ,也就是说,万一写入 Hbase 成功了,结果写入 ES 失败了 ,此时应该怎么办?
这个时候其实应该设计一个补偿机制,也就是说 ,写入 Hbase 成功,而写入 ES 失败的时候,需要发一个补偿消息到 MQ 里去 ,然后下次再重试做一个写入,实现最终一致性的效果。
如下图 7 所示 :

图 7
另外一个比较关键的生产架构经验就是多业务资源隔离,也就是要限制每个业务方对数据中台接口的访问量 。
否则可能会出现一个问题,就是某个业务方因为自身业务激增或者是业务 bug ,导致读数据局中心的接口进行了瞬时高并发访问,一下子就把数据中心的请求处理线程都打满了,接着就没法处理别的业务系统的查询请求了。
如下图 8 所示:

图 8
所以说往往在这种情况下 ,我们必须在数据中心里设计多业务资源隔离的机制,就是说让每个业务系统接入接口访问的时候,最多就是使用数据中心里一部分的线程资源 ,超过这个阈值,就会限流 ,不允许这个业务方过量访问 。
如下图 9 所示 :

图 9
数据中心的离线数据备份和恢复的机制接着我们还有另外一个重要的架构方案设计 ,数据中心现在是极为重要的是数据存储 ,因为所有业务系统的数据都会在数据中心内部进行汇总存储,然后各个业务系统都会强依赖数据中心提供的所有数据 。
所以如果数据中心要是出现数据存储故障甚至是数据丢失一类的问题,那就会导致很大的麻烦,因此我们设计了离线数据备份和恢复的机制。
也就是说 ,基于大数据技术将所有数据定时同步一份到 Hadoop 集群中去 ,如果要是出现了 Hbase 或者 ES 集群的崩溃或者数据丢失 ,此时可以基于 Hadoop 集群中的离线备份数据,把数据恢复到某个时间点 ,继续对外提供服务 。
如下图 10 所示 :

图 10
总结好了,今天给大家分享的一个互联网公司的多业务系统数据中心架构设计就到这里了 ,希望大家看了我们的架构设计思路之后 ,未来在公司里遇到类似问题的时候,能够有一个整体的设计和解决思路 。
Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“商站动力”。http://www.noorid.com/html/78d499917.html
相关文章
对 DDoS 攻击进行防护的几种措施
数据库如何防止攻击数据很清楚。从各个方面来看,DDoS 攻击都在增加。这对于处于攻击者十字准线中的企业来说是个坏消息。DDoS 攻击与普通的拒绝服务攻击有何区别?恶意流量来自世界各地的 ...
【数据库】
阅读更多数据中心基础设施管理的五个发展趋势
数据库数据中心基础设施管理(DCIM)是监控、管理和优化数据中心的物理和逻辑组件(例如服务器、存储、网络、电源、冷却和安全)的过程。DCIM软件可以帮助数据中心运营商提高效率、降低成本、增强性能,并确保其I ...
【数据库】
阅读更多安卓手机相册加密的方法是什么?
数据库首先我们需要下载腾讯手机管家并安装到手机上。 安装好腾讯手机管家后,我们打开腾讯手机管家并选择隐私保护。在隐私保护中我们可以看到立即开启,点选此按钮。然后就是设置隐私的密码了,该密码需牢 ...
【数据库】
阅读更多
热门文章
最新文章
友情链接
- 探索如何将锁屏变成个性主题(打造独特的手机锁屏体验)
- 所问数据的质量如何?(以数据质量指标为评估标准进行分析)
- 康佳P2如何打造智能生活新体验(品质、智能与创新的完美结合)
- 比较骁龙410和435(骁龙410与435的区别以及适用场景)
- 如何评估数据中心?高度互联的生态系统是关键
- AM09(以AM09为主题的高性能电风扇的优势与使用指南)
- 小辣椒JDPlus全方位解读,值得购买吗?(便宜好用的小辣椒JDPlus手机,性价比之王!)
- 华硕笔记本光盘换系统安装教程(轻松学会如何通过光盘更换华硕笔记本系统)
- 昊诚电池(以昊诚电池怎么样为主题的研究及评价分析)
- 烈焰战神1050ti(探索烈焰战神1050ti的卓越性能与多功能特性) b2b信息平台云服务器企业服务器香港物理机网站建设源码库亿华云