- 论坛徽章:
- 2
|
1.集中式与分布式各自的特点有哪些?
目前来看,因为X86平台发展很快, 分布式是一个很好的趋势, 从成本上 完全可以用一群便宜的X86机器集合, 替代一台强大的服务器。
集中处理的好处有很多, 看上去简单,逻辑清晰,不需要太多的保障代码来维护版本和一致性。
分布式的好处呢, 就是尽量地分散业务逻辑, 让集群显得更加强大, 缺点就是要维护好节点之间的通信和一致性。
2.什么是分布式一致性?
打一个比方,就是cpu的单核和多核, 多核cpu可以分散计算任务,但是仍然需要保证事务的完整,需要cpu之间的等待/协调。
节点之间也是如此。
分布式的节点, 要维护的一致性很多。
比如存储, 我们讲shared-nothing和 shared-everything的 架构不一样, 后者需要更多地维护 不同节点之间 对共享存储的读写事务一致性, 存在瓶颈。
如 网络, 我们要维护节点之间的heartbeat通信, 这一点上, 如果节点变多,10个节点变成10000个节点, 那么是否需要 所有节点 都两两通信,还是只需要骨干节点通信? 因为心跳本身就成了 负载了。
如 时间/计时器, 有ntpd或者类似的做法, 如果节点之间的 时间不能做到一致, 那么日志,业务,很多都受影响。
3.如果失去了一致性约束,分布式系统是否还可以依赖?
没有一致性, 分布式就不应该被叫做distributed, 应该被改成 partitioning, separation. 之类的说法,不同的节点上 数据内容/版本都会出现大的不一致, 甚至会有 脑裂现象。
4. 从集中式向分布式系统演变过程中面临哪些挑战
我个人觉得最大的问题, 是目前的节点数量和数据量的快速增长。
比如一个集群, 本来有一个主节点来监视管理其他节点资源。 是二层的。
节点快速增长以后, 不得不放弃这个节点管理所有节点, 转而管理 较少的 二级节点, 其他节点 分别向这些二级节点提交状态, 这就是三层的。
分布式的一个方向,就是不断地分层,来化解节点增长的幂级影响。 但这个也是有困难的。分层太多, 又陷入一开始的问题了。
另外一个方向, 就是弱化主节点的功能,本来 查询集群状态,需要向一个主节点发出请求。 而改进后,只需要向集群发出请求, 由集群上 有资源,权限的节点自行归并,返回结果。
这个方向看着容易,但很容易出现脑裂, 或者不一致 节点evict的发问。
5.ZooKeeper可以解决哪些问题?
zookeeper用来维护 节点之间的一致性。
但这个东西 本身又需要一堆东西来支持, 要维护zookeeper本身的高可用, 维护watch,维护节点通信,维护锁机制。
6. 说说您读完试读样章后的启发
样章 基本上讲得一些原理, 很浅。 关于事务的一致性,类似ACID这些要求, 不同的产品要求也是不同的。
|
评分
-
查看全部评分
|