中国移动用的是阿里云吗

中国移动用的是阿里云吗,第1张

中国移动用的是阿里云吗,是的,据了解,在浙江移动和阿里云双方紧密合作下,一阶段项目前后仅用了1个多月的时间就将试点应用成功发布上线,2月立项,3月底,系统就成功将数据库迁移至MySQL,4月底,系统完成生产数据割接并正式接入DRDS。

虽然项目本身并不是高难度的技术攻克,但这次移动和阿里云的合作,是中国移动集团内部首次与业界先进互联网公司的深度技术融合,加上联通、中石化、中国华能等企业纷纷采用这一被阿里云称为“数字化中台”的 “互联网架构”,可以看出包括运营商在内的大型企业在数字化升级的过程中,对代表下一代信息技术的云计算、大数据表现出了越来越积极的接纳态度和实践需求。

对于与阿里云方面的合作,浙江移动方面在文章中写到,通过一阶段试点业务的改造实践,在组件能力、运维模式、运维工具、集成方案等方面磨合、积累、沉淀了宝贵的经验,也在项目协作、架构匹配上,初步验证了浙江移动与互联网公司先进技术、理念相结合的可行性,为后续二、三阶段在浙江移动的核心系统上开展更加深入的试点工作奠定了坚实基础。

可以预见,中国移动与阿里云的合作目前还处于起步阶段,未来有较大的想象空间,毕竟电信运营商的IT系统是目前涉及用户数量最多、涵盖范围最广也是技术最复杂的I

中间件是位于平台(硬件和 *** 作系统)和应用之间的通用服务,这些服务具有标准的程序接口和协议。而数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、d性扩容等能力,应对海量数据的高并发访问场景,有效提升数据库读写性能。这一块好像华为,阿里都做的挺不错的。

(最多18字)

经常混迹于技术社区,频繁看到这个题目,今天干脆在自己博客重复一遍解决办法:

针对mysql,sqlserver等关系型数据库单表数据过大的处理方式

如果不是阿里云分布式数据库 DRDS 那种多机器集群方案的话: 先考虑表分区 ;然后考虑分表 ;然后考虑分库。

这个题目是我所经历过的,我做的是GPS应用,早期版本就是选用的关系型数据库Sql Server。当时我选取的方案就是第一种:表分区。 表分区的优势是,如果表结构合理,可以不涉及到程序修改。也就是说,对程序来讲依然是单表读写的效果!

所有轨迹数据存入到一个巨大的表里。有多大呢?

最大存储量超过10亿行。具体数值应该是12亿多点,由于系统设计为只存储30天轨迹,所以线上期间最大存储只到这个数,再后来采用云架构,上云替换成非关系性数据库,获得了更高的写入性能和存储压缩能力。  每日写入量就超过1500万行。上下班交通高峰时候每秒写入量平均超过500行。也就是500iops,距离系统设计的压测指标3000还有一大截

这张大型单表设计要点:(一个聚集索引用于写入,一个联合索引用于查询,没有主键,使用表分区)

明确主键用途:

真的需要查询单行数据时候才需要主键!

我采用无主键设计,用于避免写入时候浪费维护插入数据的性能。最早使用聚集的类似自增的id主键,压测写入超过5亿行的时候,写入性能缩减一半

准确适用聚集:

写入的数据在硬盘物理顺序上是追加,而不是插入!

我把时间戳字段设置为聚集索引,用于聚集写入目的设计。保证硬盘上的物理写入顺序,不浪费性能用于插入数据

职责足够单一: 

用于精准索引!

使用时间+设备联合索引,保证这张表只有一个查询用途。保证系统只有一种查询目的:按照设备号,查询一个时间段的数据。

精确的表分区:

要求查询时候限定最大量或者最大取值范围!

按天进行表分区,实现大数据量下的高效查询。这里是本文重点,按照聚集索引进行,可以让目标数据局限在更小的范围进行,虽然单表数据上亿,但是查询基本上只在某一天的的几千万里进行索引查询

