“高可用性”是架构设计中的重点目标,功能的分离与降级就是保证高可用性的常用方案
功能分离的思路是区分开 核心业务、非核心业务,让核心业务尽量不受非核心业务影响 功能降级的思路是在访问量过大使系统资源不足,或者出现问题时,优先保证核心业务,把非核心业务直接降级
功能分离
逻辑分离 例如用户登录、注册、交易是核心功能,是网站整体业务流程必须的,核心功能有问题后,用户就不能正常使用了 例如发送通知、日志处理就是非核心功能,虽然很重要,但不是必须的业务流程 非核心功能可能会频繁修改升级,必须保证非核心功能不影响核心功能,就需要在逻辑上把他们区分开,尽可能做成独立的功能模块,降低耦合,在需要功能配合时,通过接口进行沟通 物理分离 逻辑上隔离后,最好在物理资源层面也隔离开,如应用服务器、数据库、缓存等 假设共享了缓存服务器,就可能会由于非核心功能的操作影响了缓存的性能,甚至出现问题 物理隔离后,就更加保证了核心功能的安全
功能降级
例如一个页面有很多动态的内容,是后面大量的服务计算出来的,在访问高峰,动态页面扛不住时,可以降级为准备好的静态页面,虽然没动态的页面好,但保证了可用性 再比如第三方物流系统也可能压力大出现问题,业务上又是非必须的,就可以降级,当恢复可用时再次调用 降级的实现方式通常有手动和自动 自动方式是程序调用发生问题时,自动降级,如调用某服务时,响应时间超过预订阀值,自动降级 手动方式是使用配置中心,对系统中可降级的服务都设置好开关项,当需要降级时,在配置中心中进行操作,配置中心进行下发变更通知 相关阅读 “分布式配置管理”