大型网站架构————核心原理-【可用性】4

来源:互联网 发布:ipad电视剧下载软件 编辑:程序博客网 时间:2024/05/16 06:49

【可用性】
    • 可用性是啥子:
      • 就是网站能顺利运行,那么涉及DNS劫持 CDN分发系统挂了 服务器宕机 网络交换机坏了 磁盘烧了 网卡松了 机房没电了 程序bug 黑客攻击。促销的高并发大流量 第三方合作商的不靠谱。这些都OK那么就可用。
    • 可用性的考核度量
      • 公司会把这个和升职加薪成为CEO挂钩滴。鼓励鞭策程序员做好可用性。
    • 高可用性的架构:
      • 买入好的设备。比如之前淘宝买了N多IBM小型机(专门的操作系统)部署在各个城市。沈阳 新疆啥的。oracle数据库。EMC存储设备。但是现在淘宝已经进入去IOE化了.也快开始变成PC机器和mysql的集群了。但是肯定还是不能完成去掉啊。核心重要的模块还是IOE靠谱。钱多质量好还是有道理的。
      • 系统分层和分割:
        • 应用层+服务层+数据层
        • 各个业务单元独立占用一个服务器。
    • 高可用类型
      • 高可用应用层:应用的业务逻辑
        • 显著特点就是应用的无状态性:
          • 就是指的是应用服务器不保存业务的上下文信息,不去访问数据层,仅仅根据每次请求提交的数据进行相应的业务逻辑处理。多个服务器之间完全对等。请求背负在均衡系统分发到任何服务器处理结果都是一样的。当然实际上不行的,肯定会保持比如 购物车记录。好友信息。在线状态。
        • 集群环境下session管理:
          • session :多次请求修改使用的上下文对话成为会话session。单机好办 ,容器就管理了。但是在使用负载均衡的集群环境里,由于负载均衡服务器可能会把请求分发到任何一台服务器上。那么就复杂了。
            • 办法1:session复制:集群里几台服务器之间同步session对象。都保存用户信息。适合小型架构服务器少。
            • 办法2:cookie记录session:存在用户浏览器本地,同一个公司的各种服务之间登陆状态应该就是放在本地。
            • 办法3:session服务器:最好的办法就是独立部署集群session服务器,然后共享session。
            • 【把应用服务器的状态分离】
              • 无状态的应用服务器集群。
              • 有状态的session会话服务器集群——利用分布式缓存,数据库,设置专门的服务器。
      • 高可用数据
        • 数据是企业的灵魂。其他的硬件软件都是可以替换更新的。没了灵魂就废了。
        • 所以数据不能乱来。所以要用副本数据。
          • 数据持久性:多多备份数据副本
          • 数据访问性:数据服务器坏了就不能访问数据
          • 数据一致性:避免数据更新失败。必须保持一致性。
        • 数据热备份:
        • 失效转移:
          • 失效确认
          • 访问转移
          • 数据恢复
      • 高可用服务
        • 分级管理:
          • 核心应用和服务有限使用充足的硬件资源。比如付款购物车和商品评价,谁重要一眼便知。
          • 服务器部署要分在不同地域,避免连锁反应。
        • 超时设置:
          • 就是万一宕机,那么用户请求长时间得不到响应还占用程序资源。不利于转移到正常服务器。那么就设置一个超时时间,一旦过了时间那么就选择继续重试或者转移到相同服务的服务器上——大公司的一般服务器不会失去响应
        • 异步调用:
          • 利用消息队列。一个服务完成那么就返回响应。实际上还没有真的成功。还在消息队列。
        • 服务降级
          • 拒绝服务:随即选一个用户不给提供服务
          • 关闭功能:双十一把评价 确认收货这些不核心的东西都关闭
      • 软件质量
        • 网站发布:关掉旧的,开始用新的。还不能出现明显的变化。最好是夜深人静的时候吧。
        • 自动化测试:模拟用户进行测试
        • 自动化发布:
        • 灰度发布:
      • 运行监控
        • 数据采集
          • 用户日志:操作环境,IP地址停留时间。PV/UV指标——实时计算框架storm的日志统计和分析工具
            • 服务器日志:日志记录功能
            • 客户端日志:js收集
          • 服务器性能监控:
            • 系统load:
            • 内存占用:
            • 磁盘IO:
            • 网络IO:
          • 运行数据报告:
            • 缓存命中率。
            • 延迟时间
        • 监控管理
          • 系统报警:
          • 失效转移:
          • 自动优雅降级:
0 0