简介以及优势
IT体系架构发展过程
物理机架构:应用部署和运行在物理机上,一套应用一套服务器,使用率低下
虚拟化架构:将物理服务器虚拟成多个逻辑服务器,提高了物理服务器的资源使用率,节省成本,提高了虚拟化的功能
云计算架构:对虚拟化进行统一和高效管理,提供资源
什么是云计算
云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池
(资源包括网络、服务器、存储、应用软件、服务)
云计算所包容的几个层次服务
- SaaS (Software as a Service):一种应用软件
- PaaS (Platform as a Service):一个设备含有操作系统以及上面的应用
- IaaS(Infrastructure as a Service):一个设备含有操作系统
OpenStack是一个开源的iaas云计算平台,用Python语言编写
社区与连接
官方文档:http://docs.openstack.org
社区:www.openstack.org
如何贡献源代码:http://wiki.openstack.org/HowToContribute
源代码管理:http://wiki.openstack.org/GerritWorkflow
什么是RabbitMQ?
MQ全称:message queue
是一种程序对应程序的通信方法
应用程序通过读写出入队列消息来通信
组件之间的通信一般有两种方式
1、组件之间直接通信
2、讲消息发送到一个中间件里
中间件——工作在两个或者多个软件之间
为什么要将消息放到中间件里?
因为松耦合的关系
耦合紧密度高,说明组件之间的依赖关系高,反之亦然
耦合度过高时,一个组件损坏停止工作,就会导致全盘崩溃
用中间件来降低耦合度,那么一个组件损坏时,只有它损坏,不影响其他组件工作
这就大大的提升了工作的效率
AMQP
高级消息队列协议
面向消息的中间件设计
消息的中间件主要用于组件之间的解耦合
消息的发送者无需知道消息的使用者存在,反之亦然
工作原理
在项目中,将一些无需及时返回且耗时的操作提取出来,进行异步处理。而这种方式大大的节省了服务器的请求响应时间,从而提高系统的吞吐量
1、客户端连接消息队列服务器,打开一个channel
2、客户端声明一个exchange并设置相关属性
3、客户端声明一个queue,并设置相关属性
4、客户端使用routing key在exchange和queue之间绑定关系
5、客户端投递消息到exchange
6、接收的消息后,根据消息在key和binding进行消息路由,讲消息投递到队列里
RabbiitMQ的metadata
RabbiitMQ的元数据可以持久化在RAM和disc
根据这个可以把节点分为RAM node和disc node
RAM node只会讲数据存储在RAM
RAM node会将数据持久化放在磁盘
但接待你只有disc node,集群可以有区分
增加或删除节点,RAM node启动时会从disc node下载最新数据,RAM 你的加入的时候要告诉全部disc node,
否则又是重启可能会失败,因为没有RAM node的数据加载