zoukankan      html  css  js  c++  java
  • 读《大型网站技术架构》的总结(4)-扩展性

    4. 架构优化-扩展性

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

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

    4.1 解耦模块提高可扩展性

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

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

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

    4.2 开放平台构建生态

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

    • API:暴露给开发者的一组接口,可以使RESTful、WebService、RPC等形式。
    • 协议转换:负责API接口与内部服务之间的数据转换。
    • 安全:身份识别、权限控制等功能,以及保证平台资源被外部应用合理使用,不被外部应用拖垮。
    • 审计:监控第三方应用的访问情况、计费。
    • 路由:将外部应用的请求映射到内部服务。
  • 相关阅读:
    51Nod 1119 机器人走方格 V2 组合数学 费马小定理
    Codeforces Round #439 div2 869A The Artful Expedient +869B The Eternal Immortality
    51Nod 1050 循环数组最大子段和 dp
    51Nod 1009 数字1的数量 数位dp
    51Nod 1082 与7无关的数 暴力打表(埃氏筛的感觉)
    POJ 2001 Shortest Prefixes
    字典树模板
    HDU 1251 统计难题
    kmp算法模板
    HDU 2087 剪花布条
  • 原文地址:https://www.cnblogs.com/shen-qian/p/13031538.html
Copyright © 2011-2022 走看看