随着互联网的飞速发展,单体架构已不能满足高并发及业务的快速迭代,微服务架构应运而生,下面我分别介绍单体应用和微服务的架构及实现微服务的框架和技术。
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) | 高(背靠阿里) | 一般 | 未知 |