Openstack之Nova源代码简读二

一、前言

学习openstack,对其大体框架已经熟悉,学习其内部基本原理,聊以记录。更简单清楚的nova各组件协调图

1
2
3
4
5
6
1.客户(可以是OpenStack最终用户,也可以是其他程序)向API(nova-api)发送请求:“帮我创建一个虚机”;
2.API对请求做一些必要处理后,向Messaging(RabbitMQ)发送了一条消息:“让Scheduler创建一个虚机”;
3.Scheduler(nova-scheduler)从Messaging获取到API发给它的消息,然后执行调度算法,从若干计算节点中选出节点 A ;
4.Scheduler向Messaging发送了一条消息:“在计算节点 A 上创建这个虚机”
5.计算节点 A 的Compute(nova-compute)从Messaging中获取到Scheduler发给它的消息,然后在本节点的Hypervisor上启动虚机;
6.在虚机创建的过程中,Compute如果需要查询或更新数据库信息,会通过Messaging向Conductor(nova-conductor)发送消息,Conductor负责数据库访问。

Openstack之Nova源代码简读一

一、前言

学习openstack,对其大体框架已经熟悉,学习其内部基本原理,聊以记录。

Compute Service Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的。openstack中其他的组件都可以看做为Nova服务。Nova组件有以下六部分组成:

1
2
3
4
5
6
1 API服务器 API Server(Nova-api) 
2 计算工作者Compute Workers(Nova-compute)
3 网络控制器Network Controller(Nova-network)
4 卷工作者Volume Worker(Nova-volume)
5 调度器Schedule(Nova-schedule)
6 消息队列Message Queue(rabbitmq server)

具体概念可查看这篇,或者这篇

需要注意的是Openstack Nova 仅仅是作为云计算虚拟机的管理工具,其本身并不提供任何的虚拟化技术,而是交由具体的 Hypervisor 来实现虚拟机的创建和管理。

Openstack之keystone源代码简读一

一、前言

学习openstack,对其大体框架已经熟悉,学习其内部基本原理,聊以记录。

作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情:

1
2
3
4
5
1、管理用户及其权限
不同用户拥有不同权限。这里的权限不仅仅指的是用户对于某项资源的权限,也包括对某项用户的权限。
2、维护 OpenStack Services 的 Endpoint
Endpoint 是一个网络上可访问的地址,通常是一个 URL。Service 通过 Endpoint 暴露自己的 API,Keystone 负责管理和维护每个 Service 的 Endpoint。(关键)
3.Authentication(认证)和 Authorization(鉴权)

更多基本概念的介绍可以查看OpenStack keystone详解及调优理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)推荐看

Openstack之keystone源代码简读二

一、前言

上次谈到initialize_admin_application ,今天来看看。

二、APP的启动

wsgi.py文件的有两个初始化函数

1
2
3
4
5
6
7
8
def initialize_admin_application():
return initialize_application(name='admin',
config_files=_get_config_files())


def initialize_public_application():
return initialize_application(name='main',
config_files=_get_config_files())

都指向了initialize_application,进入得:

Openstack之Glance源代码简读一

一、前言

学习openstack,对其大体框架已经熟悉,学习其内部基本原理,聊以记录。

作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情:

1
OpenStack Glance是一种提供发现,注册,和下载的镜像服务。OpenStack Glance是一个提供虚拟机镜像的集中式仓库。通过Glance的RESTful API,可以查询镜像元数据下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(如OpenStack Swift项目)。

更多基本概念的介绍可以查看一文读懂OpenStack Glance是什么

二、安装

我的机器是ubuntu 18,可以按照官网安装。

hadoop(笔记)

信息均来自网络,只是一个笔记,记录而已。

一.hadoop是什么

1.Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。

2.Hadoop=HDFS(文件系统,数据存储技术相关)+Mapreduce(数据处理)

关键的hadoop 2.0架构图
总体架构图

三大核心
分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上

分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算

分布式资源调度平台:YARN——帮用户调度大量的mapreduce程序,并合理分配运算资源

无题(二)

过几天就是愚人节了,说一点胡言乱语吧,就几句话,其实就是想水一水。

0x00.chr

chr(x)=chr(x+256)

0x01.时差

韩国比中国快一个小时

0x02.MD5

二进制md5相等的有

scrapy 浅分析(四)

0x00.前言

前面一

前面二

前面三

这次接着上回要提到下载的地方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def _next_request_from_scheduler(self, spider):
slot = self.slot
request = slot.scheduler.next_request()
if not request:
return
#去下载
d = self._download(request, spider)
#处理下载返回结果
d.addBoth(self._handle_downloader_output, request, spider)
d.addErrback(lambda f: logger.info('Error while handling downloader output',
exc_info=failure_to_exc_info(f),
extra={'spider': spider}))
d.addBoth(lambda _: slot.remove_request(request))
d.addErrback(lambda f: logger.info('Error while removing request from slot',
exc_info=failure_to_exc_info(f),
extra={'spider': spider}))
d.addBoth(lambda _: slot.nextcall.schedule())
d.addErrback(lambda f: logger.info('Error while scheduling new request',
exc_info=failure_to_exc_info(f),
extra={'spider': spider}))
return d

scrapy 浅分析(三)

0x00.前言

前面一

前面二

这次看看引擎里面的东西。在此之前看看文档中的流程

1
2
3
4
5
6
7
8
9
10
11
12
Scrapy中的数据流由执行引擎控制,其过程如下:

1.引擎打开一个网站(open a domain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。
2.引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。
3引擎向调度器请求下一个要爬取的URL。
4.调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。
------------------------------------------------------------------(下面下一篇提到)
5.一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。
6.引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。
7.Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。
8.引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。
9.(从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。

0x01.引擎

59