07 架构可扩展
随着新需求的增加,需要开发新的模块, 开闭原则(对扩展开发,对修改关闭)
低耦合性
软件架构师最大的价值不在掌握多少先进的技术,而在于具有将一个大系统切分成 N 个低耦合的子模块的能力。这些子模块包含横向的业务模块,也包含纵向的基础技术模块。这种能力一部分源自于专业的技术和经验,还有一部分源于架构师对业务场景的理解,对人性的把握,甚至对世界的认知。
利用分布式消息队列降低耦合性
事件驱动架构
消息队列的方式,无论是增加生产者,还是消费者,对于其他功能都是无感知的。
分布式消息队列
实际上 KAFKA 就是这种, 只不过架构图比这个复杂, 还有 ActiveMQ, RocketMQ 等.
伸缩性: 比较简单,只要新增加一个消息队列服务器,并通知生产者,多了一个消息队列服务器即可.
可用性:如果消费者进程处理缓慢,导致内存队列已满,会将消息写入磁盘,消息推送模块在将内存队列消息处理完以后,将磁盘内容加载到队列继续处理
分布式服务打造可复用业务平台
拆分, 将复用的业务拆分出来, 独立部署为分布式服务,新增业务只需要调用这些分布式服务,不需要依赖具体的模块代码。
web service 与 企业级分布式服务
分布式服务设计, 比如 阿里巴巴开源框架 Dubbo
平台级别
API 接口: RESTful, WebService, RPC 等
安全: 身份识别,权限控制, 带宽限制。
审计: 记录第三方应用的访问情况, 监控。
路由:将开放平台的各种访问路由映射到具体的服务。
流程:将一组离散的function组合成服务,隐藏细节,提供统一的供开发者调用的接口。