王璞,数人云CEO及创始人,为美国George Mason大学计算机博士,擅长分布式计算、大规模机器学习、海量数据处理。曾担任 Google 广告部门数据平台构架师,负责管理每秒访问量全球最高的架构平台。数人云技术团队具备丰富的互联网应用架构经验,大型分布式系统经验,特别是 PaaS 领域的经验。
分布式的概念提出是基于什么样的背景,主要帮助用户在数据中心建设中解决什么样的问题和痛点
分布式计算的概念大概七十年代就提出了。分布式计算本质上解决的是,突破单台物理服务器计算能力极限,通过松散耦合将多台物理服务器组成一个集群,提供更大的计算能力。分布式计算研究如何把需要非常巨大计算能力才能解决的问题分解成许多小的部分,分配给多台计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
云计算也是分布式计算技术的一种,它最基本的概念,是将巨大的计算处理程序分拆成无数个小的子程序,再将这些程序分配给庞大的计算机网络系统经搜寻、计算分析之后将处理结果回传给用户。
Google是应用分布式计算最成功的典范,把分布式计算发扬光大,互联网公司之后形成的分布式计算技术,称之为云计算技术。
分布式技术经历了什么样的发展过程,目前的应用现状,以及面临的挑战
在过去的20多年间出现了大量分布式计算技术,如中间件技术、移动Agent技术、P2P技术、web服务技术和网格技术等等。Web服务和网格计算是互联网上进行大规模分布式计算的两大关键技术。主要解决分布式计算的系统管理和资源共享问题。
网格计算通过把互联网上分散在各处的硬件、软件、信息资源连接为一个整体,使人们能够利用分散的资源,完成大规模、复杂的计算和数据处理。新一代的分布式计算技术是Google这样的互联网公司把分布式技术发扬光大之后的云计算技术。
从技术本身来讲,分布式技术目前发展已经相对成熟。尤其Google这样的互联网公司把分布式计算可能碰到的技术问题已经解决的差不多。但目前企业级客户应用的还不多,用的不太好。分布式计算目前的挑战是进一步降低使用门槛,让企业级客户也能很好地用起来。
分布式系统相比传统的集中式存储,有哪些主要的特点和优势?
分布式存储,是分布式计算技术里的一个方面。简单说就是,将数据分散存储到多个数据存储器上,目前多借鉴Google的经验,在众多服务器上搭建一个分布式文件系统,再在这个分布式文件系统上实现相关的数据存储业务,甚至是二级存储业务。
分布式存储的好处是,可扩展性和稳定性很好。一台服务器存储数据有限,多台服务器组成集群。分布式存储系统通过集群方式扩展到几百甚至几千台集群规模来解决系统扩展能力, 通过软件层面对单机服务器的硬件容错能力大大提升了整体集群的容错能力和稳定性。
分布式存储,目前主要是互联网公司在用,传统企业掌握的比较弱,尤其是分布式软件存储系统。
在设计分布式系统时,考虑的关键因素有哪些?
可扩展性和容错。可扩展性,随着服务器不停增加,集群规模不停增加。分布式系统对硬件要求不高,目前云计算主流应用的是廉价的X86服务器,不能做到高可靠。分布式系统有很好的容错能力,允许硬件发生故障。
分布式系统常见的事务处理机制及其优缺点
分布式系统做事务处理比较难。如果一个事务分布到多台服务器上,或者在分布式并行的环境下,事务之间可能会有冲突。为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副本就能继续运行下去。当访问单一服务器管理的数据进程数不断增加,系统就需要对服务器的数量进行扩充,此时,对服务器进行复制,随后让它们分担工作负荷,就可以提高性能。但同时,如何保障多个数据节点之间数据的一致以及如何处理分布式事务,将成为一个复杂的话题
常见的事务处理机制有:
Master-Slave 复制、Master-Master 多主复制、两阶段提交(Two-phase commit,2PC)、三阶段提交(Three-phase commit ,3PC)、Paxos算法等等。
分布式要遵循ACID四个原则,即A原子性、C一致性、I隔离性、D持久性。在涉及分布式环境时,这些原则都提高了难度。
传统事务性系统偏单点,不好扩展,有很多事务需要处理。分布式处理能力显著增加。
在实际的企业环境中,设计分布式系统时对于CAP理论是如何应用的?(分布式系统中事务处理的技术
为了保障性能和可靠性,将数据复制多份,分布到多个节点上,这就带来了一个难点,如何保持各个部分数据的一致性。CAP理论不可同时兼得这三种特征,也就是说选择了AP,就必须牺牲掉A。
- 一致性(Consistency):所有节点同一时间看到是相同的数据;
- 可用性(Availability):不管是否成功,确保每一个请求都能接收到响应;
- 分区容错性(Partition tolerance):系统任意分区后,在网络故障时,仍能操作
扩展到分布式存储后,受限于分布式 C(一致性)A(可用性)P(分区容忍性)理论,几乎不可能满足完整的事务特性。 各种分布式存储服务实现都对单机存储的事务特性作了权衡取舍,满足特定的服务场景需求。
分布式存储系统是基于网络互联的,除了基本的磁盘访问性能开销,还多了网络性能开销。 原本由磁阵控制程序负责的数据在磁盘中的分布、负载均衡策略和一致性保障, 在分布式存储中都需要软件在整个机器集群层面去考虑,复杂度大大提高。
目前分布式技术(系统)在哪个行业应用比较成熟或者比较广泛?为什么?
目前主要是互联网行业在应用,这主要跟Google的推动息息相关。Google做互联网搜索业务起家,业务量非常大,搜索要存储数据很多,同时请求很多。一开始Google买不起高端的大型机、小型机,用廉价的X86 PC服务器组成集群。但同时,Google证明了新一代分布式计算技术,即云计算技术,可以处理大规模的计算请求。这是Google经过长时间探索形成的一个成熟的应用。
传统行业对分布式系统的应用还很少,业务量没那么大,主要靠高端硬件来保证可靠性稳定性以及处理事务的机制。随着传统企业很多业务上云,很多传统IT的做法无法带来互联网业务带来的挑战,比如流量的集中爆发,业务的快速迭代,敏捷的能力等等,将推动分布式系统和技术的采用。
很多技术人员对于超融合和分布式的概念的认识不是很清晰,超融合与分布式在架构上,以及计算资源和存储资源的管理上,有哪些主要的区别吗
超融合本质上是分布式系统的一种设计方式,分布式系统计算资源的一种设计方式。Google在早期数据中心都是X86服务器,当时的做法是尽可能降低对硬件服务器的要求,用廉价的PC服务器,普通的硬盘。Google更多的做法是,Google软件能力很强,设计软件上的可扩展性,比如数据中心扩容,把Google各种分布式软件系统装上就行,比如内部文件系统、任务调度系统等等。
超融合其实是对企业级客户更有意义。传统企业的数据中心IT规划都是按照计算单元、网络单元、存储单元,扩容的时候相对痛苦。超融合是说把计算、存储和网络都融合在一起。一个机架变成一个最小的数据中心计算单元,既有计算单元,又有网络单元、存储单元。这样,扩容时,扩个机架就好,这样就做到了数据中心计算能力的平行扩展。
超融合是分布式计算资源的设计架构,而不是应用程序的设计架构。互联网公司很多基础的应用调度,计算能力调度,存储,互联网公司是拿软件自行实现的,不会用到超融合技术。
分布式系统相比较传统集中式系统,对于企业的数据中心管理有哪些优势,存在哪些困难,一般企业中如何处理这些问题?
分布式系统弱化了对硬件的管理,强化软件的管理。对企业数据中心带来很大的挑战,传统企业数据中心是面向资源管理,管理高端的硬件。比如数据中心的运维管理是面向资源管理,传统软件在部署时,都是面向静态的管理模式。一个服务器上部署哪些应用都是固定的。现在分布式系统后,对硬件管理弱化,对软件管理极度强化。比如,软件必须是分布式,调度都是它来调度。对于分布式系统,困难在于,企业相应的软件的能力要跟得上。企业的分布式系统管理,云上的调度,都是分布式调度。
分布式系统在开发效率上造成的问题和解决思路
分布式系统本质上会提升开发效率,有很强的容错能力和可扩展性。在开发上增量迭代。微服务对整个系统的影响都是非常局部和有限的。分布式系统每次上线,做增量的上线,只需要修改一小部分,保证对外提供的服务是可用的,而不会造成停服务中心。这是可扩展性方面的优点。
分布式系统在开发上带来的问题是,对开发的难度加大了。互联网公司有专门的架构师团队,解决分布式系统底层的基础架构,比如在什么样的开发架构下开发分布式应用。开发架构解决分布式系统常见的一些问题,比如互相通讯的问题,冗余的问题,容错的问题。这不是分布式系统做应用开发要解决的,而是要提供应用的分布式开发框架来解决这些问题。目前,互联网公司内部都有一套相对成熟的分布式系统的开发框架,以及基于这个开发框架开发出来的应用,一系列测试的流程,和管理的平台工具等等。
对企业客户来讲,单纯实现分布式开发,基于某个开源框架实现分布式开发还远远不够。还需要自动化分布式系统的测试流程,分布式系统线上运行时管理的一些工具平台建设起来。
数人云的分布式解决方案和产品介绍
数人云基于微服务开发框架,打造了一整套端到端的解决方案。给企业客户提供最主流开发框架Spring Cloud,企业客户在做开发时,可以基于Spring cloud做Java的开发应用。但是,Spring Cloud开发框架,仅仅帮助企业解决了一部分问题。本身还有很多缺失,比如自动化测试,运行时管理能力也比较弱。灰度发布时,系统更新保证不停服不停机等都还比较弱。
数人云EAMS产品体系,能够给客户提供包括开发框架、周边配套工具链,比如服务注册、服务发现、API网关、负载均衡、服务治理、配置中心、监控管理等一整套微服务化体系。帮助客户降低微服务架构的使用门槛。企业用户在做SpringCloud做开发时,可以少考虑未来程序运行时管理的一些问题,进而进一步降低企业客户上云的门槛。
分布式技术的未来方向
分布式技术的未来方向肯定朝着更加自动化,成熟易用稳定的方向发展。Spring Cloud是微服务应用的开发框架,k8S是容器自动化的调度平台,这都是有代表性的一些开源技术。
分布式存储,处理事务性的技术等目前来讲都相对较新。未来这些技术会更加成熟稳定,企业的使用门槛大大降低。