一、SpringCloud
1、什么是SpringCloud?
在了解SpringCloud之前,我们要先来大致了解下微服务这个概念。
传统单体架构:
单体架构在小微企业比较常见,典型代表就是一个应用、一个数据库、一个web容器就可以跑起来。
服务化架构:
服务化架构,也可以称之为SOA架构。
SOA代表面向服务的架构,将应用程序根据不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。这样使整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。
SOA服务化的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
微服务架构:
简单来说,微服务架构是 SOA 架构思想的一种扩展,更加强调服务个体的独立性、拆分粒度更小。
微服务其实是一种架构的设计风格,并没有明确的技术绑定和架构概念。简单来说,微服务架构风格其实就是将原来的单一架构开发为一组小型服务(微服务)的方法,每个服务都运行在自己独立的进程中(服务间的隔离),服务间采用轻量级的通讯机制(HTTP、RPC - Netty、WebService),这些服务按照业务拆分,并且独立部署(自动化部署)。服务会由一个统一的管理中心管理(Zookeeper、Eureka、Nacos),服务可以采用不同的语言开发,并且使用不同的存储技术(数据库垂直拆分)。
总结:SpringCloud是一套微服务开发一站式解决方案,它提供了微服务开发所需要的很多功能组件,比如服务统一管理、配置统一管理、路由网关、断路器、事件总线、集群状态配置等等。而且SpringCloud与SpringBoot无缝衔接,配合SpringBoot能够更轻松的搭建出一套微服务架构平台。
二、Eureka
1、什么是Eureka?
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
Eureka包含两个组件:Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
2、Eureka与Zookeeper的区别
(1)在Dubbo中,Zookeeper是Linux上的服务,它是独立运行的。
在springcloud中,Eureka是个工程,不能独立运行,需要依赖web服务,如Tomcat。
(2)Zookeeper中的服务分为服务的提供者和服务的消费者。服务的提供者向注册中心注册,服务的消费者从注册中心发现获取。
Eureka中的服务都是微服务,每个微服务既是提供者也是消费者。都可以想注册中心注册。
(3)Zookeeper中服务的消费者从注册中心发现服务后向服务的提供者调用服务。
Eureka中所有微服务可以互相调用。
如图所示: