web开发流程及详解

流程:

需求分析 ——>原型 ——> 架构设计——> 数据库设计——> 代码模块设计——> 测试——> 网站整合——> 集成测试——> 发布
.

架构设计:服务器的架构

服务器是单台的还是集群的?

单台服务器常见的问题,无非就是并发、大数据、单点
并发问题:一个时间点,同时有海量用户去对服务器进行访问
大数据:例如海量数据的存储和传输(性能方面的问题)
单点问题:例如只有一台服务器,如果服务器出现故障了后果不堪设想。
.
集群是由两台或多台服务器构成的一种 松散耦合的计算节点集合,为用户提供网络服务或应用程序的单一客户视图,同时提供接近容错机的故障恢复能力。
集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。
分类:高性能计算科学集群(解决复杂的科学计算问题的IA集群系统)、负载均衡集群(为企业需求提供更实用的系统)、高可用性集群(保证集群整体服务的高可用,考虑计算硬件和软件的容错性)
优点:强扩展能力(集群技术的集群系统则可以扩展到包括成百上千个CPU的多台服务穗,并且还可不断进行调整,以满足不断增长的应用需求)、实现方式容易(服务器集群技术相对其他扩展技术来说更加容易实现,主要是通过软件进行的)、高可用性(集群服务拥有整个集群系统资源的所有权)、易管理性(可使用集群管理器来管理集群系统的所有服务器资源和应用程序)
缺点:集群中的应用只在一台服务器上运行,如果这个应用出现故障,其它的某台服务器会重新启动这个应用,接管位于共享磁盘柜上的数据区,进而使应用重新正常运转。
整个应用的接管过程大体需要三个步骤:侦测并确认故障、后备服务器重新启动该应用、接管共享的数据区,因此在切换的过程中需要花费一定的时间,原则上根据应用的大小不同切换的时间也会不同,越大的应用切换的时间越长。

使用的是什么系统?
部署的是什么环境?
编码的设计

数据库设计:主要针对表的设计和服务器的数据库

单台多台?

数据库集群,就是利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,向客户端提供透明的数据服务。
与分布式数据库系统的区别
1.数据库集群有的具有单份数据集,有的具有两份或多份相似的数据集,有的具有两份或多份实时一致的数据集;而分布式数据库系统往往具有完全不同的数据集。
2.数据库集群往往是同构的系统,要求集群各节点都具有相同的操作系统和数据库系统版本,甚至补丁包的版本也要求保持一致;而分布式数据库系统可以是异构系统,包含不同的操作系统和不同的数据库系统。
3.数据库集群往往建立在高速局域网内;而分布式数据库系统既可以是高速局域网,也可以是跨部门、跨单位的异地远程网络。

读写分离?

读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
.
大多数互联网业务,往往读多写少,这时候,数据库的读会首先称为数据库的瓶颈,这时,如果我们希望能够线性的提升数据库的读性能,消除读写锁冲突从而提升数据库的写性能,那么就可以使用“分组架构”(读写分离架构)。用一句话概括,读写分离是用来解决数据库的读性能瓶颈的
mysql读写分离原理:读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。

使用“读写分离”需要注意的点:

  1. 数据库连接池要进行区分,哪些是读连接池,哪些是写连接池,研发难度增加;
  2. 为保证高可用,读连接池要能够实现故障自动转移;
  3. 主从的一致性问题需要考虑。
缓存?

缓存:也是互联网众筹行用到的一种架构方式,与“读写分离”不同,读写分离是通过多个读库,分摊了数据库读的压力。而存储则是通过缓存的使用,减少数据库读的压力。
缓存的优点

  1. 缓存使用成本要比从库少很多;
  2. 缓存的开发比较容易,大部分的读操作都可以先去缓存,找不到再渗透到数据库。
    缓存的缺点:
    对于缓存,要考虑高可用性,如果缓存一下挂了,所有流量同事聚集到数据库上,那么数据库就挂了。

一般情况下,可以将读写分离看做是缓存都解决不了时的一种解决方案。

数据容量瓶颈?数据库水平切分

数据库水平切分:是一种常见的数据库架构,是通过算法,将数据库进行分割的架构。一个水平切分集群中的每个数据库,通常称为一个“分片”,每个分片中的数据没有重合,所有分片中的数据并集组成全部数据。
水平切分架构解决的问题:数据量非常大,单库容量成为瓶颈,为了提高数据库的写性能,降低单库容量,就可以采用水平切分。

代码模块设计

用的是什么框架?**

(了解框架,python的框架有十几种主流的)

python有15中受欢迎的开源框架。包括事件I/O、OLAP、web开发、高性能网络通信、测试、爬虫等。

1. Django:python web应用开发框架,特点:大而全
最出名的python框架,GAE甚至Erlang都受它影响。Erlang是一种通用的面向并发的编程语言
全自动化的管理后台;只需要使用气ORM,做简单的对象定义,就能生成数据库结构、以及全功能的管理后台。
2. Diesel:基于Greenlet的事件I/O框架
提供一个整洁的API开编写网络客户端和服务器。支持TCP和UDP
3. Flask:python编写的轻量级Web应用框架
基于WSGI工具箱和Jinja2模板引擎,没有默认使用的数据库。
4. Cubes:轻量级Python OLAP框架
包含OLAP、多维数据分析和浏览聚合数据等工具
5. Kartorgraph.py:创造矢量地图的轻量级python框架
Kartorgraph是一个python库,用来为ESRI生成SVG地图
6. Pulsar:python的事件驱动并发框架
可以再不同进程或线程中运行一个或多个活动的异步服务器
7. Web2py:全栈式web框架
python语言提供的全功能web应用框架,旨在敏捷快读的开发web因公,具有快速、安全以及可移植的数据库驱动的应用。兼容Google App Engine
8. Falcon:构建云API和网络应用后端的高性能python框架
鼓励使用REST架构风格,尽可能以最少的力气做最多的事情。
9. Dpark:python版的Spark
Dpark是Spark的python克隆,是一个python实现的分布式计算框架,可以非常方便的实现大规模数据处理和迭代计算。
10. Buildbot:基于python的持续集成测试框架
可以自动化软件构建、测试和发布等过程。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。
11. Zerorpc:基于ZeroMQ的高性能分布式RPC框架
基于ZeroMQ和MessagePack开发的远程过程调用协议实现。可以通过编程或命令行方式调用
12. Bottle:微信python web框架
一个简单搞笑的遵循WSGI的微型pythonWeb框架。只是一个文件,出python标准库外,不依赖于任何第三方模块
13. Tornado:异步非阻塞IO的python web框架
全称是Torado Web Server,可以用作web服务器,也是一个python web的开发框架。
14. webpy:轻量级的python web框架
源代码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,没有URL路由、没有模板也没有数据库的访问
15. Scrapy: python的爬虫框架
scrapy是一个使用python编写的,轻量级,简单轻巧,并且使用起来非常简单。

网站整合:持续集成的开发模式

持续集成开发模式**

Continuous integration,简称CI 持续集成就是指,频繁地将代码集成到主干。 好处:

  1. 快速发现错误,每完成一点更新,就集成到主干,可以迅速的发现错误,定位错误也比较容易。
  2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致集成难度大,甚至难以集成。 持续集成的目的:让产品可以快速迭代,同事还能保持高质量。
    核心措施:代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

还需要了解以下两个概念:

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值