• 读《大型网站技术架构》的总结(4)-扩展性


    4. 架构优化-扩展性

    让网站具有较高的可扩展性在这个产品高速迭代的时代十分重要,如果可扩展性不强一有新功能需求时就会如临大敌,通宵达旦的加班,而且最终的结果也差强人意。

    可扩展性与伸缩性不同:可扩展性是指一句开闭原则拓展、提升网站的功能,伸缩性是指增加服务器等资源增加系统的处理能力,不改动、新增现有功能。

    4.1 解耦模块提高可扩展性

    架构师一项非常重要的能力就是将一个大系统切分为N个低耦合的模块,这些模块可以横向划分也可以纵向划分。模块化是提高网站可扩展性的核心方法,再次基础上降低模块的耦合性增加复用性,一般就能有不错的扩展性。

    (1) 使用消息队列进行模块间调用:使用消息队列这个中间组件进行模块间的通信,避免直接调用,是降低模块耦合性的一大利器。

    (2) 将可复用模块构建成微服务:将一些基础或中间服务拆分出来做成微服务独立部署,服务间通过相关rpc框架通信,这样整个企业的所有应用的就不用单独开发这个模块了,也大幅增加了可扩展性。

    4.2 开放平台构建生态

    开放本系统的一些接口供第三方开发者使用,构建自己的生态,有了完善的生态就更加立于不败之地。例如微信小程序、支付宝的小程序等。开放平台是第三方开发者与内部服务的交互,一般有如下模块:

    • API:暴露给开发者的一组接口,可以使RESTful、WebService、RPC等形式。
    • 协议转换:负责API接口与内部服务之间的数据转换。
    • 安全:身份识别、权限控制等功能,以及保证平台资源被外部应用合理使用,不被外部应用拖垮。
    • 审计:监控第三方应用的访问情况、计费。
    • 路由:将外部应用的请求映射到内部服务。
  • 相关阅读:
    codeforces 587B
    codeforces 552E
    算法竞赛模板 字典树
    算法竞赛模板 二叉树
    算法竞赛模板 图形面积计算
    TZOJ 1545 Hurdles of 110m(动态规划)
    算法竞赛模板 判断线段相交
    算法竞赛模板 折线分割平面
    TZOJ 3005 Triangle(判断点是否在三角形内+卡精度)
    算法竞赛模板 KMP
  • 原文地址:https://www.cnblogs.com/shen-qian/p/13031538.html
Copyright © 2020-2023  润新知