• 服务器端开发总结


    1. 服务异步化

    网络IO处理异步化(NIO, Jetty Continuation,Servlet 3)

    服务的异步化(Future, Callable, Runnable, Callback)

    2. 线程与协程

    多线程并发或者协程支持并发,相比而言,协程在处理IO密集型更具优势

    3. 缓存无处不在

    前端、CGI、后台能用缓存的地方尽量使用缓存,极大的提高系统性能,包括分布式缓存,本地缓存等等

    4. 消息队列

    尽量使用消息队列解耦系统

    5. 协议设计

    二进制协议或文本协议,常用的PROTOBUF、JSON、XML,或者自定义私有协议,协议设计要尽量保持前向兼容性。

    6. 核心配置化

    对于常用的功能选项以及产品策略,需要做到配置化,变更做到实时下发

    7. 系统模块化

    大系统尽量模块化,保持模块的单一性和模块间的低耦合,提高模块的可维护性

    8. 系统分层

    合理的对系统进行分层,保持层次间的独立变化

    9. 服务监控

    随时全方位的监控服务状态,设置合理的服务告警,例如系统请求量,CPU/内存负载情况,消息队列,成功率,延时等等。

    10.服务降级

    对于非核心功能支持开关,紧急情况关闭开关降级服务,提供有损服务,避免服务完全不可用。开发设计过程中要区分好关键路径和非关键路径,对于非关键路径允许其失败,但不影响关键路径

    11.服务依赖

    对于调用第三方系统接口的情况,根据负载要提前合理设置超时时长,对于第三方系统调用自身接口,主要提前做好频率限制,防止请求量过大导致雪崩

    12.独立部署

    核心模块与非核心模块做到独立部署,应用适当进行拆分部署。即快慢分离,动静分离,轻重分离

    13.业务日志

    系统保留近期的流水日志,方便问题定位和解决

    14.过载保护

    前期设计时需要合理评估系统的容量,要设置系统过载阀值,当系统请求量过载时,能运用有效手段进行服务降级。超时必须设置,且要合理预估

    15.负载均衡

    服务器部署绝对要避免单点,不能因为一个单点的失败而使整个系统无法服务,包括接入层、逻辑层、存储层都要避免单点部署

    16.容灾备份

    核心数据支持跨机房容灾,甚至跨城市容灾,数据做到热备或冷备。

    17.灰度发布

    新特性发布尽量灰度发布,能最大程度的减少问题的影响,快速的迭代解决问题

    18.服务无状态

    系统尽量做到无状态,保持横向的扩展能力,避免有状态带来的升级以及维护不方便

    19.合理设计

    非核心业务,例如业务统计或者上报等等,可以采用无需回包的UDP上报。技术方案有时候要结合具体的业务需求,在性能、一致性等方面可以折中权衡

  • 相关阅读:
    Python爬虫之selenium各种注意报错
    以后的路还很长
    巧学DBhelper
    怎么学习程序语言
    C# winform 实现图片轮播
    P6477 [NOI Online #2 提高组]子序列问题(民间数据) 题解
    NOI Online Round 2 TG 游记
    「EZEC」 Round1 开学信心赛 游记
    P6023 走路 题解
    P6022 快乐水 题解
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/5252166.html
Copyright © 2020-2023  润新知