浪费别人的时间等于是谋财害命,浪费自己的时间等于是慢性自杀。 —— 列宁

摘要: 关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。 我们按照多个不同的维度,来看看多线程和多进程的对比(注:因为是感性的比较,因此都是相对的, 阅读全文
posted @ 2016-04-28 12:01 一谦的视界 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 一、ZeroMQ介绍 ZeroMQ是一个开源的消息队列系统,按照官方的定义,它是一个消息通信库,帮助开发者设计分布式和并行的应用程序。 二、ZeroMQ特征 1)ZeroMQ很简单 三、准备条件 OS:CentOS 6.5 x64 四、安装ZeroMQ 1)下载ZeroMQ [ruby] view 阅读全文
posted @ 2016-04-28 11:47 一谦的视界 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 基本上ZeroMQ(java)中基本的代码都算是过了一遍了吧,不过觉得它在日志这一块貌似基本没有做什么工作,也就是我们通过日志来知道ZeroMQ都发生了什么事情。。 而且由于ZeroMQ中将连接的建立和重连接都进行了隔离,用户不需要做什么事情来维护连接,当然这样做的好处是使程序员的编码工作变少了,但 阅读全文
posted @ 2016-04-28 11:28 一谦的视界 阅读(1735) 评论(0) 推荐(0) 编辑
摘要: 前面的文章中已经比较的清楚了ZeroMQ(java)中如何在底层处理IO,通过StreamEngine对象来维护SelectableChannel对象以及IO的事件回调,然后通过Poller对象来维护Selector对象,然后用IOObject对象来具体的管理SelectableChannel对象在 阅读全文
posted @ 2016-04-28 11:26 一谦的视界 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 在ZeroMQ(java)中,整个IO的处理流程都是分层来进行的,当然处于最下端的肯定是前面介绍过的poller以及StreamEngin了。。。。涉及到上层的话就还有session,以及socket,先用一张图来大概的描述一下整个层次关系吧。。 整个分层的结构大概就是这样吧,其中poller与St 阅读全文
posted @ 2016-04-28 11:18 一谦的视界 阅读(1191) 评论(0) 推荐(0) 编辑
摘要: 哎,各种各样杂七杂八的事情。。。好久没有看代码了,其实要搞明白一个与IO相关的框架,最好的办法就是把它的I/0的读写两个过程搞清楚。。。例如在netty中,如果能将eventLoop的运行原理搞清楚,然后摸清楚整个I/O读写两个过程,那么也就差不太多了。。。。这次来看看ZeroMQ(java)中如何 阅读全文
posted @ 2016-04-28 10:56 一谦的视界 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 算是开始读ZeroMQ(java)的代码实现了吧,现在有了一个大体的了解,看起来实现是比较的干净的,抽象什么的不算复杂。。。这里先来看看它的I/O线程的实现吧,顺带看看是如何实现组件的通信的。。。。首先要搞清楚I/O线程的实现,就先要弄懂一个类型,Poller(zmq.Poller.java),可以 阅读全文
posted @ 2016-04-28 10:49 一谦的视界 阅读(671) 评论(0) 推荐(0) 编辑
摘要: 我们在实际的应用中最常遇到的场景如下:A向B发送请求,B向A返回结果。。。。但是这种场景就会很容易变成这个样子:很多A向B发送请求,所以B要不断的处理这些请求,所以就会很容易想到对B进行扩展,由多个B来处理这些请求,那么这里就出现了另外一个问题:B对请求处理的速度可能不同,那么B之间他们的负载也是不 阅读全文
posted @ 2016-04-28 10:38 一谦的视界 阅读(2472) 评论(0) 推荐(0) 编辑
摘要: 在开始这部分的内容之前,先来看看ZeroMQ中HWM概念 High-Water Marks 当系统的数据量很大,而且发送频率很高的情况下,内存就很重要了,如果处理不好会出现很多问题,例如如下场景: A很快速的向B发送数据,但是B处理起来却很慢,这样子的话,数据就可能会在A的发送缓冲区,或者B的接收缓 阅读全文
posted @ 2016-04-28 10:37 一谦的视界 阅读(670) 评论(0) 推荐(0) 编辑
摘要: 本教程转自:http://blog.csdn.net/kobejayandy/article/details/20163527 在开始之前先把guid里面提到的几个ZeroMQ的特性列一下吧: (1)ZeroMQ有自己的I/O线程来异步的处理I/O,而且后台采用了无锁的数据结构 (2)在ZeroMQ 阅读全文
posted @ 2016-04-28 10:07 一谦的视界 阅读(3086) 评论(0) 推荐(0) 编辑
摘要: 本系列文章均转自:http://blog.csdn.net/kobejayandy/article/details/20163431 在ZeroMQ中并没有绝对的服务端与客户端之分,所有的数据接收与发送都是以连接为单位的,只区分ZeroMQ定义的类型,例如Response与Request,Publi 阅读全文
posted @ 2016-04-28 09:48 一谦的视界 阅读(1209) 评论(0) 推荐(0) 编辑
摘要: 前面的文章介绍了比较简单的Request/Subscribe模式, 这篇文章介绍更为经典的Publish/Subscribe通信模式用来ZeroMQ的实现,其通信方式如下图: 客户端(subscriber)向服务器(publisher)订阅消息,然后服务器可以将消息推送到所有订阅了消息的客户端,这里 阅读全文
posted @ 2016-04-28 09:44 一谦的视界 阅读(1100) 评论(0) 推荐(0) 编辑
摘要: 自己最开始是在cloud foundry中接触过消息服务器(nats),或者说是消息中间件,也算是初步知道了一个消息服务器对于分布式的网络系统的重要性,后来自己也曾想过在一些项目中使用它,尤其是在一些分布式的环境下,可以极大的方便整个系统的实现。。。。例如如下的形式:在中间通过一个消息中间件,可以很 阅读全文
posted @ 2016-04-28 09:33 一谦的视界 阅读(910) 评论(0) 推荐(0) 编辑