您的位置:首页 > 运维架构 > 网站架构

大型网站架构—————架构的模式2

2016-10-05 17:56 267 查看
【架构模式】
1.分层:
      把系统切分成几个部分。每个部分负责相对单一的职责,然后通过上下层依赖和调用组成一个系统。
网站系统分层分为顺序的三层。
应用层:具体业务和视图展示——比如首页和输入输出的界面展示。就是界面。
          视图层:美工设计师
          业务逻辑:程序员
服务层:为应用层提供服务——比如用户管理 和 购物车
          数据接口层:
          逻辑处理层:程序员
数据层:提供数据存储访问服务——缓存 数据库 文件 搜索引擎。
【规则】
1.不能跨层或者逆向调用,必须是应用层调用服务层。不能应用层调用数据层。也不能逆向。

不同的层结构部署在不同的服务器。各个层专用自己的服务器。

2.分割:分割为独立的更小的粒度。
纵向的切成小块。 按照不同的功能和服务分割开来。包装成高内聚低耦合的模块单元。便于分布式部署 和软件开发维护。
比如把应用层按照不同业务分割,购物 论坛 搜索 广告割成不同应用。独立团队负责部署在不同服务器上。每个小的模块再继续分割。比如购物业务分割为酒店业务 3C业务 小商品业务。还可以继续分为首页 搜索 商品详情。

3.分布式:
分层和分割就是为了部署在不同的服务器。也就是便于分布式部署。按照不同的业务逻辑单元通过远程调用协作来。
分布式办法:
1.按照模块——应用和服务模块 分开放在服务器。提高共同服务的复用。拓展业务。
2.动静分离——把图片 JS CSS这些静态的资源独立放。采用独立域名(对应一个单独的服务器)。
3.分布式数据存储——海量数据部署。NOsql搜索。
4.分布式计算——Hadoop来计算。

4.集群:
多台服务器部署相同的应用构成一个集群。通过负载均衡设备共同对外提供服务。如果一台服务器坏了那么负载均衡设备就会把请求转移到其他服务器。不影响用户。提高系统的可用性。

5.缓存:
性能第一步就是用缓存技术。就是把高频率的信息和高计算频率的数据放在高速的内存中去。加速访问,避免重复计算。

6.异步:
降低软件的耦合性:事物之间的直接关系越少那么造成的彼此互相影响越少,否则牵一发而动全身,一处有问题会带的其他地方也出问题。可以独立发展。系统解耦合有分层 分割 分布还有异步手段。业务之间消息传递不是同步调用,而是把一个业务分成多个阶段,阶段之间通过共享数据的方式异步执行进行协作。
异步架构是典型生产者--消费者模式:两者不存在直接调用,保持数据结构不变,使得彼此之间的功能随意变化互相不受影响。

7.冗余:就是数据在服务器互相重复备份,任何其中一台坏了都不会影响整体使用和丢失数据
数据库定期备份,存档保存,冷备份。
数据库的主从分离,实时同步实现热备份。

——属于DBA的任务

8.自动化:
发布过程自动化。
自动化代码管理
自动化测试
自动化安全检查
自动化部署
自动化报警
自动化失效转移
自动化失效恢复
自动化降级
自动化分配资源

9.安全:
身份确认:公钥密码+验证码
信息加密:登陆 交易等等操作对网络通信按照特殊办法加密。存储的用户敏感信息加密
验证码:避免机器人程序通过耗尽网络资源攻击网站,进行验证码识别
XSS攻击 SQL注入攻击:进行编码转换。把它输入的再做一次翻译转换 和 敏感风险信息输入过滤。——不信任任何客户,防止输入危险的操作请求。

[引申:XSS SQL攻击]

基于代码修改的防御

和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:

步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。

步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。

当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。
风险控制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  缓存 架构