Java

Spring Cloud笔记(2) 组件的搭配和选择

2020-04-02  本文已影响0人  飞空之羽

上一篇文章介绍了Spring Cloud的基本设计思想,就是为构建一个良好的分布式系统提供了一系列的最佳实践和模式,同时也针对各个模式提供了一些开箱即用的工具,开发者通过组合不同的工具就能够快速构建出符合自身业务特点的微服务系统。

但是Spring Cloud针对每一种分布式模式提供的解决方案或整合的工具都不止一个,我们应该在繁多的候选者里面去进行挑选和比较呢?在这里就来做一个简单的梳理,看看每一个组件的优势和适用场景大概有哪些。Spring Cloud提供的主要特性包括下面几个:

注册中心 优点 缺点
Eureka 使用人数最多也最成熟,Spring Cloud Netflix的默认实现,网上资料非常丰富;无需独立部署,可以嵌入到应用内(就是一个servlet程序) 不会再有新版本更新了,后面会逐步被替代
Consul 作为Eureka的官方候补,是Spring Cloud目前主要支持的实现,各方面功能都很全面,没有明显短板
Nacos 阿里开源的产品,功能对标Consul,不仅支持CP也支持AP ,使用Dubbo时的首选注册中心
ZooKeeper 大部分项目本身也依赖于ZooKeeper,所以无需单独再进行部署了;资料非常多;多数人比较熟悉 没有集成健康检查; 不支持http协议,客户端需要集成SDK

下面是网上找的一个特性对比图,其实大多数特性实际项目里面也用不到,所以还是要以项目的实际情况来进行选择:


主流微服务产品对比图.png
API网关 优点 缺点
zuul 1 和eureka的优点基本一致 基于Servlet 2.5构建,阻塞式的 API,不支持长连接,比如 websockets ;性能不太好 ;1.x的版本后续不会有重大更新了
Spring Cloud Gateway Spring的亲儿子,后续的维护集成应该不用担心;基于 Spring Boot 2.x 响应式的、非阻塞式的 API开发,性能更好,也支持长连接 ;官方还给出了一个性能比较:spring-cloud-gateway-bench
Nginx 大家都会用;性能最高。其实如果不打算用过滤器,熔断这些特性,Nginx也是不错的选择 缺少一些高级特性:比如熔断,限流,过滤器等等
服务间调用 优点 缺点
Feign 常规搭配,基于HTTP协议的声明式客户端,内置了Ribbon提供客户端负载均衡的功能;更符合REST风格的接口;易于测试 采用http+json进行传输,性能会差一些
Dubbo 自带负载均衡策略;可以使用自有的二级制RPC协议,占用带宽更少,性能更好 ;如果要使用的话最好采用Spring Cloud Alibaba套件的整套解决方案 服务调用方需要依赖于提供方的接口Jar包,解耦并不彻底 ;RPC协议不利于测试和文档生成
断路器功能对比.png
配置中心 优点 缺点
Spring Cloud Config 和Spring Cloud适配的最好(毕竟是一家开发的),定义良好的REST风格API,自动转换配置文件的格式 需要结合版本控制工具使用,如GIT,SVN等等,动态更新需要配合Spring Cloud Bus和MQ组件使用;没有管理界面
Consul 直接利用Consul 的KV存储功能来存储配置项,如果采用Consul作为注册中心则不需要再引入额外的系统 ;提供了配置查看和编辑的界面
Nacos 同上
ZooKeeper 无管理界面,其它同上
上一篇 下一篇

猜你喜欢

热点阅读