网站数据库

Python-Django搭建网站流程

删除回忆录丶 提交于 2019-12-06 08:50:13
1. 创建Django REST framework工程 1.1手动创建工程文件夹 1.2进去工程文件夹内,执行命令:django-admin startproject web_project创建工程目录 1.3修改,添加目录结构 apps 存放Django的应用 libs 存放第三方的库文件 settings 存放配置文件的目录,分为开发dev和线上prod utils 存放项目自己定义的公共函数或类等 docs 用于存放一些说明文档资料 2.修改配置文件 2.1 将Django工程中的settings.py文件拷贝到新创建的settings目录下,并重命名为dev.py,并修改入口文件manage.py文件中配置文件路径。 2.2修改settings/dev.py 文件中的路径信息 我们将Django的应用放到了 工程目录/web_project/apps 目录下,如果创建一个应用,比如users,那么在配置文件的INSTALLED_APPS中注册应用应该如下: INSTALLED_APPS = [ ... 'web_project.apps.users.apps.UsersConfig', ] 为了还能像如下方式简便的注册引用,我们需要向Python解释器的导包路径中添加apps应用目录的路径。 INSTALLED_APPS = [ ... 'users.apps

互联网架构演进模型

别来无恙 提交于 2019-12-05 16:35:16
6、使用反向代理和CDN加速网站响应 为了进一步加快网站的访问速度,可以考虑使用CDN和反向代理。CDN部署在网络提供商的机房,当用户访问时,可以从距离用户最近的网络提供商机房获取数据。反向代理部署在网站自己的中心机房,当用户请求到达机房时,优先访问的服务器是反向代理服务器,如果反向代理中缓存了用户请求的资源,那么就直接返回给用户,加快了响应的速度,也减轻了后端负载的压力。CDN与反向代理的基本原理都是缓存。 这一阶段涉及到的知识体系: 需要了解CDN和反向代理相关的知识 | 7、数据库的分库分表(垂直/水平拆分)及分布式文件系统 我们的网站演进到现在,用户、商品、交易的数据都还在同一个数据库中。尽管采取了增加缓存,读写分离的方式,但随着数据库的压力继续增加,数据库的瓶颈越来越突出,此时,我们可以采用分库分表两种方法进行解决。 分库: 又叫垂直拆分 ,就是把数据库中不同的业务数据拆分到不同的数据库中,结合现在的例子,就是把用户、商品、交易的数据分开。优点:解决了原来把所有业务放在一个数据库中的压力问题,可以根据业务的特点进行更多的优化。缺点:需要维护多个数据库。 分库所遇到的问题: 1)需要考虑原来跨业务的事务;2)跨数据库的join 解决方案: 在应用层尽量避免跨数据库的事物,如果非要跨数据库,尽量在代码中控制。我们可以通过第三方应用来解决,如上面提到的mycat

设计千万级用户量网站的高并发架构!!!

百般思念 提交于 2019-12-05 02:30:14
(1)单块架构 网站开始建立时,用户少 , 网站架构都是用单体架构设计,共部署 3台服务器,1台应用,1台数据库,1台图片。 1、应用服务器上发布, 可能是把应用服务器上的 Tomcat给关掉,替换系统的代码war包,重新启动Tomcat。 2、数据库服务器,存全部核心数据。 3、网络文件系统(NFS) 作图片服务器,存网站全部图片。应用服务器上代码会连接以及操作数据库以及图片服务器。 如下图所示:    但是这种纯单块系统架构下,有高可用问题存在,最大的问题就是应用服务器可能会故障,或者是数据库可能会故障 所以在这个时期,一般稍微预算充足一点的公司,都会做一个初步的高可用架构出来。 ( 2)初步的高可用架构 应用服务器而言,集群化部署,初期用户量少的情况下,一般就是部署两台应用服务器,前面会放一台服务器部署负载均衡设备,如说 LVS(Linux虚拟服务器),均匀把用户请求打到两台应用服务器上去。 如此时某台应用服务器故障了,还有另外一台应用服务器是可以使用的,这就避免了单点故障问题。如下图所示: 对于数据库服务器而言,此时一般也会使用主从架构,部署一台从库来从主库同步数据,这样一旦主库出现问题,可以迅速使用从库继续提供数据库服务,避免数据库故障导致整个系统都彻底故障不可用。如下图: ( 3)千万级用户量的压力预估 这个假设这个网站预估的用户数是 1000万,那么根据28法则

python爬虫之爬取网站到数据库

