概念

  • IaaS, PaaS和SaaS

    以提供用户基于云的各种服务为主,共包含三个层次:其一是 Software as a Service 软件即服务,简称 SaaS ,这层的作用是将应用主要以基于 Web 的方式提供给客户;其二是 Platform as a Service 平台即服务,简称 PaaS ,这层的作用是将一个应用的开发和部署平台作为服务提供给用户;其三是 Infrastructure as a Service 基础设施即服务,简称 IaaS ,这层的作用是将各种底层的计算(比如虚拟机)和存储等资源作为服务提供给用户。

  • HTTP状态码总结

    众所周知,每一个HTTP响应都会带有一个HTTP状态码(HTTP Status Code),是用来表示HTTP服务器响应状态的代码。它由RFC 2616规范定义的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。作为web开发者,平时经常200、301、302、404、500、503等。最近正在开发一些对外的接口(公司内部各系统间互相调用的接口,也算是内部Open API吧),接口调用失败时需要返回一些状态码,考虑借用HTTP状态码的含义,可以让调用方通过状态码就能够大体知道出了什么问题,不用彼此重新约定不熟悉的编码规则,方便沟通及错误定位。自认为想法不错,但是在实际编写中遇到了问题,这个多的状态码该怎么用?就用这个机会好好学习下什么场景用什么状态码,也通过本文记录一下HTTP状态码的内容。在本文中借Michael Kropat的《Choosing an HTTP Status Code — Stop Making It Hard》中提供的状态码使用决策树,区分常用状态码的使用场景。

    注:本文只是提供HTTP状态码的状态信息及含义,以及Michael Kropat总结的常用状态码决策树。

  • HTTP长连接和短连接

    一直听别人说HTTP长连接,只知道长连接比短连接更节省资源、更快捷,但是并不真的知道原因。知其然不知其所以然,对于技术来说,这种状态是比较危险的。所以,还是要挖一下原理,即使挖的比较浅,也要迈出这一步。

    HTTP是应用层协议,传输层使用的是TCP协议,网络层使用的是IP协议。

    IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发送端发出的所有包,并且顺序与发出顺序一致,HTTP协议主要基于TCP协议完成数据传递。

  • HTTP服务介绍

    HTTP(Hyper Text Transfer Protocol)即超文本传输协议,采用请求/响应模型,是目前互联网使用最为广泛的一种网络协议。主要的过程:客户端向服务器发送一个请求,请求的请求头包含请求的方法、URI、协议版本、请求修饰符、客户信息、以及请求的内容等信息;服务器以一个状态行作为响应,包括消息协议的版本、成功或者错误编码、服务器信息、实体元信息以及实体内容。http服务默认端口是80,https默认端口是443。下图为HTTP服务简单的处理图。

    http服务处理图

    本着实用主义,本文不对http协议的原理做过多解释,只是分享一下日常使用Chrome调试http服务的经验,希望能得到同行们的指点。

  • storm笔记:storm基本概念

    本文主要介绍storm中的基本概念,从基础上了解strom的体系结构,便于后续编程过程中作为基础指导。主要的概念包括:

    1. topology(拓扑)
    2. stream(数据流)
    3. spout(水龙头、数据源)
    4. bolt(螺栓,数据筛选处理)
    5. stream group(数据流分组)
    6. reliability(可靠性)
    7. task(任务)
    8. worker(执行者)

    因为上述概念中除了可靠性reliability翻译起来比较合适,其他几个词实在找不到合适的对应词语,就直接使用原词。
    另外一点需要注意的是,本文使用的storm-core版本是0.10.0,包路径为backtype.storm。因为阿里巴巴开源了jstorm,据说strom2.0之后使用jstorm作为master主干,从github上可以看到包路径修改为了org.apache.storm,如果发现有包路径错误的地方,请对应修改。