天天看点

大型网站技术架构 读书笔记2.4 核心架构要素之可扩展 四 网站的可扩展架构

四 网站的可扩展架构

  可扩展:在对现有系统影响最小的情况下,系统功能可持续扩展及提升的能力;因此,模块化是设计网站可扩展架构的核心。要注意其与可伸缩性之间的区别。

  难度:在软件系统中,如何分解系统的各个模块、如何定义各个模块的接口、如何复用组合不同的模块,非常难以设计。软件架构师的一大能力就是将一个大系统分解为多个低耦合的子模块。

  内容:本部分的内容是介绍模块分布式部署后的聚合方式——分布式消息队列和分布式服务,另外还介绍了可扩展数据结构——ColumnFamily以及网站生态圈——第三方扩展。

4.1 分布式消息队列——降低系统耦合

  事件驱动架构:通过在低耦合的模块之间传输时间消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作,典型的就是生产者消费者模式。实现方式就是分布式消息队列*。

  分布式消息队列:将队列这种FIFO的数据结构部署到独立服务器上,应用程序通过远程访问接口使用分布式消息队列,进行消息存取,进而实现分布式的异步调用。

4.2 分布式服务——打造可复用业务平台

  分布式服务:分布式消息队列通过消息对象降低系统的耦合性,不同子系统处理同一消息;分布式服务则通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务调用。

  降低大型系统复杂度:使用纵向拆分——将大应用拆分为多个小应用;横向拆分——将复用的业务拆分;最终实现模块独立部署。

  分布式服务框架——阿里的Dubbo:Dubbo架构设计详解

4.3 可扩展的数据结构

  这里指NoSQL使用的ColumnFamily。其在创建表的时候无需指定字段,只需指定ColumnFamily的名字;因此其字段可以随意扩展。

4.4 平台生态圈

  第三方扩展:这里指大型软件为开发更多增值服务,会将内内部服务封装成一些调用接口开放出去,成立开放平台,供第三方开发者开发。包括Facebook、微信、苹果等大企业都有大量的第三方开发者。