每张表会有各自的特点,不可生搬硬套,总结下我这张表的特点:

只增,不删,不改!

关于不删除中:每天使用作业删除超过30天的那个分区数据除外,因为要清空旧的表分区,腾出新的表分区!

只有一个业务查询:只按照设备编码查询某个时间段

只有一个运维删除:删除旧的分区数据

这张表,是我技术生涯中进步的一个大阶梯,让我我体会到了系统架构的意义。

虽然我的这张举行表看似只有4个关键点,但是这四个非常精准的关键点设计,耗费了我一个月之久!正是这么足够精准的表结构设计,才撑起了后来压测并发量超过3000的并发写入量!压测的指标跟数据库所在的硬盘有直接关系,当时选取的硬盘是4块10000转的SAS盘做了Raid10的环境

关于后来为什么没有更高的实际应用数值,是因为系统后来改版为云架构,使用了阿里云,更改为写入性能更高的非关系型数

什么是中间件

浅析深究什么是中间件 作者: 奉继承1 由来

因为工作的原因,我从金蝶集团调入金蝶中间件公司工作以来,经常遇到一个问题就是中间件公司是个什么公司,中间件是什么?,金蝶不是做ERP的吗?怎么也做中间件?。这是我以前在金蝶集团时无法想象的问题。因为金蝶,金蝶ERP的品牌以及大众对ERP的了解,是无需我解析什么是ERP,什么是财务软件一类的问题的。

毕竟,中间件在实际的应用过程中,是对应用软件起到支撑作用,最终用户并不直接使用中间件,中间件不是大众消费类软件产品。因此,除非是一个行业专业人士,一般不大可能与中间件打交道,不太了解什么是中间件。

因此,在系统软件之中, *** 作系统、数据库、中间件的三驾马车,中间件是最神秘的。因为,好歹大家通过Windows基本上会了解 *** 作系统是个什么东西,尽管不会很全面,很专业,毕竟是有感觉的。数据库,虽然没有直接见过,但基本上明白数据是要一个仓库来储存的,因此,也大致知道数据库管理系统是干什么的。

长期以来,中间件是一个专业化非常强的细分产业。因为中间件的技术门槛比较高,玩家也不多,无论是国外还是国内都是如此。因此,行业内对什么是中间件并不特别在意。而公司名称直接叫中间件的就更少了,金蝶中间件应该是国内外直接在公司名称中冠以中间件字眼最早,也是很少的公司之一。另一方面,因为中间件软件还处于发展阶段,还没有完全成熟,因此对中间件的定义也就没有深究,或者权威的说法。

但现在情况有点变化,其中一个原因在于2008年底,国家启动了核高基重大科技专项,在基础软件领域明确提出重点支持 *** 作系统、数据库、中间件、文字处理等基础软件产业的自主创新,几乎一夜之间大大小小的软件公司都宣称是做中间件的了,只要不是做最终应用软件的,他们的产品都叫中间件了,一时间,中间件变得蓬勃发展起来了。

作为中间件行业内的专业化和领先企业来说,大家都重视起中间件来了,这是好事,说明社会上重视了。对行业的发展和繁荣固然重要,但这也隐含了重大的风险。中间件名字被滥用,无论是对用户,对这个产业,对 和投资人来说,都会有负面的影响。鱼目混珠,泥沙俱下的局面,对中间件产业的正常发展未必就是好事情了,也可能对真正的中间件自主创新带来许多困扰,模糊了中间件的本质,可能会弱化中间件核心技术的创新和发展。

因此,在这种情况下,无论是对行业内,还是行业外,突然什么是中间件的问题变成了一个大问题了。

本文试图就中间件的来龙去脉,外延内涵和前世今生,来一个全面的阐释。一家之言,权作业界参考,希望带动大家做一些深入的思考。

2 中间件的起源

21 中间件发展的历史

