架构-伸缩性-扩展性-高可用的学习

 高可用系统: 

 1 利用负载均衡做集群并且利用负载均衡进行无状态服务的转移  

 2 session管理:1 session复制  2Session绑定 3 Cookie记录Session 4 Session服务器 

 3、数据备份:数据冷备,数据热备(异步热备和同步热备)。关系型数据库通常热备机制为设置主从数据库

 4、失效转移:失效确认、访问转移、数据恢复 (当数据库不可用时,保证数据库的可用性)

 5、高可用系统发布:关闭负载均衡上一台或一批服务器路由,关闭这些服务器应用,部署后启动服务器,然后打开负载均衡即可 

    可以在不影响用户使用的情况下达到服务器部署 

 6、自动化测试:为了节省人工测试成本、时间和覆盖率,使用自动化测试脚本或工具完成测试。如ThoughtWorks 

    或自己开发来完成:系统部署,测试数据生成,测试执行,测试报告生成  

 7、为了减小线上系统故障,要有预发布验证 环境

 8、代码控制:主干开发,分支发布、分支开发,主干发布

 9、网站要有监控

  

 网站伸缩性:

  1、应用集群实现伸缩性处理,需要用到负载均衡

    (Http重定向负载均衡,DNS解析负载均衡,反向代理负载均衡,IP负载均衡,数据链路层负载均衡)

  2、分布式缓存(1)Hash余数、2)一致性Hash算法hash环算法加上虚拟节点 

  3、分布式关系型数据库:

1)数据库做双向主从备份 

2)多个数据库之间用开源软件做负载路由Cobar,但不能解决分页和事务问题

3)Cobar可以用负载均衡实现伸缩处理

4)数据库需要前期创建n多Schema,数据库伸缩可以将相应的Schema拷贝到新的数据库中即可 

  4、NoSQL数据库伸缩性设计

  可扩展性架构:

   1、事件驱动架构(主要用队列)

   2、分布式服务架构(代码进行横向和纵向拆分,进行分布式部署,保证模块独立性,)

   3、分布式框架设计(有待学习啊Dubbo,淘宝的技术框架,借助zookeeper实现,服务层添加机器不需要重启机器)

故障教训:

   1、日志问题:

       服务器日志级别至少调整到warn级别,以防产生过多日志占用服务器资源

       日志文件不要放在服务器内部,找单独的服务器目录保存

   2、数据库查询:在访问量比较大的页面数据最好走缓存不要直接访问数据库。

   3、锁的使用:高并发模块用锁谨慎,以防出现排队现象,访问超时

   4、缓存:初始的作用也许不明显,会导致缓存服务器管理疏忽,一旦缓存成系统不可缺的一部分的时候

   要提高对缓存应用的关注。

   5、大小文件的保存最好分开以免上传大文件时候占用太多资源,影响其他资源

   6、提交代码前要仔细比较,防止错误代码提交(仔细)

没有救世主

发掘优秀的人,

接收他人对自己工作的指指点点

让他人理解自己设计的目的

让他人对自己工作更有责任感

让项目成为他人的一部分

成就他人,成就自己 

相关推荐