最近一直在重构服务器模块,个人觉得一个服务器模块的基本功能如下:

     1. 平行扩展功能;

      非常重要,它影响着整个系统的整体负载情况;一般情况下,前段的业务服务,可以做成平行扩展的服务器;

     2. 热备功能;

      如果后端的服务器,具有平行扩展功能,则可以做随机的热备;如果不具有,则根据特定的业务场景,可以做成手动切换,或者有损切换;

     3. 可运营化功能;

      一个服务,后续的优化标准是什么,需要数据来提供支持,主要是每个操作,到对应服务器的耗时多少,这些数据,支撑着后续的优化方向,比如,一个新的产品发布,如果确保成功率,质量,都必须通过监控来进行观察;

     4. 过载保护;

       如果遇到运营活动,服务器的流量可以瞬间提升。如果做到服务在高峰期的稳定,这时要提供有损服务。根据不同的功能,屏蔽掉对应的服务,保持主要功能的稳定性;

     5. 安全保护;

       针对特别核心的模块,可能需要添加特别的保护措施,来保证服务的平稳运行。特别是在涉及资源的分配场景下。比如,资源的回收,特别重要的资源,就必须添加白名单,防止异常情况下,对资源的销毁;

    6. 灰度策略

       互联网模块,版本迭代速度特别快,所以发布任何一个服务,一定要考虑灰度的策略;

    7. 日志

       没有日志,那模块的负责人,就跟盲人一样,对用户的行为,无法做出跟踪。现网日志量非常多的情况下,还可以做染色用户,对特殊群体,单独对待,比如,vip用户。