信息存储

分布式文件系统FastDFS详解

99封情书 提交于 2019-12-02 00:07:42
上一篇文章《 一次FastDFS并发问题的排查经历 》介绍了一次生产排查并发问题的经历,可能有些人对FastDFS不是特别的了解,因此计划写几篇文章完整的介绍一下这个软件。 为什么要使用分布式文件系统呢? 嗯,这个问题问的好,使用了它对我们有哪些好处?带着这个问题我们来往下看: 单机时代 初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项目目录下建立静态文件夹,用于用户存放项目中的文件资源。如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分。例如: resources\static\file 、 resources\static\img 等。 优点 :这样做比较便利,项目直接引用就行,实现起来也简单,无需任何复杂技术,保存数据库记录和访问起来也很方便。 缺点 :如果只是后台系统的使用一般也不会有什么问题,但是作为一个前端网站使用的话就会存在弊端。一方面,文件和代码耦合在一起,文件越多存放越混乱;另一方面,如果流量比较大,静态文件访问会占据一定的资源,影响正常业务进行,不利于网站快速发展。 独立文件服务器 随着公司业务不断发展,将代码和文件放在同一服务器的弊端就会越来越明显。为了解决上面的问题引入独立图片服务器,工作流程如下:项目上传文件时,首先通过ftp或者ssh将文件上传到图片服务器的某个目录下,再通过ngnix或者apache来访问此目录下的文件

理解session,cookie和token

此生再无相见时 提交于 2019-12-01 22:07:34
发展史 很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮 但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的,所以想出的办法就是给大家发一个会话标识(session id), 说白了就是一个随机的字串,每个人收到的都不一样, 每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了 这样大家很嗨皮了,可是服务器就不嗨皮了,每个人只需要保存自己的session id,而服务器要保存所有人的session id ! 如果访问服务器多了, 就得由成千上万,甚至几十万个。 这对服务器说是一个巨大的开销 , 严重的限制了服务器扩展能力, 比如说我用两个机器组成了一个集群, 小F通过机器A登录了系统, 那session id会保存在机器A上, 假设小F的下一次请求被转发到机器B怎么办? 机器B可没有小F的 session id啊。 有时候会采用一点小伎俩:

电脑硬件详细介绍