事情从1946年说起,世界上第一台电子计算机埃尼阿克诞生,人类进入信息时代。1955年,约翰巴克斯发明了最早的程序语言Fortran,现代意义上的软件就诞生了。

1964年,IBM发布OS/360 *** 作系统,软件与硬件分离,同时,软件成为一个独立的产业正式登上产业界的舞台。中间件就是软件产业不断发展过程中自然产生的。

90年代,文顿·瑟夫这位互联网之父的发明成为改变IT业的重大革命性创新。互联网促使分布式系统和网络应用的诞生,中间件就是伴随网络技术的产生、发展而兴起的,可以说没有网络就没有现代意义上的中间件。因为,网络环境需要解决异构分布网络环境下软件系统的通信、互 *** 作、协同、事务、安全等共性问题,提高异构分布网络环境下软件系统的互 *** 作性、可移植性、适应性、可靠性等问题。

1968年IBM发布CICS交易事务控制系统,使得应>>

中间件是个什么东西

屏蔽不同数据库管理系统技术细节差异,提供一致性数据访问接口的SDK

什么是中间件?

中间件(MiddleWare)从字面上解释就是“处于中间的软件”,尽管程序员之外的读者会感觉陌生,但其实早在1990年,中间件就作为网络应用的基础设施出现了。诞生于贝尔实验室的Tuxedo系统就是最早用于交易系统的中间件。中间件的出现解决了异构分布网络环境下软件系统的通信、互 *** 作、协同、事务、安全等共性问题。因为其在系统中的重要性,中间件与 *** 作系统、数据库被称为系统软件的三驾马车。

阿里的中间件主要有包含这么几个:

分布式关系型数据库DRDS_水平拆分 做数据库扩展性的

消息队列MQ 是做消息的中间件

企业级分布式应用服务EDAS 做分布式服务的

还有一些其他的中间件,比如配置服务 缓存 等等,也都会放在中间件里

软件领域中,中间件是什么意思?有什么用?谢谢大家!!!

中间件是为了解决应用程序对网络过分依赖的问题采取了一种有效的方川,在客户机和服务器之间加一层软件。它是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于 *** 作系统软件与用户的应用软件的中间。

在 *** 作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的 *** 作系统之上,管理计算资源和网络通信。

中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互 *** 作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。

什么是中间件

就是 *** 作系统上层应用软件或系统下层提供抽象服务的程序,比如各种虚拟机啊,数据库管理啊之类的软件

什么是中间件

中间件是在BS架构兴起时产生的,存在与应用系统和 *** 作系统底层数据库之间的一类软件,帮助解决一类共性问题的软件,最早的中间件是在1986年的贝尔实验室研发出来的tuxedo,现在的中间件产品有IBM的websephere,oracle的weblogic,东方通的tonglink,易达讯,金蝶等如果您还有什么关于中间件的详细咨询,欢迎给我留言

什么是数据库,什么是中间件

这其实是一个比较虚的概念。广义的中间件范围很广。起沟通作用的都可以认为是中间件。甚至ODBC这样的东西你也可以认为是中间件。

现在用的比较多的中间件应该是BEA公司的tuxedo和IBM公司的weblogic(好象是这个东西),我接触过一点tuxedo。oracle、sun和ms好象也有类似产品,不过用的人很少。tuxedo是这个领域的领导者,不过IBM正在追赶并有可能超过,毕竟,IBM就是IBM。

tuxedo这东西我们用来做数据库和前台应用之间的中间件。

使用了中间件之后,以前直接连接的前台应用程序和数据库之前就多了个tuxedo,现在前台程序把请求发给tuxedo,tuxedo再把请求发给数据库,数据库处理结束之后把结果返回tuxedo,tuxedo再把结果送回给前台。这样一搞,表面看复杂了很多。不过带来一些好处,比如:

安全。tuxedo的服务是定制的,这就有点象是存贮过程,因为应用程序无法直接接到数据库而只能通过tuxedo,所以应用程序无法做tuxedo服务之外的事情。你把你的应用逻辑写在tuxedo中,你就可以保证你的数据是安全的。

性能。有些数据库性能不好,比如oracle一个连接就是好多M,连接数一多,机器内存就没了,有了tuxedo之后,tuxedo负责连接数据库,连接数比较少,tuxedo可以用排队的方式来处理这些数据库请求,这样提高了性能。中间件的高级应用好象还可以把数据库分布在不同的机器上,由tuxedo动态分配前、后台的请求和处理,把它们搞在不同的机器上,所以你用了中间件之后如果后台数据库处理来不及,可以加一台机器,前台请求太多(比如网站)可以加多前台机器。你可以灵活的调整性能。

应用服务器做的人好象就更多了。而且应用服务器这东西和中间件类似(逻辑上)我觉得它应用也是中间件的一种,不过大家一般说中间件都是指的狭义的中间件,就是tuxedo这些。

中间件应用领域很广的。简直大一点的应用都可以用到中间件。国内也有一些开发商自己写中间件,不过好象是自己用,没形成市场。

什么是中间件

什么是中间件

中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务、面向服务的体系结构等中应用比较广泛。

什么是中间件

中间件(MiddleWare)从字面上解释就是“处于中间的软件”,尽管程序员之外的读者会感觉陌生,但其实早在1990年,中间件就作为网络应用的基础设施出现了。诞生于贝尔实验室的Tuxedo系统就是最早用于交易系统的中间件。中间件的出现解决了异构分布网络环境下软件系统的通信、互 *** 作、协同、事务、安全等共性问题。因为其在系统中的重要性,中间件与 *** 作系统、数据库被称为系统软件的三驾马车。

阿里的中间件主要有包含这么几个:

分布式关系型数据库DRDS_水平拆分 做数据库扩展性的

消息队列MQ 是做消息的中间件

企业级分布式应用服务EDAS 做分布式服务的

还有一些其他的中间件,比如配置服务 缓存 等等,也都会放在中间件里

什么是中间件

就是 *** 作系统上层应用软件或系统下层提供抽象服务的程序,比如各种虚拟机啊,数据库管理啊之类的软件

阿里云、华为云、百度、腾讯。

1、阿里云:这个没话讲,就现在来说,国内没有比它更大的了。阿里的大数据布局应该是很完整的了,从数据的获取到应用到生态、平台,在大数据这行,绝对的扛把子!

2、华为云:整合了高性能的计算和存储能力,为大数据的挖掘和分析提供专业稳定的IT基础设施平台,近来华为大数据存储实现了统一管理40PB文件系统。(华为云好像目前是不怎么对外开放的)

3、百度:作为国内综合搜索的巨头、行业老大,它拥有海量的数据,同时在自然语言处理能力和机器深度学习领域拥有丰富经验。

4、腾讯:在大数据领域腾讯也是不可忽略的一支重要力量,尤其是社交领域,只是想想QQ和微信的用户量就觉得可怕。

大数据是宝藏,人工智能是工匠。大数据给了我们前所未有的收集海量信息的可能,因为数据交互广阔,存储空间近乎无限,所以我们再也不用因“没地方放”而不得弃掉那些“看似无用”的数据。

当数据变得多多益善,当移动设备、穿戴设备以及其他一切设备都变成了数据收集的“接口”,我们便可以尽可能的让数据的海洋变得浩瀚无垠,因为那里面“全都是宝”。

1 、简介

DataPipeline :隶属于北京数见 科技 有限公司,是一家企业级批流一体数据融合服务商和解决方案提供商,国内实时数据管道技术的倡导者。

通过平台和技术为企业客户解决数据准备过程中的各种痛点,帮助客户更敏捷、更高效、更简单地实现复杂异构数据源到目的地的实时数据融合和数据管理等综合服务。

从而打破传统 ETL 给客户灵活数据应用带来的束缚,让数据准备过程不再成为数据消费的瓶颈。

