周末趁着休息的时候,学习了下慕课网的天气系统,趁机总结下单块架构和微服务的优缺点,方便以后翻阅
优点 |
缺点 |
功能划分清楚 |
功能太大,太杂 |
层次关系良好 |
升级系统风险高 |
每一层独立 |
维护成本增加 |
技术单一(成本低,适合全栈开发) |
交付周期边长 |
部署简单 |
可伸缩性差 |
部署简单 |
监控困难(当系统出现问题,很难检测哪一块出现问题) |
方式 |
简介 |
服务拆分 |
将服务拆分的小而精,比如采集服务,数据清理服务等 |
服务注册 |
将服务注册至注册中心,可以让其他服务进行消费 |
服务发现 |
服务在调用其他服务时,可以查看服务注册表,通过名称来调用服务的接口 |
服务消费 |
调用其他服务,称为消费服务,调用者称为消费者,提供者也称为供应商 |
统一入口 |
服务多了,可以统一入口,直接通过统一入口调用即可 |
配置管理 |
通过配置管理平台,可以简化配置过程 |
熔断机制 |
熔断是系统的防护机制,高并发情况下,服务堆积起来,可以采用熔断,把所有的请求挡住,大大降低服务会崩溃 的可能 |
自动扩展 |
服务根据当前情况进行自动扩展,比如部署了十台主机,十个实例,当访问增多时,可以 扩展到二十台等 |
名称 |
简介 |
易于实现 |
基于spring boot ,迭代很快 |
易于维护 |
不必像单块架构一样,修改某个功能,可能会牵扯到其他功能,大而杂,难以厘清 |
易于部署 |
基于springboot,一般内嵌tomcat,可以直接放到tomcat中 |
易于更新 |
拆分后,业务清晰,耦合度大大降低,不会影响其他服务 |
形成闭环 |
从需求→开发→集成→测试→部署,大大加快速度 |
名称 |
简介 |
横向拆分 |
按照服务进行拆分 |
纵向拆分 |
比如三层架构就是横向拆分 |
ddd拆分 |
Domain-Driven Design 领域驱动设计 |