十年热恋 提交于 2019-12-05 00:10:33
一、根据已有程序运行得到的结果 完整代码如下: import sqlite3; class DB(object): """数据库访问方法的实现""" """初始化api 产生数据操作的对象 conect 操作的游标""" def __init__(self): self.conn={}; self.cus={}; #初始化数据库链接的api #1产生数据库链接对象 self.conn=sqlite3.connect(r'Test.db'); #2.产生操作的游标 self.cus=self.conn.cursor(); pass; def create_table(self): sql = " CREATE TABLE if not exists mynews (CrawlTime char,Title char,Content char,PublishTime char,Origin char)" self.conn.execute(sql) self.conn.commit() print('create table successfully') def insert_into_news(self,ops): self.conn.execute('insert into mynews(CrawlTime,Title,Content,PublishTime,Origin)

一步步带你,如何网站架构

风格不统一 提交于 2019-12-04 20:49:27
#何为大型网站# ##大型网站特性## 既然说的是大型网站架构,那么 架构的背后自然是解决人因面对大型网站特性而带来的问题 。这样可以先给大家说下大型网站的特性, 这些特性带来的问题就是人要解决的问题 : 高并发、大流量:PV 量巨大; 高可用:7*24 小时不间断服务; 海量数据:文件数目分分钟 xxTB; 用户分布广泛,网络情况复杂:网络运营商; 安全环境恶劣:黑客的攻击; 需求快速变更,发布频繁:快速适应市场,满足用户需求; 渐进式发展:慢慢地运营出大型网站; ##大型网站目标## 既然说到了大型网站的特性,那么**解决这些特性带来的问题要达到什么目标呢?**如下: 每个目标背后面临着技术、设计、维护等诸多方面的挑战; 而目标本身的期望值也会根据实际情况进行调整,这也意味着网站架构建设是个不断调整的过程。 有了问题,也定了伟大的目标,那么网站在不同阶段面对不同的问题,是如何解决的?又是如何一步步成长为大型网站架构,实现这些伟大的目标呢? ##如何网站架构## 首先,什么是大型网站架构呢? 其实大型网站架构的概念对于每一个开发者来说很笼统、很模糊,正如盲人摸象,看到的、了解到的只是很小的一部分,大部分情况下我们只是负责架构中的一小块内容,所以很难清晰地给出具体定义。这就是所谓“不识庐山真面目 只缘身在此山中”的尴尬吧。所以我们要跳出来,站在宏观的角度

大型网站的演化之路——读《大型网站技术架构》

百般思念 提交于 2019-12-04 20:35:32
大型网站的演化之路——读《大型网站技术架构》 ____ author:姚毛毛的博客 & 妖生 01 大型网站or软件有什么特点? 高并发、大流量,微信都日活10亿了 7×24的高可用,俗称的4个9(99.99%) 海量数据的存储与管理 全国甚至全球的用户分布,复杂网络 安全环境很差 需求变更频繁,需要快速迭代 最后,是渐进式的发展。 所有大型网站都是从一个小网站发展起来的。 好的网站与复杂的架构都是演化来的,而不是一开始就设计好的。 当年才出发的时候,谁也想不到微信可以日活十亿,最初的时候肯定也没有成千上万的服务器集群对不对。 02 最初与第一次的演化之路:应用与数据的分离 我们最初的小型网站是什么样的? 从逻辑上看,一个应用服务、一个数据库;从物理上看,一台服务器就搞定了。 在用户量增多后,我们开始需要将应用跟数据库分离。 那应用跟数据库所需要的服务器配置是一样的吗? 当然是NO。 应用需要处理更多的业务逻辑,所以需要好一点多一点的CPU。 数据库则要快速检索磁盘跟放置数据缓存,因此需要快一点的磁盘和大一点的内存。 当然,所有演进的目的都是想更高、更快、更强。只是有时候没法做到面面俱到,需要取舍。 03 第二次演进:缓存优化 恭喜你,网站优化了一次,体验变好了,用户也开始增多了,可是烦恼的又来了。 用户的增多,带来的数据库压力也大了,怎么办?

phpweb网站搬家办法