Kettle:是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Informatica:是全球领先的数据管理软件提供商。

在如下Gartner魔力象限位于领导者地位:数据集成工具魔力象限、数据质量工具魔力象限、元数据管理解决方案魔力象限、主数据管理解决方案魔力象限、企业级集成平台即服务(EiPaaS)魔力象限。

Talend :是数据集成解决方案领域的领袖企业,为公共云和私有云以及本地环境提供一体化的数据集成平台。Talend的使命是致力于帮助客户优化数据,提高数据可靠性,把企业数据更快地转化为商业价值。

以此为使命,Talend的解决方案将数据从传统基础架构中解放出来,提高客户在业务中的洞察力,让客户更早实现业务价值。

DataX :是阿里巴巴集团内被广泛使用的离线数据同步工具 / 平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。开源地址:>

一、离线数据同步

DataX

阿里的Datax是比较优秀的产品,基于python,提供各种数据村塾的读写插件,多线程执行,使用起来也很简单, *** 作简单通常只需要两步;

创建作业的配置文件(json格式配置reader,writer);

启动执行配置作业。

非常适合离线数据,增量数据可以使用一些编码的方式实现,

缺点:仅仅针对insert数据比较有效,update数据就不适合。缺乏对增量更新的内置支持,因为DataX的灵活架构,可以通过shell脚本等方式方便实现增量同步。

参考资料:

github地址:>

最近与同行 科技 交流,经常被问到分库分表与分布式数据库如何选择,网上也有很多关于中间件+传统关系数据库(分库分表)与NewSQL分布式数据库的文章,但有些观点与判断是我觉得是偏激的,脱离环境去评价方案好坏其实有失公允。

本文通过对两种模式关键特性实现原理对比,希望可以尽可能客观、中立的阐明各自真实的优缺点以及适用场景。

首先关于“中间件+关系数据库分库分表”算不算NewSQL分布式数据库问题,国外有篇论文pavlo-newsql-sigmodrec,如果根据该文中的分类,Spanner、TiDB、OB算是第一种新架构型,Sharding-Sphere、Mycat、DRDS等中间件方案算是第二种(文中还有第三种云数据库,本文暂不详细介绍)。

基于中间件(包括SDK和Proxy两种形式)+传统关系数据库(分库分表)模式是不是分布式架构?我觉得是的,因为存储确实也分布式了,也能实现横向扩展。但是不是"伪"分布式数据库?从架构先进性来看,这么说也有一定道理。"伪"主要体现在中间件层与底层DB重复的SQL解析与执行计划生成、存储引擎基于B+Tree等,这在分布式数据库架构中实际上冗余低效的。为了避免引起真伪分布式数据库的口水战,本文中NewSQL数据库特指这种新架构NewSQL数据库。

NewSQL数据库相比中间件+分库分表的先进在哪儿?画一个简单的架构对比图:

这些大多也是NewSQL数据库产品主要宣传的点,不过这些看起来很美好的功能是否真的如此?接下来针对以上几点分别阐述下的我的理解。

这是把双刃剑。

CAP限制

想想更早些出现的NoSQL数据库为何不支持分布式事务(最新版的mongoDB等也开始支持了),是缺乏理论与实践支撑吗?并不是,原因是CAP定理依然是分布式数据库头上的颈箍咒,在保证强一致的同时必然会牺牲可用性A或分区容忍性P。为什么大部分NoSQL不提供分布式事务?

那么NewSQL数据库突破CAP定理限制了吗?并没有。NewSQL数据库的鼻主Google Spanner(目前绝大部分分布式数据库都是按照Spanner架构设计的)提供了一致性和大于5个9的可用性,宣称是一个“实际上是CA”的,其真正的含义是 系统处于 CA 状态的概率非常高,由于网络分区导致的服务停用的概率非常小 ,究其真正原因是其打造私有全球网保证了不会出现网络中断引发的网络分区,另外就是其高效的运维队伍,这也是cloud spanner的卖点。详细可见CAP提出者Eric Brewer写的《Spanner, TrueTime 和CAP理论》。

