首页 > 请教各位前辈到底什么是分布式和集群,如何在Java中应用

请教各位前辈到底什么是分布式和集群,如何在Java中应用

网上看到的都是概念,可是实际上到底如何应用,完全是一头雾水

也不知道如何在自己的电脑模拟出来

请问各位前辈到底什么是分布式和集群,如何在Java中应用?


首先,集群跟java不java没关系。

单一服务器的负载总会有极限,所以一些耗时的程序、单次处理数据比较大程序会分布到多台服务器上进行,然后由一台服务器进行归并处理返回。拿数据库来说的话就是酱紫的:

1.insert into xxxxxxSQL发送给一个SQL分析器(一台服务器),进行一系列规则匹配、运算。将数据存储到后端N台数据存储服务器上。
2.select * from .... 同样,发送给SQL分析器(一台服务器),然后由该服务器把SQL发送到后端所有的数据存储服务器上,同时进行运算,然后把数据再发送回分析服务器,然后分析服务器进行归纳按照SQL要求的limit order等条件进行最后筛选然后输出结果。

这就是分布式了。:)


程序软件上的分布式

一个项目,拆成多个子项目。项目之间通过不同的协议通信

集群

大概就是一件事,交给多台服务器来做吧。
举个例子,就是比如说我做一个爬虫的系统,爬虫爬网页。然后分析网页。分析这个过程是很费时间的。
所以我可以把它交给5台机器去处理,一台上一个任务处理完了,马上去处理另外任务。
这就需要6台机器。1台去获取网页数据,分别交给5台机器去做


集群感觉维基百科上的解释比较好,这个跟java没啥关联,你开发的一个java服务,部署到多份,然后在前面挂哥nginx一类的负载均衡的就算是集群了。

分布式,我感觉就是你开发一个java服务,但是服务很复杂,很大,这样整体性能就不好,然后就可以把一些比较频繁的模块拆出去,比如登录,做成一个单独的服务,通过rpc来互相调用,这样就可以针对这个单独抽出来的服务进行优化,并且因为只有登录相关的内容,可以做到一个比较好的资源利用达到效率的提升。当然分布式也不一定都会提升性能,远程调用会牺牲性能,但是当服务过于复杂时,分布式会让结构更清晰,开发维护起来更方便


分布式再扯上java,那么一般就是特指hadoop和spark。。

个人的省钱方案就是在多个虚拟机上跑。。


自己试验可以尝试一下docker!

【热门文章】
【热门文章】