某XXFS分布式文件系统设计概述

一、为应对海量数据,系统架构发生变迁

    1. 传统系统架构:Server + SAN

        主导厂商:EMC/NetAPP/Oracle/IBM

        特点:使用SAN存储(FC),价格昂贵,但速度快,响应时间10ms

        应用接口:提供通用POSIX/SQL接口

    2. 当前系统架构:IP + Cluster

        主导厂商:Google/Amazon

        特点:便宜,但速度较慢(可接收), 100ms

        应用接口:使用GFS/BigData,不支持POSIX/SQL接口

 

二、XX分布式文件系统:面向企业计算和存储系统的断代性创新的分布式文件系统

   

 基本架构如下:

----------------------------------------------------------------------------------------------------

    NFS/CIFS                                                               (Client)

----------------------------------------------------------------------------------------------------

    Cloud Gateway(可选)       POSIX NODE           (Service Layer)

----------------------------------------------------------------------------------------------------

    LPM Switch(可选)             Ethernet Switch        (Distribution Layer)

----------------------------------------------------------------------------------------------------

    Local Storage Layer                                                (Storage Layer)

----------------------------------------------------------------------------------------------------

 

其中,NFS/CIFS是客户端,提供对通过文件访问协议支持。

 

POSIX NODE:

简称P Node,用来向客户端提供POSIX服务;同时提供Server端的CACHE和WRITE LOG. 主要缓存对FS的写,以批量更新。

同时,为避免P Node失效,会将待写数据备份到别的P Node,等备份节点也写成功后才会向客户端返回。P Node对FS的元数据管理,要借助本地文件系统。

内嵌Dedup引擎,以对数据进行分片和数据去重。

 

Ethernet Switch:

简称L NODE,是XXFS的卷管理器,负责对P NODE中数据分片的定位。

可以多个L NODE组成一个DHT环,以实现负责均衡。

在C NODE(PAXOS,系统中心控制节点)的控制下,决定了数据存储位置。

 

Local Storage Layer:

简称O NODE,负责数据的本地存储和保护,实现了DPU/DPG(数据保护单元和数据保护组),它们采用EraseCode来具体实现。

 

好的,使用 Scrapy 框架可以更加方便地进行翻页和数据抓取。下面是一个示例代码,可以爬取研招网的考研信息并存储到 csv 文件中。 首先,需要在终端中使用以下命令创建一个 Scrapy 项目: ``` scrapy startproject kaoyan_info ``` 然后,在项目的 kaoyan_info/spiders 目录下创建一个名为 kaoyan_spider.py 的文件,并将以下代码复制进去: ``` import scrapy from scrapy.selector import Selector from scrapy.http import FormRequest import csv class KaoyanSpider(scrapy.Spider): name = 'kaoyan' allowed_domains = ['yz.chsi.com.cn'] start_urls = ['https://yz.chsi.com.cn/zsml/queryAction.do'] def parse(self, response): # 设置查询条件 formdata = { 'ssdm': '', 'yjxkdm': '', 'yjxkdmValue': '', 'zymc': '', 'xxfs': '', 'pageno': '1' } yield FormRequest.from_response(response, formdata=formdata, callback=self.parse_result) def parse_result(self, response): # 解析查询结果 sel = Selector(response) rows = sel.xpath('//table[@class="zsml-table"]/tr') for row in rows[1:]: cols = row.xpath('.//td/text()').extract() yield { '学校': cols[0].strip(), '专业': cols[1].strip(), '科类': cols[2].strip(), '计划数': cols[3].strip(), '招生人数': cols[4].strip() } # 翻页 params = { 'ssdm': '', 'yjxkdm': '', 'yjxkdmValue': '', 'zymc': '', 'xxfs': '', 'pageno': str(int(response.request.meta['page']) + 1) } yield FormRequest.from_response(response, formdata=params, callback=self.parse_result, meta={'page': params['pageno']}) def closed(self, reason): # 保存数据到 csv 文件 with open('kaoyan.csv', 'w', newline='') as csvfile: fieldnames = ['学校', '专业', '科类', '计划数', '招生人数'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for item in self.items: writer.writerow(item) ``` 这个爬虫会自动翻页,将每一页的查询结果解析出来,并保存到一个 csv 文件中。你可以在项目的根目录下运行以下命令来运行爬虫: ``` scrapy crawl kaoyan ``` 最后,当爬虫运行结束时,会自动将抓取到的数据保存到 kaoyan.csv 文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值