大型网站技术架构核心原理与案例分析(李智慧)学习笔记2--大型网站架构五大核心要素

一、系统架构涉及需要关注和平衡的五大核心要素

1.性能

           衡量标准:响应时间、TPS、QPS、系统性能计数器等等

2.可用性

           衡量标准:网站7*24小时,有几个9的可用性

3.伸缩性

          衡量标准:网站是否可以随意通过增加机器增大系统负载能力

4.扩展性

           衡量标准:网站随意新增业务,是否可以最小化影响现有产品线

5.安全性

         衡量标准:针对现有或潜在的各种攻击和窃密手段,是否有可靠的应对策略

二、性能优化

1.网站性能测试

1.1客观指标:响应时间、支持并发数、吞吐量(TPS或QPS)、性能计数器

1.2不同视角下性能

          用户视角关注响应时间、正确性

          开发人员关注响应延时、系统并发能力、系统稳定性、系统吞吐量等等

          运维人员关注:服务器基础设施性能和利用率,如宽带、cpu、磁盘、IO等等

1.3.测试方法:性能测试、负载测试、压力测试、稳定性测试

1.4.出性能测试报告

1.5性能优化策略

            web前端优化

                      a,浏览器优化:  减少http请求(合并压缩js、css、图片)、使用浏览器缓存、启用压缩(例如gzip)、减少cookie数据传输、调整页面加载资源顺序(css最上面、js偏下面取决于浏览器加载顺序)

                      b.CDN缓存: cdn缓存静态资源包括js、css、图片、文件、静态页面等

                     c.反向代理缓存:例如启用nginx缓存,缓存静态资源,反向代理服务器一般好可提供负载均衡提供集群访问,提高并发性能

            应用服务端和存储性能优化

                   非代码优化 :分布式缓存(缓存是性能优化第一方案)、无状态集群、异步处理、存储设备选择(机械盘对比固态硬盘,传统数据库和nosql数据库选择、RAID和HDFS)

                 代码层面优化:资源复用(线程池、连接池、网络连接、复杂对象)、多线程、数据结构算法选择、垃圾回收JVM参数优化调整

三、可用性优化

1.标准 7*24小时情况下,每年能达到几个9,系统允许不可用时间多少~~

2.高可用架构

高可用应用层

             集群:

                   1.出于提高系统并发和可用行,应用层当冗余,提供集群服务,这样要求集群无状态,因此集群需要统一用户session管理,最佳方案分布式session集中管理(Redis集群)

                   2.通过负载均衡设备提供访问入口,如lvs+nginx等方案 

高可用服务层

               dubbo提供公用服务注册和发现访问

               SpringCloud提供公用服务注册和发现访问

               关注:服务分级管理、服务调用超时设置、异步调用、服务降级(拒绝服务或关闭服务)、接口幂等性设计

高可用数据服务

              传统数据库,做冗余处理,主备提供服务访问(TDDL),既可以用于备份,也可以用于故障转移,数据恢复

              nosql数据库,本身设计就提供副本,可以提供数据备份、同步、主从选举故障切换

高可用网站的软件质量保证

             网站发布版本流程规范化、流程化管理

             代码版本分支管理

             自动化测试

             自动化部署

             预生产验证、灰度发布

网站监控管理         

            监控数据采集:

                      1.用户行为日志采集(访问路径、页面停留时间、操作、ip地址等)

                       2.服务器性能监控

                       3.运行数据报告

             监控自动化管理:

                   系统故障报警: cpu 、磁盘、带宽等等

                  自动故障恢复:失效转移切换、恢复、自动优雅降级

四、伸缩性优化

      应用服务器集群伸缩性设计:

                         通过负载均衡服务器实现伸缩,负载均衡方式有HTTP重定向负载均衡、DNS域名解析负载均衡、反向代理负载均衡、IP负载均衡、数据链路层负载均衡

                      常用方式:LVS+nginx    即:数据链路层负载均衡+反向代理

     分布式缓存集群的伸缩性设计:

                    memcache集群使用一致性hass算法

                    redis集群通过16384 hash个槽(slot),实现分片管理

     数据服务器集群伸缩性处理:                    

                     传统型数据库,使用TDDL 、cobar服务器集群等

                      nosq数据库,就是为海量数据,服务集群设计,本身包含伸缩性设计(MongoDB配置服务器存储元数据、HBase的HMaster存储元数据)

 

五、可扩展设计

        目的:模块化,系统级别解耦,抽离核心业务,提供公共服务,提高彼此扩展影响和复用能力

        方式:

                  分布式消息队列解耦系统:RabbitMq  RocketMq等

                  分布式治理框架解耦服务注册发现调用: dubbo  SpringCloud

六、安全性设计

      没有绝对的安全,但是也有针对安全和潜在安全的应对策略:

      XSS攻击(跨站脚本工具):

                   危害:窃取用户Cookie、密码等,进而伪造交易、盗窃用户财产、窃取情报等

                   防范:特殊字符消毒转义、HttpOnly设置防止窃取

     sql注入攻击:

                攻击前准备:通过开源资源获取开源表结构、错误堆栈回显、盲注

                防范:特殊字符转义过滤、参数绑定

    CSRF攻击(跨站请求伪造):

              防范方式:表单Token生成验证、验证码、检查请求来源

     文件上传攻击:

                设置文件上传文件类型,修改文件名、专门存储

     路径遍历攻击:

             独立部署可访问文件、不存在明文显示路径信息

    常规网站防范措施:

                  软件web应用防火墙

                  信息加密

                  过滤处理

                  黑白名单处理

                  风控处理 :规则引擎过滤或统计模型过滤

   

     

 

 

 

 

 

 

 

      

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值