好久不见. 提交于 2019-12-04 08:05:40
搬家过程: 1、备份网站文件和数据库, 注:数据库的备份一定要注意,编码格式(utf-8)哦,或者导出数据库的文件打开看看,是不是乱码,不是就可以;有问题就需要注意导出时候的编码方式了。平时备份数据库的时候也注意一下。 2、本地环境搭建 本地环境,我常用的xampp 和 apmserv,这两个都差不多。apmserv相对来说,傻瓜一些,注意保证apache的启动哦,80端口经常会被一些莫名程序占用的。 3、访问phpmyadmin新建一个数据表比如phpweb 4、访问本地127.0.0.1/你的文件夹/base/install 重新安装网站,数据库名就是刚新建的phpweb,用户名密码就是本地数据库登陆的用户名和密码,如果你把install文件删掉了,没关系,从备份里面找一个,如果没有,下载个。 5、进入phpmyadmin,清空你的数据表, 6、在pphmyadmin中导入你刚刚通过网站备份下来的数据库 7、访问吧,OK了 这种方法避免了修改config.inc.php。完全不用动代码啦 来源: oschina 链接: https://my.oschina.net/u/1540118/blog/803586

从RDBMS到NoSQL的架构演化

白昼怎懂夜的黑 提交于 2019-12-04 03:22:22
1. 从RDBMS到NoSQL的架构演化 互联网时代背景下大机遇,为什么用nosql 1 单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 1.数据量的总大小 一个机器放不下时 2.数据的索引(B+ Tree)一个机器的内存放不下时 3.访问量(读写混合)一个实例不能承受 如果出现了上述1 or 3个上述瓶颈,架构开始演化到下一个阶段: 2 Memcached(缓存)+MySQL+垂直拆分 后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带了了比较高的IO压力。在这个时候,Memcached就自然的成为一个非常时尚的技术产品。 Memcached作为一个独立的分布式的缓存服务器,为多个web服务器提供了一个共享的高性能缓存服务,在Memcached服务器上,又发展了根据hash算法来进行多台Memcached缓存服务的扩展

大型网站技术架构(1)

允我心安 提交于 2019-12-03 19:06:04
网站都是从小网站一步一步发展为大型网站的,而这之中的挑战主要来自于庞大的用户、安全环境恶劣、高并发的访问和海量的数据,任何简单的业务处理,一旦需要处理数以 P 计的数据和面对数以亿计的用户时,问题就会变的很棘手 下面我们就来说说这个演变过程: 初始阶段 大型网站都是由小型网站演变而来的,网站架构也一样 小型网站最开始没有太多人访问,只需要一台服务器就绰绰有余,就像这样: 应用程序、数据库、文件等所有资源都在一台服务器上,通常使用 Linux PHP MySQL Apache 就可以完成整个项目部署,然后再买个域名,租一个廉价的服务器就可以开始我们的网站之旅了 应用服务与数据服务分离 随着业务的发展,逐渐的一台服务器已经不能满足需求,这时我们可以将 应用与数据分离 分离之后我们使用到三台服务器:应用服务器、文件服务器和数据库服务器,如下所示: 对于这三台服务器要求各不相同: 应用服务器 要处理大量的业务逻辑,所以需要更好更快更强大的 CPU 数据库服务器 需要快速的进行磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存 文件服务器 需要存储用户上传的文件资源,因此需要更大的硬盘存储空间 应用与数据分离后,各个的职责变得更加专一,网站的性能得到进一步的提升,但随着用户的继续增加,我们需要对网站架构进一步优化 使用缓存改善性能 网站的访问一样遵循二八定律:80% 的业务访问集中在 20%

Java学习流程

我怕爱的太早我们不能终老 提交于 2019-12-03 17:25:44
此篇为转载:原文链接: https://www.cnblogs.com/MonkTang/p/9204993.html Java学习流程 首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解!   其中J2SE是关键,如果学好了java se 部分,基础扎实了,后面进阶学习也比较轻松!   补充说明一下:我觉得学习java比较合适的方法是先把所有的知识点过一遍,然后把所有的知识点串起来,边做开发边补充,就像写文章一样,先写好框架,然后再去润色填充。因为前期在学习的时候你不知道用在哪里,不知道用途,没有学习的目的,所以很多概念就很难理解,时间久了也容易遗忘。但是如果你直接从实践开始学习,很多知识点都充串联起来了,而且会印象深刻,当然前提条件是你已经入门,已经能写一些简单的程序,我个人现在也是按照这个方式在学习了,感觉很有效。    说明: 本文介绍的内容过于详尽,这里我补充一些基本的学习路线,相对比较简略,但是比较可行:     1、基础语法。也就是我们常说,各种编程语言都有的部分,数据类型,数组,for循环,do-while,switch……等等,是学习任何编程语言的基础,很关键。     2、面对对象:①类和对象;②Java的三大特性(封装、继承、多态)