05 架构高可用

process available 99.9%  (1 - 网站不可用时间/年度总时间)* 100%

分层

不同层,关注点不一样

服务层 / 应用层: 集群, 解决高并发问题

数据层: 数据的安全, 数据不丢失, 数据访问服务不中断. 数据备份

失效转移

失效转移:若数据服务器集群中任何一台服务器宕机,那么应用程序针对这台服务器的所有读写操作都需要重新路由到其他服务器,保证数据访问不失败.

失效转移步骤: 失效确认,访问转移,数据恢复.

实际上现在很多数据库有相关的保护机制.

发布

网站发布,同时还在运行.

 

自动化测试

自动化测试工具 Selenium.

预发布验收

大型网站并非直接发布到生产(因为开发环境和生产环境不同),而是先发布到验收服务器,看情况,没问题再发布到正式服务器。

当然,现在有 docker 和 K8S 相对好一些了。

 

代码控制

SVN / GitHub

目前有两种方式:

  1. 主干开发,分支发布:代码修改都在主干上, 需要发布时,从主干上拉出一个分支发布, 该分支即成为一个发布版本,如果发现bug,继续在该分支上修改,并将修改合并回主干,直到下次主干发布。
  2. 分支开发,主干发布:任何修改都不在主干上进行,需要开发新功能或修复Bug时,从主干拉一个分支进行开发,开发完测试通过后,合并回主干,然后从主干发布,主干的代码永远是最新发布的版本。

这两种方式,各有优缺点.

主干开发,分支发布: 主干代码反应整个应用目前的状态,一目了然,便于管理,也利于持续集成。

分支开发,主干发布:各分支独立进行,互不干扰,可以使不同发布周期的开发在同一应用中进行. (推荐这种)

 

自动化发布 

 

由于火车发布模型是基于规则的, 所以这个流程可以自动化. Jenkins.  CI / CD.

灰度发布

将集群服务器分成若干部分,每天发布一部分服务器,观察运行稳定没有故障,继续发布,如果发现问题,秩序回滚已发布的一部分服务器.

网站运行监控

不允许没有监控的系统上线

用户行为日志采集, 服务器日志采集(Apache等)

服务器性能监控 (系统 Load, 内存占用,磁盘I/O, 网络I/O) 尽早预警,架构师要及时改善性能及调整系统伸缩性策略。

目前网站使用比较广泛的监控工具是 Ganglia

 

posted @ 2020-04-12 22:10  神之一招  阅读(159)  评论(0编辑  收藏  举报