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

4. 架构优化-扩展性

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

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

4.1 解耦模块提高可扩展性

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

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

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

4.2 开放平台构建生态

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

  • API:暴露给开发者的一组接口,可以使RESTful、WebService、RPC等形式。
  • 协议转换:负责API接口与内部服务之间的数据转换。
  • 安全:身份识别、权限控制等功能,以及保证平台资源被外部应用合理使用,不被外部应用拖垮。
  • 审计:监控第三方应用的访问情况、计费。
  • 路由:将外部应用的请求映射到内部服务。

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

上一篇:Core3.0返回的数据格式xml或json


下一篇:Android OpenSL ES 开发:Android OpenSL 介绍和开发流程说明