63
回答
高手问答第 146 期 — 分布式系统常用技术及案例分析
注册赢门票,抽奖送华为P10>>>   

OSCHINA 本期高手问答(2017 年 3 月 21 日 — 3 月 27 日)我们请来了 @waylau 柳伟卫) 为大家解答关于分布式系统技术方面的问题。

@waylau  柳伟卫,多年软件开发管理及系统架构经验。负责过多个省、国家级大型分布式系统的设计与研发,也负责过多个大型项目的微服务架构的技术改造,在实际工作中,积累了大量的微服务架构经验。

一提起 “分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。什么是分布式系统、分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式、或者你还有其他任何关于分布式系统的问题,欢迎踊跃来提问。

为了鼓励踊跃提问,@博文视点  会在问答结束后从提问者中抽取 5 名幸运会员赠予《分布式系统常用技术及案例分析》一书。

本书涵盖分布式系统基础理论、常用技术以及经典的案例分析。对分布式系统中的线程、通信、一致性、容错性、CAP 理论、安全性、并发、RESTful 风格架构、微服务、容器技术,以及分布式消息服务、分布式计算、分布式存储、分布式监控系统、分布式版本控制、RESTful、微服务等相关技术和知识点都作了详细的讲解。

购买链接:https://item.jd.com/12124492.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就分布式系统方面问题向 @waylau  提问,请直接回帖提问。

举报
局长
发帖于5个月前 63回/5K+阅
共有63个答案 最后回答: 5个月前

@waylau  我看了一下作者的书写的非常全面,我想问一下mongodb和 hbase 这个两个nosql数据库,大哥分别怎么使用,应用在哪种场景? 

--- 共有 1 条评论 ---
waylaumapReduce 场景(如 Hadoop)使用 HBase。其他一般NoSQL场景用 MongoDB,MongoDB数据模型还是比较强大,比如货币数据、时间数据等。 5个月前 回复

@waylau 分布式系统中主要是用到了服务化,消息中间件,数据库拆分,便于横向扩展和维护,但分布式系统中的拆分的这个维度该怎么把握?拆分后面临的分布式事务用什么方式处理比较好?分布式中soa框架有dubbo、motan及spring cloud的spring全家桶,这些技术该怎么选择?

--- 共有 1 条评论 ---
waylau以微服务为例,拆分遵守几种原则,如单一职责、高内聚低耦合等,拆分的颗粒度足够小即可便于开发;但不要过小,过小的化微服务的数量也会激增,管理这些大批量的服务也将会是一个挑战。 分布式事务常用的方式有两阶段提交、三阶段提交、paxos算法等。 5个月前 回复
书的内容那么多,请问下都有具体的解决方案吗,其实像单独的一个分布式事务要讲清楚都很复杂的。这书还涵盖了分布式的方方面面,会不会只是提下术语,并没有讲到实际的案例?
--- 共有 1 条评论 ---
waylau每个章节基本上都会有例子,部分例子也提供了源码。本书最后两个章节还专门介绍了国内外分布式系统的案例。当然,各个技术点不可能都介绍的面面俱到,读者朋友们也不要指望通过一两本书就能达到如何高的技术水平,这个是不现实的。笔者希望能够通过本书抛砖引玉,能够给读者带来一点启迪就阿弥陀佛了。 5个月前 回复

@waylau

1. 之前有听说过CAP理论,2pc、3pc等。在最终微服务架构下,最终会有多少项目真正落地呢(事物一致性)?

--- 共有 1 条评论 ---
waylauCAP 理论在分布式系统中都会用到吧,可见 https://waylau.com/cap-theorem/ 。分布式事务算法 其复杂性与完善性成正比,2PC<3PC<Paxos,实际案例可以参考 Chubby、Hypertable、Zookeeper等 5个月前 回复

@waylau

看了一下京东上购书链接中的目录,分布式存储里涵盖了hbase,Cassandra,mongodb,redis,memcached等几个方面的内容。

