分布式系统,架构,网友观点.

本文介绍了分布式系统的定义及其在解决性能扩展和高可用性方面的作用。探讨了主流的分布式系统架构,如Hadoop、Spark和Dubbo,并讨论了设计分布式系统时需要考虑的因素,包括数据一致性、服务可用性和分区容错性等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.什么是分布式系统?

就是在一组或几组服务器上,部署了提供相同功能的服务,同时对外提供服务,即使某几台出现异常也可以正常的堆外提供服务。
分布式系统,可以是把不同任务分给不同节点,也可以是把一个任务拆成很多份,分散到不同节点完成,最后再组装起来。
gearman,hadoop,spark这些都算是分布式架构
所谓的分布式系统就好比如一家全国性的银行,用户在这家银行任何一家分行开户后,
就可以在这家银行全国任何一家分行执行存取款、转帐等操作。用户只看到帐户上金额的变化,
并不知道这背后的数据信息是怎样从他开户的分行传输到总行和其它分行的。
再举一个简单一点的例子,分布式系统就像一家大酒店的厨房,客人向服务员点完菜之后,
厨房的厨师们有的负责洗菜,有的负责切菜,有的负责配菜,还有的负责炒菜,最终客人并不知道这道菜是哪几位厨师完成的。
当下主流开源分布式系统架构都有Hadoop、Spark、Storm。
2.

当下主流开源分布式系统架构都有哪些

?主流的dubbo(x)、新浪的motan、ice等等
3

.为什么要用分布式系统?该系统有哪些优势?

主要解决性能的横向扩展,还有通过集群解决高可用
如同1中所述,使用分布式系统后,很多服务器可同时堆外提供相同的服务,不会应为一台或几台的问题,而导致整个服务不可用
在大访问量的情况下,很多太机器可以共同分担访问请求。
而一个公司同时有很多服务,各自独立部署,即使其中一个服务集群挂掉,也不会影响整个服务。只会有一个服务不可用。这样提高系统的可用性。
甚至在一些大访问的情况下,可以牺牲部分不重要的服务,保主要的关键的服务正常运行。
很好解释,这里有十个馒头要消灭,一个人吃和十个人一起吃,肯定是十个人吃得快,
所以海量数据要选分布式系统。分布式的优势就海量的数据处理的速度快。
4

.在设计分布式系统时,需要考虑哪些因素?也就是说,如何合理将一个系统拆分成多个子系统部署到不同机器上?

业务独立的可拆出来,弱耦合的也可以拆出来。尽量避免需要跨系统join数据的拆分。
(耦合概念:软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。
对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小
耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:
如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合是最低的一种耦合形式,系统中一般都存在这种类型的耦合,
因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
控制耦合 。一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。
在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。)
4.

在系统架构的过程中,预想下,你将会面临哪些挑战和困难?

数据的一致性、服务的可用性、分区的容错性
安全问题,单点多了,单点估障的机会就多了,分布式系统一致性就非常重要。zookeeper,chubby,etcd等都是保证分布式一致性的。
分布式最原始的动力就是解决单机性能不够的问题。
但是分布式会带来很多问题。典型的如CAP问题。
·异构性:分布式系统由于基于不同的网络、操作系统、计算机硬件和编程语言来构造,必须要考虑一种通用的网络通信协议来屏蔽异构系统之间的差异。一般交由中间件来处理这些差异。
·缺乏全球时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。紧密的协调经常依赖于对程序动作发生时间的共识,但是,实际上网络上计算机同步时钟的准确性受到极大的限制,即没有一个正确时间的全局概念。这是通过网络发送消息作为唯一的通信方式这一事实带来的直接结果。
  ·一致性:数据被分散或者复制到不同的机器上,如何保证各台主机之间的数据的一致性将成为一个难点。
·故障的独立性:任何计算机都有可能故障,且各种故障不尽相同。他们之间出现故障的时机也是相互独立的。一般分布式系统要设计成被允许出现部分故障而不影响整个系统的正常使用。
·并发:分布式系统的目的,是为了更好的共享资源。那么系统中的每个资源都必须被设计成在并发环境中是安全的。
·透明性:分布式系统中任何组件的故障、或者主机的升级、迁移对于用户来说都是透明的,不可见的。
·开放性:分布式系统由不同的程序员来编写不同的组件,组件最终要集成成为一个系统,那么组件所发布的接口必须遵守一定的规范且能够被互相理解。
·安全性:加密用于给共享资源提供适当的保护,在网络上所有传递的敏感信息,都需要进行加密。拒绝服务攻击仍然是一个有待解决的问题。
·可扩展性:系统要设计成随着业务量的增加,相应的系统也必须要能扩展来提供对应的服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值