安装软件有进度条指示我们安装了多少了。上传文件也能告诉我们上传了多少了,那么如果后台有一个非常耗时的操作,能不能有这么一个进度条来告知我进行了多少了呢?答案是肯定的,点击查看demo
fastcgi_finish_request函数的妙用以及性能测试
昨天无意中得知 fastcgi_finish_request这个函数以及对应的register_shutdown_function,然后对他做了一个了解,用他可以实现一些非常巧妙而有趣的事情。首先,我们看下这个函数的注解:
special function to finish request and flush all data while continuing to do something time-consuming (video converting, stats processing etc.);
它能够让你结束你跟浏览器的交互,然后在后台再继续的运行这个线程,做一些不需要输出,不需要和浏览器交互的事情,例如,上传视频后,视频在转码的时候,不需要用户等待,可以先告诉用户成功,然后再到后台转码(优酷是不是这样? 视频传成功以后,还需要等段时间,才能后台看到该视频的信息。,我们直接通过程序来说明吧。
读书笔记:我只是讨厌屈服(柴静)
柴静的这篇文章,内容非常丰富, 里面穿插了很多历史上,以及过去发生的事情。讲述了美国争取种族平等的事件起因,讲述了国内发生的为了争取权利,个人对抗“权威”的事情。然而,可悲的是,目前,在中国,这种做法让人觉得很难理解。这种做法没用,不可取,或者是5毛钱的事情,跟我没关系。然后,正如书中所说,你觉得今天的拆迁跟我没关系,我不想去关心,明天的征税跟我没关系,我不去关心,但是总有一天,跟你有关系的时候,也没有人去争取,自身的权利。
scp命令的那些坑儿
文章来源于 : 淘宝运维 文强
前两天发现scp命令的一个坑,分享 下,以免其他兄弟再踩这坑了~
前两天有个开发兄弟向我反馈他的任务跑失败了,原因是里面 的一条scp执行失败。后来我试 了试,发现xxxxx机 器下的数据不能通过tssfsdf帐户scp至其他机器,或从其 他机器scp过来,只输出’bashrc’然后就结 束了(顺便吐下槽,感谢XX同学在tscadmin下的~/.bashrc加的是echo ’bashrc’, 让俺能够快速定位问题)。
为什么bashrc里加一条echo语句,就会造成scp失败呢?
scp使用SSH连接,在两台服务器 之间通过一些特特殊的协议消息控制源端与宿端的数据传输。在实际数据传输前,源端需要先向宿端传输协议文本,协议文本传输结束 后,再向宿端传递字符'\0'来表示真正文件传 输的开始。当文件接收完成后,宿端会给源端发送一个'\0'表示文件传输结 束。然后而ssh login远程服 务器时,会source ~/.bashrc和/etc/bashrc文 件,所以当在 ~/.bashrc或/etc/bashrc执 行过程中产生了任何内容输出时,scp会把这些echo回来的东西认作协 议包进行解析,遇到'\0'则会当成表示传输 失败的错误信息,然后exit 1。
所以,一般对于有标准输出的语句最好是放到.bash_profile中。 以免引起不必要的错误。
关于一致性哈希(Hash)
最近在看关于NoSQL的资料,发现总是提到这个东西。这东西吧,非常简单,数据结构讲过,但是那时候一直搞不懂这是个什么玩意儿,这次结合实际环境,终于理解了这个东西。
首先,看问题和背景:
我们知道,hash算法实际上是将一个值映射到另一个值的过程,而一致性哈希则具有自己的两个特点,比如类似的MD5算法,看以看成一种32位的哈希算法,将一个字符串对应到一个32位的字符串中。我们还是看问题,假设现在需要一个负载均衡的算法,要把流量均匀的分布到后端的Cache服务器上面去。最常用的做法,当然是取用户的cookie,取服务器(n)的模,这样基本上能保持流量均分,而且能够保证用户每一次访问能够落入到同一台机器。本来也相安无事,但是,如果摘掉一台机器呢?(一台机器down机是经常的事情),或者是加1台机器,那么本来的n值发生了变化,因此所有的流量命中的机器也全部发生了变化。
Linux学习笔记之Ubuntu的包的管理
好久没来了,今天来灌水了,保持博客的持续更新!
最近在开发机上有诸多不顺,有在上面做压测的,vim打开3000多行的文件就卡,家里联网开发由于网络原因,敲代码卡。于是准备换到自己的Linux环境下做开发,以前也有想过和做过,那时候用的Vmare虚拟机,在公司网络环境下,只能通过桥接联网,但是这样无法获取内网办公权限,说是需要登记网卡。登记的时候又死活登记不上,问了IT,说是不让虚拟机登记。这次听闻VirtualBox能够通过NAT来联网,于是也萌生了转到虚拟机下开发的念头,趁着周六,把环境搞搞。
FTP服务器架设篇:VSFTP的安装和配置
Linux服务器下的FTP软件很多,有Wuftp、ProFtp和VSFtp,其中VSFtp以安全稳定出名,因此这选择了VSFtp进行安装。VSFtp的安装比较简单,yum search vsftp,找到以后安装即可,但是配置就比较有点坑了,怎么说呢?
VPS下LNMP(Linux+Nginx+php-fpm+mysql)的安装
VPS的环境配置
以前博客挂在空间上,也快到期了,刚好换个VPS玩玩。一方面方便翻墙,一方面也当做是一个练手。买的是洛杉矶的一个供应商,刚出的,希望不要硬盘损坏、中途跑路什么的。以下是本人的学习体会,在整个过程中,又长见识了。
VPS的OpenVZ和Xen:
史上最快的消息队列-ZeroMQ的学习研究
ZeroMQ,史上最快的消息队列
----- ZMQ的学习和研究
一、ZeroMQ的背景介绍
引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”
近几年有关"Message Queue"的项目层出不穷,知名的就有十几种,这主要是因为后摩尔定律时代,分布式处理逐渐成为主流,业界需要一套标准来解决分布式计算环境中节点之间的消息通信。几年的竞争下来,Apache基金会旗下的符合AMQP/1.0标准的RabbitMQ已经得到了广泛的认可,成为领先的MQ项目。
与RabbitMQ相比,ZMQ并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在Socket API之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的API接口。
二、ZMQ是什么?
阅读了ZMQ的Guide文档后,我的理解是,这是个类似于Socket的一系列接口,他跟Socket的区别是:普通的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏蔽了这些细节,让你的网络编程更为简单。ZMQ用于node与node间的通信,node可以是主机或者是进程。
三、本文的目的
在集群对外提供服务的过程中,我们有很多的配置,需要根据需要随时更新,那么这个信息如果推动到各个节点?并且保证信息的一致性和可靠性?本文在介绍ZMQ基本理论的基础上,试图使用ZMQ实现一个配置分发中心。从一个节点,将信息无误的分发到各个服务器节点上,并保证信息正确性和一致性。
ZMQ的异步和进程间通信
Zeromq : 异步和多线程
在上一小节中,任务分发的时候,Worker一边连接着任务分发的服务器,一边连接着结果收集的服务器(在不同的端口),这种需要多个Socket的情况下,如果仅仅是按照队列的方式来处理,在上一个模型还比较容易理解,必须得到任务以后,才有计算结果,但是如果是并行的毫无交集的多个Socket呢? 观察下面两段代码: