自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (3)
  • 收藏
  • 关注

原创 [Erlang 0079] RabbitMQ 初探

最近在项目中实践RabbitMQ,比较幸运现在除了官方网站,还有一本非常棒的书可以读:RabbitMQ in Action;这本书目前还没有中文版或者影印版,但是从网上很容易找到PDF版本和epub mobi的版本.RabbitMQ上有关于这本书的介绍文章.从本文开始我会陆续把学习实践过程中的收获记录分享出来. What is RabbitMQ?Robust messa

2012-11-28 15:30:00 9410

原创 [Erlang 0080] RabbitMQ :VHost,Exchanges, Queues,Bindings and Channels

和RabbitMQ这个项目的缘分好奇怪,很长一段时间内是只关注源代码,真的是Erlang开源项目中的典范;现在要在项目中应用RabbitMQ,从新的视角切入,全新的感觉.仿佛旧情人换了新衣,虽是熟稔却有不曾领略的风情. RabbitMQ提供了一整套机制来处理消息的发送,接收,容错,管理,上一篇文章中我提到了一篇Rabbits and warrens的文章,是一篇非常棒的入门文章,但是里面忽略了

2012-11-28 15:29:15 9123

原创 [Erlang 0081] RabbitMQ Topic Exchanges Routing Rules

RabbitMQ Topic Exchange 按照规则进行消息路由,注意这里使用的Topic表达方式并不是正则表达式.在入门教程[点击链接]里面,简单描述了一下如何编写规则: * (star) can substitute for exactly one word.  # (hash) can substitute for zero or more words.

2012-11-28 15:28:51 9197

原创 [Erlang 0082] Erlang Web Servers & Frameworks

Erlang应用程序需要暴露出来Web Service接口,你该如何处理?需要做复杂点的页面展现你又将如何选择?不同规模解决方案解决不同规模的问题,这里的问题其实是你要选择哪个Web Server,你要选择哪个Web Framework? Erlang Web Servers     现在(2012-10-27)还处于活跃开发状态的Web Server有:Mochiweb Ya

2012-11-28 15:27:50 9615

原创 MySpace Mapreduce Framework:Qizmt

临时要处理一批数据,目标是从销售订单明细获得电子商务常见的一些推荐:1.购买了XX的用户还购买了什么 2.XX经常和YY一起购买 3.XX商品被同一用户多次购买;这是典型的MapReduce场景,但由于数据量比较小22w条数据,实在不想搭Hadoop,就找了一个简单的方案搞定:Qizmt;  看下项目简介:      MySpace Qizmt is a map

2012-11-28 15:27:16 9031

原创 [Erlang 0083] All about Erlang Shell

Erlang Shell是一个强大的工具,几乎只要我的电脑开着,就会有一个Erlang Shell开着,随时验证想法.就是因为是常用武器,也会有一些常见问题,今天做下回顾,顺便解决两个新问题.算是Erlang shell常见问题的不完全合集了吧.后续和Erlang Shell相关的问题也会在本文追加更新.    对于Erlang Shell有些问题已经有解决方案了,你可以先翻翻下面

2012-11-28 15:26:47 8924

原创 [Erlang 0084] RabbitMQ: fire-and-forget and RPC