这些可能更像我们常规理解上的支持分布式的NoSQL系统,

不知道从您的角度是怎么看待诸如:ceph,glusterfs,gpfs等系统和书中所列这些之间的的区别和联系,以及使用场景上的不同?

--- 共有 5 条评论 ---
waylau 回复 @Andy : 感谢您的建议,这些底层的技术可能一般的开发者关注的比较少。针对您的意见,我也会往这方面多学习多研究多交流~ 5个月前 回复
Andy 回复 @waylau : 是这样的。我说的这些都是更偏底层的通用存储系统,您书中所列的是更侧重于应用层的数据存储,同时提供了一些数据处理的功能特性。如果有时间深入讨论一下在不同应用场景下,如何选型这些系统的问题,也是有意义的。 5个月前 回复
waylau 回复 @Andy : 您列举的这些技术,应该都是关注于文件存储的吧。我书中列举的这些大多是数据的存储。 5个月前 回复
Andy 回复 @waylau : 按我的理解可能ceph,glusterfs,gpfs等才是真正意义上的分布式存储,hbase,cassandra,mongodb,redis等首先还是数据库,只是用在了分布式存储的场景下。现在有时候,感觉各种概念的边界变得比较模糊了。 5个月前 回复
waylau没错了。本书所列之技术遵循“常用”、“开源”之宗旨。在分布式存储这块,没有对关系型数据库做介绍,毕竟这方面的资料已经 很多了。您提出的Ceph等技术,目前暂无研究,故无法对比,但相信都有可取之处,希望懂这块的网友参与这方面的探讨~ 5个月前 回复

@waylau 您好,想了解分布式环境下如何保持数据一致性的?分布式事务吗?

--- 共有 1 条评论 ---
waylau分布式系统的一致性有多种模型,如严格一致性、持续一致性、最终一致性等,分布式事务算法常用的有2PC、3PC、Paxos 各有优缺点,实际案例可以参考 Chubby、Hypertable、Zookeeper等 5个月前 回复

@waylau

你好,1.消息中间件的选择上,能否单用kafka不用其他,还是说根据不同业务场景选用不同的消息中间件。

2.一般在什么情景下使用消息中间件呢?是否在并发程度不是很高的情况下可以不用,只有在并发达到一定程度才启用呢

3.就是楼上说的数据最终一致性了。。。

--- 共有 2 条评论 ---
竹隐江南 回复 @waylau : 非常感谢~ 谢谢 5个月前 回复
waylau1.消息中间件结合业务场景选单一种就行了。各类中间件各有优劣 2.消息中间件适用于通信场景,比如消息一对一、广播通信等。由于消息中间件这种队列的数据结构特点,也可以用于数据一致性的场景 3.看楼上的答案 5个月前 回复

@waylau 分布式实例是在不同的主机上的,文件如何能够做到同步

--- 共有 1 条评论 ---
waylau文件也是数据,所以这个问题与数据的同步解决方案类似。这里可能要考虑的是相同的文件,在不同的主机下,如何拥有相同的标识,比如各类网盘。系统可以每个上传文件一个哈希值.也就是文件的唯一识别码,这样可以在同步时,可以根据这个唯一码进行对比。 5个月前 回复

@waylau 你好,我就问一下 你出这本书的目的是什么? 

--- 共有 2 条评论 ---
大风厂蔡成功我就服你..写书当然是为了赚钱 5个月前 回复
waylau书是人类进步的阶梯~一方面是想把个人多年工作中涉及的分布式技术做一下总结,另一方面也想把个人的经验分享给广大的读者朋友。本书的大部分内容取材自我个人的博客以及个人编写的开源书(也算是为开源事业贡献微薄之力吧),不想看本书的也可以直接关注我博客(https://waylau.com)或者开源书(https://waylau.com/books)的内容。当然,博客相对来说比较零散,没有这本书来的严谨。 5个月前 回复
顶部