完备性

两阶段提交协议是否严格支持ACID,各种异常场景是不是都可以覆盖?

2PC在commit阶段发送异常,其实跟最大努力一阶段提交类似也会有部分可见问题,严格讲一段时间内并不能保证A原子性和C一致性(待故障恢复后recovery机制可以保证最终的A和C)。完备的分布式事务支持并不是一件简单的事情,需要可以应对网络以及各种硬件包括网卡、磁盘、CPU、内存、电源等各类异常,通过严格的测试。之前跟某友商交流,他们甚至说目前已知的NewSQL在分布式事务支持上都是不完整的,他们都有案例跑不过,圈内人士这么笃定,也说明了 分布式事务的支持完整程度其实是层次不齐的。

但分布式事务又是这些NewSQL数据库的一个非常重要的底层机制,跨资源的DML、DDL等都依赖其实现,如果这块的性能、完备性打折扣,上层跨分片SQL执行的正确性会受到很大影响。

性能

传统关系数据库也支持分布式事务XA,但为何很少有高并发场景下用呢? 因为XA的基础两阶段提交协议存在网络开销大,阻塞时间长、死锁等问题,这也导致了其实际上很少大规模用在基于传统关系数据库的OLTP系统中。

NewSQL数据库的分布式事务实现也仍然多基于两阶段提交协议,例如google percolator分布式事务模型,

采用原子钟+MVCC+ Snapshot Isolation(SI),这种方式通过TSO(Timestamp Oracle)保证了全局一致性,通过MVCC避免了锁,另外通过primary lock和secondary lock将提交的一部分转为异步,相比XA确实提高了分布式事务的性能。

但不管如何优化,相比于1PC,2PC多出来的GID获取、网络开销、prepare日志持久化还是会带来很大的性能损失,尤其是跨节点的数量比较多时会更加显著,例如在银行场景做个批量扣款,一个文件可能上W个账户,这样的场景无论怎么做还是吞吐都不会很高。

虽然NewSQL分布式数据库产品都宣传完备支持分布式事务,但这并不是说应用可以完全不用关心数据拆分,这些数据库的最佳实践中仍然会写到,应用的大部分场景尽可能避免分布式事务。

既然强一致事务付出的性能代价太大,我们可以反思下是否真的需要这种强一致的分布式事务?尤其是在做微服务拆分后,很多系统也不太可能放在一个统一的数据库中。尝试将一致性要求弱化,便是柔性事务,放弃ACID(Atomicity,Consistency, Isolation, Durability),转投BASE(Basically Available,Soft state,Eventually consistent),例如Saga、TCC、可靠消息保证最终一致等模型,对于大规模高并发OLTP场景,我个人更建议使用柔性事务而非强一致的分布式事务。关于柔性事务,笔者之前也写过一个技术组件,最近几年也涌现出了一些新的模型与框架(例如阿里刚开源的Fescar),限于篇幅不再赘述,有空再单独写篇文章。

HA与异地多活

主从模式并不是最优的方式,就算是半同步复制,在极端情况下(半同步转异步)也存在丢数问题,目前业界公认更好的方案是基于paxos分布式一致性协议或者其它类paxos如raft方式,Google Spanner、TiDB、cockcoachDB、OB都采用了这种方式,基于Paxos协议的多副本存储,遵循过半写原则,支持自动选主,解决了数据的高可靠,缩短了failover时间,提高了可用性,特别是减少了运维的工作量,这种方案技术上已经很成熟,也是NewSQL数据库底层的标配。

当然这种方式其实也可以用在传统关系数据库,阿里、微信团队等也有将MySQL存储改造支持paxos多副本的,MySQL也推出了官方版MySQL Group Cluster,预计不远的未来主从模式可能就成为 历史 了。

需要注意的是很多NewSQL数据库厂商宣传基于paxos或raft协议可以实现异地多活,这个实际上是有前提的,那就是异地之间网络延迟不能太高 。以银行“两地三中心”为例,异地之间多相隔数千里,延时达到数十毫秒,如果要多活,那便需异地副本也参与数据库日志过半确认,这样高的延时几乎没有OLTP系统可以接受的。

数据库层面做异地多活是个美好的愿景,但距离导致的延时目前并没有好的方案。 之前跟蚂蚁团队交流,蚂蚁异地多活的方案是在应用层通过MQ同步双写交易信息,异地DC将交易信息保存在分布式缓存中,一旦发生异地切换,数据库同步中间件会告之数据延迟时间,应用从缓存中读取交易信息,将这段时间内涉及到的业务对象例如用户、账户进行黑名单管理,等数据同步追上之后再将这些业务对象从黑名单中剔除。由于双写的不是所有数据库 *** 作日志而只是交易信息,数据延迟只影响一段时间内数据,这是目前我觉得比较靠谱的异地度多活方案。

另外有些系统进行了单元化改造,这在paxos选主时也要结合考虑进去,这也是目前很多NewSQL数据库欠缺的功能。

Scale横向扩展与分片机制

paxos算法解决了高可用、高可靠问题,并没有解决Scale横向扩展的问题,所以分片是必须支持的。NewSQL数据库都是天生内置分片机制的,而且会根据每个分片的数据负载(磁盘使用率、写入速度等)自动识别热点,然后进行分片的分裂、数据迁移、合并,这些过程应用是无感知的,这省去了DBA的很多运维工作量。以TiDB为例,它将数据切成region,如果region到64M时,数据自动进行迁移。

分库分表模式下需要应用设计之初就要明确各表的拆分键、拆分方式(range、取模、一致性哈希或者自定义路由表)、路由规则、拆分库表数量、扩容方式等。相比NewSQL数据库,这种模式给应用带来了很大侵入和复杂度,这对大多数系统来说也是一大挑战。

这里有个问题是NewSQL数据库统一的内置分片策略(例如tidb基于range)可能并不是最高效的,因为与领域模型中的划分要素并不一致,这导致的后果是很多交易会产生分布式事务。 举个例子,银行核心业务系统是以客户为维度,也就是说客户表、该客户的账户表、流水表在绝大部分场景下是一起写的,但如果按照各表主键range进行分片,这个交易并不能在一个分片上完成,这在高频OLTP系统中会带来性能问题。

分布式SQL支持

常见的单分片SQL,这两者都能很好支持。NewSQL数据库由于定位与目标是一个通用的数据库,所以支持的SQL会更完整,包括跨分片的join、聚合等复杂SQL。中间件模式多面向应用需求设计,不过大部分也支持带拆分键SQL、库表遍历、单库join、聚合、排序、分页等。但对跨库的join以及聚合支持就不够了。

NewSQL数据库一般并不支持存储过程、视图、外键等功能,而中间件模式底层就是传统关系数据库,这些功能如果只是涉及单库是比较容易支持的。

NewSQL数据库往往选择兼容MySQL或者PostgreSQL协议,所以SQL支持仅局限于这两种,中间件例如驱动模式往往只需做简单的SQL解析、计算路由、SQL重写,所以可以支持更多种类的数据库SQL。

SQL支持的差异主要在于分布式SQL执行计划生成器,由于NewSQL数据库具有底层数据的分布、统计信息,因此可以做CBO,生成的执行计划效率更高,而中间件模式下没有这些信息,往往只能基于规则RBO(Rule-Based-Opimization),这也是为什么中间件模式一般并不支持跨库join,因为实现了效率也往往并不高,还不如交给应用去做。

存储引擎