在项目中引入RabbitMQ通常会考虑它会带来的好处:解耦应用程序,实现不同编程语言之间的互通,解除对特定通信协议的依赖,解除应用程序在时序上执行的依赖(异步).落实到代码层面就是两种常用应用模式:"发后即忘"(fire-and-forget)和RPC. fire-and-forget    之前提到过[链接],RabbitMQ解决的是应用程序之间互联(connec

2012-11-28 15:26:18 9068

原创 [Erlang 0085] RabbitMQ 集群: data and metadata

我们希望 RabbitMQ的集群能够解决单点故障,一旦节点异常自动重连到正常的节点;希望RabbitMQ 集群可以完成负载均衡,可以保证消息不丢失,希望可以快速增加节点到集群,单个节点当掉不会给集群带来灾难影响..... 哦,停下来,我们似乎把构建健壮地可扩展系统的所有梦想都寄托在RabbitMQ之上了.事实又是怎样呢?我们不能臆测软件对一个功能的实现,最好的办法就是用一下;我们近距离看一下.

2012-11-28 15:25:30 9207

原创 [Erlang 0086] RabbitMQ 集群: 从零开始

之前文章介绍了RabbitMQ的metadata, 元数据可以持久化在RAM或Disc.从这个角度可以把RabbitMQ集群中的节点分成两种:RAM Node 和 Disk Node. RAM Node只会将元数据存放在RAM,Disc node 会将元数据持久化到磁盘.   单节点系统就没有什么选择了,只允许disk node,否则由于没有数据冗余一旦重启就会丢掉所有的配置信息.但在节点环境

2012-11-28 15:25:04 9266 1

原创 [Erlang 0087] RabbitMQ 集群: RAM or Disk node

上一篇文章提到,节点按照metadata的存储方式在集群中可以是RAM node 或者 disc node.这两种node有什么差别?在实际操作的时候又如何选择呢?本文回答这一问题. RAM Node 的性能优势    在集群中声明(declare)创建exchange queue binding,这类操作要等到所有的节点都完成创建才会返回:如果是内存节点就

2012-11-28 15:24:27 9673

原创 [Erlang 0088] RabbitMQ 集群 Disc Node 一点实现细节

刚开始使用rabbitmqctl 创建集群的时候会有一个问题,怎么控制节点是disk node还是ram node?翻看了rabbitmq2.8.7的代码看了一下才知道原委,记录一下:  先看下面的实验   这个实验其实之前已经做过了,这里抽出来做对比:[root@localhost scripts]#[root@localhost scrip

2012-11-28 15:23:44 10293

原创 [Erlang 0089] RabbitMQ Exchange

之前提到了RabbitMQ是怎样维护Queue的data和metadata的.我们知道Queue在RabbitMQ对应Erlang的进程,那么Exchane是不是也是独立的Erlang进程呢?它的信息是如何维护的呢? Exchange 本质上是什么    印象中Vhost就像一个容器,Exchange Queue就像一个个零件,这些东西组装起来成为一个消息的Brok

2012-11-28 15:22:53 9168

原创 [Erlang 0090] RabbitMQ 集群: Mirrored Queue

之前提到过在集群环境中,队列只有元数据会在集群的所有节点同步,但是队列中的数据只会存在于一个节点;这不免让人失望:数据没有冗余容易丢数据甚至在durable的情况下,如果所在的节点当掉就要等待节点恢复.那么是不是有消息冗余的解决方案呢?是的,RabbitMQ自2.6.0开始就开始支持镜像队列(Mirrored Queue).消息会在节点之间复制,和其它的主从设计一样,它也有master和sla

2012-11-28 15:22:03 9349

原创 [Erlang 0091] 另辟蹊径构建RabbitMQ集群

除了内置的RabbitMQ集群方案,还可以通过其它一些软件或者插件来构建RabbitMQ集群.这些方案可以解决一些让我们头痛不已的问题,当然它们也不是银弹,也有使用场景的限制.事实上,对于各种集群方案我们都不能假设太多,每当连入一个节点,我们都要把这个节点当成一个全新的节点来处理,首先要完成各种声明工作.   下面的方式都没有实践过,暂且记录一笔,留点印象,后面实践之后丰富.下面的

2012-11-28 15:21:28 8883

原创 [Erlang 0092] Erlang 命令行监控工具

之前介绍过一个Erlang的Web监控工具,如果在字符终端界面呢? Erlang提供了一套监控系统负载情况的模块,可以监控CPU 磁盘 以及内存的使用情况.这些模块组织成为os_mon应用程序,启动os_mon才可以看到采集的系统信息;os_mon依赖sasl应用,我们首先要启动sasl.如果没有运行os_mon,或者系统不支持都会返回无效值;我们先动手试一下:  os_m

2012-11-28 15:20:55 9772

原创 [Erlang 0078] Erlang HiPE 二三事

HiPE(High Performance Erlang) 霸爷有一个一语中的的描述"erlang的hipe相当于jit, 根据语言评测有hipe支持在纯erlang的运算上会快2-3倍,这个性能的提升对于计算密集型的应用还是比较可观的。"维基百科上关于Jit的资料:即时编译(Just-in-time compilation),又称为动态翻译,是一种提高程序运行效率的方法。通常,程序有

2012-11-28 15:18:19 9398

原创 放假杂记

英雄的思路重温了史泰龙巅峰之作《绝岭雄风》 发现是史泰龙早期作品包括第一滴血系列都传达了一个简单有效的处理问题的方式: 第一步 分析最坏的结局  可能发生的最坏的情况是什么第二步 接受最坏的结果第三步 想尽办法改善最坏的结果  有同样思路的英雄比如:赌神高进,赌神2里面在痛失爱妻痛欲绝的时刻已经开始布局复仇了 钢铁侠这种也算 最典型T

2012-11-28 15:17:47 8850

原创 [Erlang 0077] Erlang 杂记 V

[1] Erlang 语言设计的目标是并发,支持并发的核心机制是进程 "Making reliable distributed systems in the presence of sodware errors"  [PDF]  [2] 并发是一种不按照顺序执行的能力,并行是从处理执行的角度"是否可以同时做";还有一种角度:并发是逻辑上的同时发生(simultaneous),并行是

2012-11-28 15:16:57 8886

原创 [Erlang 0076] Erlang Shell一个怪问题

最近一直在忙,偶尔有点时间在读书,补充一下能量;最近在学习 程序设计语言-实践之路 非常感慨,之前误打误撞的一点所得原来有一个更系统,完整的知识体系;于是沉下心来,慢慢吸收.像北上广这样的城市快速的代谢着我们的精力和知识,不容懈怠,不过倒也不必急躁,如果心浮气躁,效果必然大打折扣;抽时间整理一下最近的笔记,先从一个怪异的问题开始吧!   在Erlang shell中我常常创建一个无

2012-11-28 15:16:16 8660

原创 实用主义的思考与学习 读书笔记

手头的这本书是"Pragmatic Thinking and Learning: Refactor Your Wetware" 直译过来就是"实用主义的思考与学习:重构你的思维过程" 中文版被译作为"程序员的思维修炼-开发认知潜能的九堂课".       这本书首先让我想到的是另外一本讲开发者思维方式的书:"系统化思维导论",不过很可惜温伯格的那本书的中文版被翻译得简直不知所云,糟糕至极.而且

2012-11-28 15:15:23 8744

Becoming.Functional

Becoming.Functional 介绍函数式编程的基础概念,条理清楚 非常好,非常适合初学者

2014-08-12

高质量C#代码

在团队中推广的几个编写高质量代码的技巧 在团队中推广的几个编写高质量代码的技巧

2014-07-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除