坚强是说给别人听的谎言 提交于 2019-12-01 19:23:06
一 .系统硬件分类说明 按照硬件用途进行分类: 家用硬件设备: 台式机 笔记本 企业硬件设备: 服务器设备 按照硬件性能进行分类: 机架服务器: 互联网环境中 (dell IBM联想 HP 华为 浪潮) 普通机架服务器(几万 ~ 10万+) 小型机服务器 (几十万~ 100万+) 大型机服务器 (百万 ~ 几百万+) 刀片服务器: 物理空间限制 性能要求 塔式服务器: 家用服务器设备 二.按照硬件外观进行分类 1U服务器: U服务器厚度 1U=4.45cm 2U服务器: 4U服务器: 三.系统硬件组成部分 1) CPU(中央处理器) 大脑 运算/控制 2) 硬盘 可以存储数据(永久存储) 3) 主板 可以串联多个设备 4) 内存 可以存储数据(临时存储) 5) 电源 提供设备供电 6) 风扇 散热 7) 网卡 实现和其他主机设备通讯 8) 光驱 安装系统 9) 阵列卡 将多个硬盘整合成一块 10) 远程管理卡 远程开机/远程安装系统 四.CPU 作用: 运算/控制 关注信息: 路数 - 服务器中CPU颗数(单路1颗 双路2颗 三路3颗 四路4颗) 4路4颗就是代表4个cpu( 路.颗=量词 ) 核数 - 服务器并行处理任务能力(软件运行起来产生进程信息) 几核处理(核)字就是代表性能;4核,8核处理器也是只代表一个cpu处理器 五.磁盘 作用: 存储数据信息(永久

Mysql中的索引

末鹿安然 提交于 2019-12-01 17:13:19
1,什么是索引,为什么要使用索引? 索引是帮助Mysql高效获取数据的排好序的数据结构。建立索引可以帮助我们快速检索我们需要的信息,减少磁盘的I/O次数,加快检索速度。索引的数据结构包括:二叉树,红黑树,Hash表,B-树等。 2,数据查询的方式 二叉查找树的方式查找信息 普通情况下,在一个二叉树中查找到5非常快速。只需要2步,但在某些极端情况下,如对于顺序插入信息的二叉树,查找到我们需要的信息就非常麻烦了。 红黑树 红黑树是一种 自平衡二叉查找树 ,就是会自动平衡更新根节点和其它节点的位置,也就是说根节点和其它节点的位置是不固定,会根据插入的信息进行动态改变的。 按照1~5的顺序插入数据后,会重新排列分支节点的位置。 对于少量数据使用红黑树是完全可以的,但是一个项目的数据库中存储的数据都是10万条以上,再使用红黑树,树的度又会变得很大了。这个时候就可以使用B 树了。 B 树 B树是一种 多路自平衡搜索树 ,它是一种特殊的平衡二叉树,但是B书允许每个节点有更多的子节点。B树示意图如下: B树的特点: (1)所有键值分布在整个树中(2)任何关键字出现且只出现在一个节点中 (3)搜索有可能在非叶子节点结束(4)在关键字全集内做一次查找,性能逼近二分查找算法 比如我们想要找到主键为28的数据,过程如下: 1,根据根节点找到磁盘块1,进行一次I/O(磁盘的输入和输出)操作; 2

Python中的爬虫

不打扰是莪最后的温柔 提交于 2019-12-01 12:49:10
目录 爬虫 1. 什么是爬虫 : 2. 爬虫的分类 : 3. 爬虫安全性的探究 4. http & https 头部信息 1、通用头部 2、请求头部 3、响应头部 https的加密方式 5. request模块 1. 爬取搜狗首页的页面源码数据 2. 实现一个简易的网页采集器 请求参数的动态化 3. 动态加载的数据 通过另一个网络请求 (ajax) 请求到的数据 4. 爬取肯德基的餐厅位置信息 5. 面试题 6. 数据解析 1. 如何爬取图片数据? 2. 数据解析 数据解析 正则解析 bs4解析 xpath解析 7. 代理 8. cookie 9. 验证码的识别 模拟登陆 10. 使用线程池提升爬取数据的效率 11. 单线程+多任务的异步协程 1. 解释说明 2. 协程对象 - 特殊的函数 3. 基于协程对象创建任务对象 4. 事件循环对象 5. 多任务异步协程 6. 给任务对象绑定回调 7. 多任务异爬虫 12. selenium selenium的基本使用 捕获动态加载的数据 动作链的使用 无头浏览器 - 无可视化界面 规避网站对selenium的监测 13. 12306模拟登陆 14. 空气质量数据爬取 爬虫分析 1. 获取ajax请求的动态变化且加密的请求参数(d:xxx) 2. 携带捕获到请求参数进行请求 : 3. 对捕获到的加密的响应数据进行解密 4. 完整代码 15.

01-视图及路由

こ雲淡風輕ζ 提交于 2019-12-01 12:19:20
1、Flask简介   Web应用程序的本质,Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。 Web框架   Web框架就是协助开发者快速开发Web应用程序的一套功能代码。开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码。(就是要么重新造轮子,要么用轮子造轮子) 为什么要用Web框架?   Web网站发展至今,特别是服务端,涉及到的知识、内容非常广泛。这对程序员的要求也会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以用框架来处理,那么程序开发人员可以把精力放在具体任务的逻辑上面。使用框架的优点(1、稳定性和可拓展性强2、可以降低开发难度,提高开发效率)。   python中常用的Web框架有flask,django,tornado Flask   Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。   Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask

北京地铁出行线路规划

情到浓时终转凉″ 提交于 2019-12-01 10:17:07
参考 https://www.cnblogs.com/myp123/p/11669391.html https://www.cnblogs.com/xupppp/p/11663525.html 项目介绍 规划 https://www.cnblogs.com/RittLiii/p/11570168.html Github 实现语言 java 主要算法 Dijkstra 类 Main 程序入口,进行输入操作,判断输入 Station model类,储存站点信息 Routine model类,储存地铁路线信息 ReadSubwayMessage 文件读取输出,实现subway.txt内容的提取,和查询内容文件输出 Dijkstra 算法实现最短路径 一、文件存储 将地铁线路站点存入subway.txt文件中 1号线 苹果园 古城 八角游乐园 八宝山 玉泉路 五棵松 万寿路 公主坟 军事博物馆 木樨路 南礼士路 复兴门 西单 天安门西 天安门东 王府井 东单 建国门 永安里 国贸 大望路 四惠 四惠东 2号线 积水潭 鼓楼大街 安定门 雍和宫 东直门 东四十条 朝阳门 建国门 北京站 崇文门 前门 和平门 宣武门 长椿街 复兴门 阜成门 车公庄 西直门 积水潭 4号线大兴线 安河桥北 北宫门 西苑 圆明园 北京大学东门 中关村 海淀黄庄 人民大学 魏公村 国家图书馆 动物园 西直门 新街口

分布式调用链监控组件的实践与比较(一)实践

荒凉一梦 提交于 2019-12-01 10:01:21
https://blog.csdn.net/ityouknow/article/details/82393097 引言:最近在调研与选型分布式调用链监控组件。选了主要的三种APM组件进行了实践与比较。本来打算一篇文章写完的,篇幅太长,打算分两篇。本文主要讲下链路traceing的基本概念和几种APM组件的实践,实践部分也没给出特别详细的步骤,因为本文重点不在具体的步骤。第二篇将会讲下几种APM选型的比较与性能测试。 1. 问题背景 微服务架构下,服务按照不同的维度进行拆分,一次请求请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。 分布式调用链监控组件在这样的环境下产生了。最出名的是谷歌公开的论文提到的 Dapper 。开发Dapper是为了收集更多的复杂分布式系统的行为信息,然后呈现给Google的开发者们。这样的分布式系统有一个特殊的好处,因为那些大规模的低端服务器,作为互联网服务的载体,是一个特殊的经济划算的平台。想要在这个上下文中理解分布式系统的行为,就需要监控那些横跨了不同的应用、不同的服务器之间的关联动作。 市面上的APM

Rancher 2.1平台搭建及使用

爱⌒轻易说出口 提交于 2019-12-01 09:56:56
一、概述 1.1、什么是Rancher Rancher是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。 Rancher可以轻松地管理各种环境的Kubernetes,满足IT需求并为DevOps团队提供支持。 Kubernetes不仅已经成为的容器编排标准,它也正在迅速成为各类云和虚拟化厂商提供的标准基础架构。Rancher用户可以选择使用Rancher Kubernetes Engine(RKE)创建Kubernetes集群,也可以使用GKE,AKS和EKS等云Kubernetes服务。 Rancher用户还可以导入和管理现有的Kubernetes集群。 Rancher支持各类集中式身份验证系统来管理Kubernetes集群。例如,大型企业的员工可以使用其公司Active Directory凭证访问GKE中的Kubernetes集群。IT管​​理员可以在用户,组,项目,集群和云中设置访问控制和安全策略。 IT管​​理员可以在单个页面对所有Kubernetes集群的健康状况和容量进行监控。 Rancher为DevOps工程师提供了一个直观的用户界面来管理他们的服务容器,用户不需要深入了解Kubernetes概念就可以开始使用Rancher。 Rancher包含应用商店,支持一键式部署Helm和Compose模板。Rancher通过各种云、本地生态系统产品认证

Quartz任务调度(3)存储与持久化操作配置详细解

两盒软妹~` 提交于 2019-12-01 08:57:40
内存存储RAMJobStore Quartz默认使用RAMJobStore,它的优点是速度。因为所有的 Scheduler 信息都保存在计算机内存中,访问这些数据随着电脑而变快。而无须访问数据库或IO等操作,但它的缺点是将 Job 和 Trigger 信息存储在内存中的。因而我们每次重启程序,Scheduler 的状态,包括 Job 和 Trigger 信息都丢失了。 Quartz 的内存 Job 存储的能力是由一个叫做 org.quartz.simple.RAMJobStore 类提供。在我们的quartz-2.x.x.jar包下的org.quartz包下即存储了我们的默认配置quartz.properties。打开这个配置文件,我们会看到如下信息 # Default Properties file for use by StdSchedulerFactory # to create a Quartz Scheduler Instance, if a different # properties file is not explicitly specified. # org.quartz.scheduler.instanceName: DefaultQuartzScheduler org.quartz.scheduler.rmi.export: false org.quartz