java分布式系统架构漫谈 weir 2016-06-01 10:53:53.0 java,分布式 3657 今天聊聊分布式系统的一些事情,不满大家说我也是分布式的追随者和学习者,一个小学生,不是谦虚,但是我还是想班门弄斧的聊聊分布式,在行业者的眼里这是个高大上的东西,我也这么认为,所以才去挑战一下,也想证明一下自己。 上学那会儿也知道但是没有很清晰的概念尽管现在也是模糊,接触多了发现他不神秘就像看庐山一样,身在其中那是不行的永远看不透他。打个比方不一定恰当,比如你想了解一个国家你从哪个方面入手,有人就说了我先百度谷歌一下,这就是入口,至少百度百科可以告诉你一些关于这个国家的好多信息,历史呀文化呀等等。回过头来说我们的软件工程分布式的由来,首先说一下我没有去百度,我就拿我的认知去理解,对不对你一看而过。 首先我先理解一下“分布式”三个字,这三个字是怎么来的含义是什么,基于我认知的有限我就会这样理解,我在学习的时候知道部署一个系统就是在一台服务器上,从这个意义上说“分布式”那不就是系统可以部署在不同的多个服务器上么。这还不是关键,关键是入口只有一个也就是发布出去的网址只有一个,我觉得这样想很合理,那我就有疑问了,为什么要部署在不同的服务器,部署在一台服务器和部署在多台服务器有什么不同,我觉得这是问题本质虽然大家都不会去谈这么浅显的道理。那肯定是一台服务器的计算能力有限呗,原因很简单。 既然这样我们继续深入,分布式看来不可避免了大势所逼呀,那我们就应该想想对策了,既然无法逃避问题那就面对喽。这时候你第一个想到的是问题什么?我要用什么技术来实现“分布式”,我觉得很自然的反应,毕竟这玩意儿是要用编程语言写出来的,看到没有聊着聊着我们就进入正题了(哈哈哈) 主角登场---java!!!这时候你就可以百度去了,看看历史呀由来呀,这些问题必须要自己亲自去实践,看看java分布式的发展呀现在到什么水平了,你可能一时半会儿也没有答案,说实话我也没有清晰的答案。就在此时我还在搜索一无所获,不过也没关系,我们可以在一些技术论坛或技术讲座上得到答案,就我模糊的理解是这样的就在java领域从EJB3开始更早的我就不说了,后来spring的出现,目前我在网上看到的铺天盖地的的都是dubbo。这时候你就会鄙视我了,说的什么玩意儿呀,不还有SOA么,还有很多基于分布式的技术,没错,分布式发展到今天,围绕分布式的技术也是越来越细,大家好像都认同了分而治之的思想。这也许就是现在社会最值得骄傲的文明,看看我们的生活,看看我们人类发展的轨迹,看看我们所远景的美好未来,分而治之会成为真理存在,这和三国演义里面说的分久必合合久必分可不是一个概念。 我们回到原点不忘初心嘛!(这句话真是像毒药一样慢慢折磨着我们,哈哈哈)首先我们必须要承认一点“分布式”是被逼出来的,不是我们一厢情愿做的事情。就这一点就注定了它的命运多舛,换句话说如果“分布式”很简单为什么不一开始弄,这真是个废话,如果想解释这个问题那就必须谈到哲学问题,你想听么,对不起我还不想说呢。给大家说一个简单的道理,如果你预测时间后公司的发展,你会投入大量的人力物力时间去准备十年后的到来么?我反正不会。 我们知道了它的复杂性,但是不得不去做该怎么办,假如给你一个盖楼的工程你该怎么规划统筹,对不对道理是一样的。你要打基础,你要找工人,你要搭架子,你要固定架子,你要先搭出整体,你还要保障安全。那么这些理论和我们谈的软件工程是一样的,为什么说整个世界都在分而治之,那是因为整个世界越来越复杂,而我们面对复杂的事情最好的解决办法就是分而治之,这是人类智慧所能想到的地方至少现在是这样。在分布式领域的核心也是分而治之,你不要妄想学一个技术架构就能学会分布式的所有技术点,这就是我在这里啰里啰嗦的说一大堆烦人的话的原因。 说到这里我们必须要说一些真正要面临的问题了:我原来一个系统要不要拆分成几个模块来管理,我原来的一个数据库要不要拆分成多个数据库。就这两点就让你吃不消,系统拆分后各模块怎么访问呀?数据库拆分后怎么访问呀?啊啊啊受不了啦!!!我之前之所以体dubbo而没有体ESB 、webservice呀就是不想把问题谈的太大了,我也受不了。花点时间看看上面的图,我花了点时间总结了一下,当然还有没有顾及到的比如工作流和搜索这两块,还有一些监控呀什么的很多,所以我也不想弄得多么完美好像我很牛似的,其实我就是个菜鸟,总结一下自己对分布式目前了解的理解。我们还是一个个的说一下,毕竟是搞研发嘛技术还是要掌握的,熟不熟练精不精通这要看自己的努力。 首先说一下我为什么一再提dubbo这玩意儿,没办法,你懂的。没有这玩意儿可不可以,我说可以,具体问题具体分析,你现在想到什么解决办法就去做,在实践中摸索出可行的办法。有时候我们觉得我们很聪明,可有些动物他生下来就有父母的所有技能学习都不需要也能生存,那你跟动物比就没劲啦,你人类有劲么? 别人有今天的成就,明天你会有更高的成就。 好多技术点图上说的很清楚了,我只想说技术的更新很快,如果你没有决心和毅力去攻克分布式当然了解或者掌握几个技术点也是很不错的,分布式不是容易的一件事,今天我也不打算谈技术细节,因为实践出真知,以后机会多多。