架构-伸缩性-扩展性-高可用的学习
高可用系统:
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、提交代码前要仔细比较,防止错误代码提交(仔细)
没有救世主
发掘优秀的人,
接收他人对自己工作的指指点点
让他人理解自己设计的目的
让他人对自己工作更有责任感
让项目成为他人的一部分
成就他人,成就自己