spring cloud强大之处在于有很多的开源的微服务框架,并且这些框架的组件,很多能互相组装成你想的框架。前几年,最火的就是Eureka。但是自从2018年Netflix(没错,就是美国的那个有名的多媒体公司,漫威宇宙之前的电视剧基本就是他们家的)宣布不在开源以后,很多开发者都转移了阵营,纷纷投向了Google的zookeepr(现由apache维护)、HashiCorp的Consul、阿里的Nacos,目前主要是这几家开源的。整套微服务框架,主要包含以下几个方面:
- 服务注册
- 网关
- 断路器
- 链路追踪
- 配置中心
- Stream 消息驱动
如果你想让你的系统具备以上的功能,你要写的代码,不会超过100行,包括配置。
有了这些,我们能达到什么效果 - 所有的服务都身服务中心进行注册,明确每个服务的状态
- 所有的服务,都通过网关来访问
- 所有配置,更新后自动同步到每一台服务上
- 能够为服务设置保护,以免引起雪崩效应
- 每一个服务的访问经过了哪些节点一清二楚
- 统一的消息处理方法
什么是 Nacos?
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
目前可能阿里的Nacos还有人真正用到产线上,这点要注意。以下是NACOS全景图
什么是 Eureka?
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
什么是 ZooKeeper?
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集, 提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
什么是 Consul?
Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
网上关于它的比较的文章比较多,但是有两篇,可以说是必看的
《阿里巴巴为什么不用 ZooKeeper 做服务发现?》
https://yq.aliyun.com/articles/599997
《Eureka! Why You Shouldn’t Use ZooKeeper for Service Discovery》
https://www.jianshu.com/p/86029d598e57
选哪一个,还是得看自己的业务系统特性。但是Eureka是明确说了不再维护了的。