简单的集群和分布式理解
时过金秋,我已是一名职场小白技术界的屌丝,进而因接触到一些集群与分布式管理知识,加上一点自己心得并写出来希望能对入门级新人一点帮助,以此共勉。
一,需求
我相信大部分人都遇到跟我类似或者相近的情况,在思考多个项目如何管理与多个项目怎么进行交互联系并统一的运行的问题,我刚工作的时候接触的是一个项目,中有四个小工程,一个主项目,(可以看到试图的带前端的)其余的一个是主项目中的一个计算模块,一个执行模块,一个附加模块,一开始了解到这四个项目是通过FTP文件式进行交互,即A项目读取文件材料进行运算后写入文件,B再读取约定的文件进行读取文件,然后再进行与例外的接口进行一些列的接口系统执行功能。而当这确实也解决了多个项目的交互问题,嘛呢多个项目的管理呢,继而了解便衍生出来Dubbo、zookeeper 、集群和分布式、kafaka等技术。
二,详解
1。Dubbo
虽然目前我接触的项目并没有实际性的接触到Dubbo这一款soa框架,却不得得拿出来聊聊,Dubbo是一个开源的阿里巴巴的soa(面向服务)的框架,虽然底层实现暂时没做过多研究不过附图一张(ps经典)
这个图当然是网上找到,稍微理解一下自然理解透彻,接下来就个人的理解说下这个框架,
Consumer(消费者)与Provider(生产者):两个项目都有相同的接口,接口有实现类的叫生产者,接口没有实现类的叫消费者;(纯属个人理解)
图中Registry注册中心就个人理解仅仅充当一个中介角色,消费者需要调用里一个项目中的接口的实现类(生产者),那么就需要向注册中心提出信号,注册Registry就接收到Provider的提供的实现类,继而Consumer就可以从Registry获取到Provider的功能,
在一般的项目中此过程一般会使用到zookeeper进行连接,至于怎么具体连接和怎么实现这一功能需要具体查看Dubbo的源码,再做讨论。
其他的网上有的 我推荐一个网址,可以自行阅读
http://blog.csdn.net/lipslive/article/details/46530361
2、集群和分布式的理解
关于这个问题并不难理解,用我自己的理解分布式是在用到了很多项目一起分布不同功能或者分布在不同服务器上执行,而集群-服务器集群式指多个服务器形成一个群,如一个主服务器挂了还有副服务器顶上,他们就属于一个集群,而在项目中用分布式管理项目为多,并未涉及到计算服务器性能方面,一下一篇文章在侧重计算性能做出了解释与个人理解有些出入,暂做参考
http://www.360doc.com/content/14/0119/22/15109633_346516210.shtml
3、zookeeper
先说下我了解的zookeeper,它是一款谷歌开源的软件,也就是说他是一款应用软件,点开即用,并不像Dobbo那样还需要各种配置等等,前面有提到过Dobbo中的注册中心一般建议用zookeeper来使用,而在java的环境下,我们就只能通过zookeeper的API进行代码的实现,简而言之,zookeeper通过两个核心实力来完成功能,一个是Executor,用来与服务器端进行连接并维护此链接,第二个是DataMonitor 负责监视数据倘若发生改变便做出一系列的反应(这个是由java的回调函数完成)
提供相关java使用zookeeper对于java实例的理解和加深,参考网址:
http://www.cnblogs.com/haippy/archive/2012/07/20/2600077.html
4、kafka
对于kafka,在实际项目中测试和开发实在是用处多多,这与其原理联系紧密,kafka是通过topic进行管理,topic可以理解就是一种消息,也可以理解一类数据(个人理解)
通过不同的topic进行管理分类和处理,这样更贴近项目实际,不说多说废话下面一片博客实在是介绍的十分到位,干货,干货,
http://www.cnblogs.com/likehua/p/3999538.html
Copy@Right,盗版必究
参考资料见网址