构建可拓展服务

可拓展服务基础
https://www.lecloud.net/tagged/scalability/chrono
横向扩展
- 每个服务器搭建相同的代码库,不存储用户数据
- 用户session存储在独立的数据库或缓存中
数据库优化
- 主从分离,从读主写
- 主库优化方法为添加RAM,所以主服务器性能不够时,很难优化
- 使用nosql
- 像使用nosql一样使用mysql,不要使用过多的join
使用缓存
- redis
- memcache
使用异步
- 原生异步更有效率
性能与可扩展性
如果服务的性能随着资源的增加而成笔记增加,那么这个服务就是客拓展的
延迟与吞吐量
延迟是执行操作或运算结果所花费的时间。
吞吐量是单位时间内(执行)此类操作或运算的数量。
通常,你应该以可接受级延迟下最大化吞吐量为目标。
CAP
- 一致性 : 每次访问都能获得最新数据但可能会收到错误响应
- 可用性 : 每次访问都能收到非错响应,但不保证获取到最新数据
- 分区容错性 : 在任意分区网络故障的情况下系统仍能继续运行
网络并不可靠,所以你应要支持分区容错性,并需要在软件可用性和一致性间做出取舍