传统关系数据库的存储引擎设计都是面向磁盘的,大多都基于B+树。B+树通过降低树的高度减少随机读、进而减少磁盘寻道次数,提高读的性能,但大量的随机写会导致树的分裂,从而带来随机写,导致写性能下降。NewSQL的底层存储引擎则多采用LSM,相比B+树LSM将对磁盘的随机写变成顺序写,大大提高了写的性能。不过LSM的的读由于需要合并数据性能比B+树差,一般来说LSM更适合应在写大于读的场景。当然这只是单纯数据结构角度的对比,在数据库实际实现时还会通过SSD、缓冲、bloom filter等方式优化读写性能,所以读性能基本不会下降太多。NewSQL数据由于多副本、分布式事务等开销,相比单机关系数据库SQL的响应时间并不占优,但由于集群的d性扩展,整体QPS提升还是很明显的,这也是NewSQL数据库厂商说分布式数据库更看重的是吞吐,而不是单笔SQL响应时间的原因。

成熟度与生态

分布式数据库是个新型通用底层软件,准确的衡量与评价需要一个多维度的测试模型,需包括发展现状、使用情况、社区生态、监控运维、周边配套工具、功能满足度、DBA人才、SQL兼容性、性能测试、高可用测试、在线扩容、分布式事务、隔离级别、在线DDL等等,虽然NewSQL数据库发展经过了一定时间检验,但多集中在互联网以及传统企业非核心交易系统中,目前还处于快速迭代、规模使用不断优化完善的阶段。

相比而言,传统关系数据库则经过了多年的发展,通过完整的评测,在成熟度、功能、性能、周边生态、风险把控、相关人才积累等多方面都具有明显优势,同时对已建系统的兼容性也更好。

对于互联网公司,数据量的增长压力以及追求新技术的基因会更倾向于尝试NewSQL数据库,不用再考虑库表拆分、应用改造、扩容、事务一致性等问题怎么看都是非常吸引人的方案。

对于传统企业例如银行这种风险意识较高的行业来说,NewSQL数据库则可能在未来一段时间内仍处于 探索 、审慎试点的阶段。基于中间件+分库分表模式架构简单,技术门槛更低,虽然没有NewSQL数据库功能全面,但大部分场景最核心的诉求也就是拆分后SQL的正确路由,而此功能中间件模式应对还是绰绰有余的,可以说在大多数OLTP场景是够用的。

限于篇幅,其它特性例如在线DDL、数据迁移、运维工具等特性就不在本文展开对比。

总结

如果看完以上内容,您还不知道选哪种模式,那么结合以下几个问题,先思考下NewSQL数据库解决的点对于自身是不是真正的痛点:

如果以上有2到3个是肯定的,那么你可以考虑用NewSQL数据库了,虽然前期可能需要一定的学习成本,但它是数据库的发展方向,未来收益也会更高,尤其是互联网行业,随着数据量的突飞猛进,分库分表带来的痛苦会与日俱增。当然选择NewSQL数据库你也要做好承担一定风险的准备。

如果你还未做出抉择,不妨再想想下面几个问题:

如果这些问题有多数是肯定的,那还是分库分表吧。在软件领域很少有完美的解决方案,NewSQL数据库也不是数据分布式架构的银d。相比而言分库分表是一个代价更低、风险更小的方案,它最大程度复用传统关系数据库生态,通过中间件也可以满足分库分表后的绝大多数功能,定制化能力更强。 在当前NewSQL数据库还未完全成熟的阶段,分库分表可以说是一个上限低但下限高的方案,尤其传统行业的核心系统,如果你仍然打算把数据库当做一个黑盒产品来用,踏踏实实用好分库分表会被认为是个稳妥的选择。

很多时候软件选型取决于领域特征以及架构师风格,限于笔者知识与所属行业特点所限,以上仅为个人粗浅的一些观点,欢迎讨论。

以上就是关于中国移动用的是阿里云吗全部的内容,包括:中国移动用的是阿里云吗、数据库中间件是什么东西、mysql单库负载过高的处理方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9309187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存