隨着互聯網的飛速發展,單體架構已不能滿足高併發及業務的快速迭代,微服務架構應運而生,下面我分別介紹單體應用和微服務的架構及實現微服務的框架和技術。
1.單體架構和微服務架構的區別
單體應用:所有業務在一個應用中實現,打包成一個War包部署到Web容器中。
微服務:根據業務和組織架構將單體應用拆分爲多個獨立的應用,每個應用獨立開發部署到不同的Web容器中。
單體架構:
微服務架構:
2.微服務技術和框架
Spring Cloud | Dubbo | Motan | MSEC | 其他 | |
---|---|---|---|---|---|
功能 | 微服務完整方案 | 服務治理框架 | 服務治理框架 | 服務開發運營框架 | |
通信方式 | REST/Http | RPC協議 | RPC/Hessian2 | Protocol buffer | grpc、thrift |
服務發現/註冊 | Eureka(AP) | ZK,NACOS | ZK/Consul | 只有服務發現 | Etcd |
負載均衡 | Ribbon | 客戶端負載 | 客服端負載 | 客服端負載 | Nginx+Lua |
容錯機制 | 6種容錯策略 | 6中容錯策略 | 2種容錯策略 | 自動容錯 | Keepalived、HeartBeat |
熔斷機制 | Hystrix | 無 | 無 | 提供過載保護 | 無 |
配置中心 | Spring Cloud Config | Nacos | 無 | 無 | Apollo,Nacos |
網關 | Zuul,Gateway | 無 | 無 | 無 | Kong |
服務監控 | Hystrix+Turbine | Dubbo+Monitor | 無 | Monitor | ELK |
鏈路監控 | Sleuth+Zipkin | 無 | 無 | 無 | Pinpoint |
多語言 | Rest支持多語言 | Java | Java | Java、C++、PHP | Java、PHP、Node.js |
社區活躍 | 高(背靠Spring) | 高(背靠阿里) | 一般 | 未知 |