1、分层
应用层 服务层 数据层
通过分层,方便分工合作开发维护;需禁止跨层调用、逆向调用。(横向切分)
2、分割
纵向切分,模块之间需低耦合。
3、分布式
4、集群
即使访问量很小的分布式应用和服务,也至少部署两台服务器构成一个小的集群,提高系统的可用性(防止一个挂了)。
5、缓存
CDN ,反向代理,本地缓存,分布式缓存。
使用缓存的两个前提条件:1. 数据访问热点不均衡,某些数据会被频繁访问,2. 数据在某个时间段内有效,不会很快失效。
6、异步
异步架构的典型是生产者消费者模式,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化而不互相影响。
总结:
1、新浪微博:明星有大量粉丝,当他们发布微博时,需将此微博插入到数据库所有粉丝的订阅列表中。
微博刷新时,使用多级缓存,热门微博与明星用户的缓存在所有的微博服务器上,在线用户的微博和近期微博缓存
在分布式缓存集群中。
2、好的设计绝对不是模仿,不是生搬硬套某个模式,而是深刻理解之上的创造与创新。
3、服务器宕(dang)机。确保网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用 的整体可用,也不会导致数据丢失。
代码优化:
1、多线程:解决线程安全的手段:将对象设计为无状态对象,使用局部对象,并发访问资源使用锁。
2、资源服用:两种模式:单例和对象池(数据库连接池)。
3、数据结构
4、垃圾回收