Spring Cloud是基于Spring Boot之上主要用于分布式架构。对于分布式架构提供了很多管理配置 例如:服务注册与发现(Eureka)、消费者(Ribbon and Feign)、断路器(Hystrix)、路由网关(Zuul)、分布式配置中心(Config)以及高可用的服务注册中心。对于Dubbo+Zookeeper分布式架构要简单很多。下面介绍下各配置的相关内容:
一、注册中心(Eureka Server and Client):
前面提到eureka是spring boot的注册中心,server client客户端把每个服务都注册eureka server的配置文件中,eureka server接收客户端转递的IP和端口进行注册。Eureka client每30秒向Eureka server发送心跳进行续约,如果超过90秒说明该服务不进行续约就会从注册中心扣除(shutdown)。Eureka Client在启动注册的时候系统默认需要40秒的时间来进行注册。
代码示例 eg:

Eureka Server配置:
1、需要在pom.xml文件增加eureka server依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2、在配置文件中application.yml中增加服务地址:
registerWithEureka和fetchRegistry两个参数表示false表示这是一个服务注册,如果没有声明表示是一个客户端。
#服务端端口
server:
port: 8761
#配置服务端口URL路径 共客户端使用
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3、在主程序类中增加注释@EnableEurekaServer注释:
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
Eureka Client配置 :
1、新建一个spring boot项目然后一样加入eureka server依赖如上。
2、在客户端配置文件中加入端口和Url:
下面eureka.client参数没有registerWithEureka和fetchRegistry两个参数说明这是配置的一个客户端,其中增加了defaultZone默认地址指向的就是注册中心Eureka Server的地址。
#1客户端端口
server:
port: 8763
#客户端配置
eureka:
instance:
hostname: localhost #声明
client:
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:8761/eureka/ #这里就是服务端暴露的地址
#应用程序名字用于调用
spring:
application:
name: eureka-client #项目名称(无论多少客户端多少个 名称要保持一样,例如 project2项目的properties 也是这个名称只是端口不一样)
3、在主程序类中增加@EnableEurekaEclient客户端声明:
@EnableEurekaClient //eureka客户端声明
@SpringBootApplication
@RestController //页面返回内容
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
@Value("${server.port}") //得到服务端端口 8762
String port;
@RequestMapping("/hi") //访问路径
public String home(@RequestParam String name) {
return "hi "+name+",i am from port:" +port;
}
}
配置多个客户端只需要提供指向注册中心的url地址及可,以上就是Eureka Server和Eureka Client的简单配置。
二、服务消费者 (Rest + Ribbon Or Feign)
Spring Cloud提供两种服务调用的方式一种是rest+ribbon,另一种feign,在微服务中服务与服务之间是相对独立的基于http restul协议 (http restuls:基于Web应用,客户端将消息封装成一个包给服务器,服务器进行解析然后将消息返回给客户端) 。
Ribbon是一个负载均衡客户端(负载均衡: 当大量服务访问同一个应用,会产生并发和死锁等情况,ribbon会根据当前服务器良好的节点进行相应的服务进行响应)。
基于服务消费(rest + ribbon) Code eg:
1、新建一个spring cloud项目增加ribbon依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2、在配置文件如下:
#3客户端端口
server:
port: 876

本文介绍了Spring Cloud的核心组件,包括Eureka Server和Client的注册与发现,服务消费者的Ribbon和Feign,断路器Hystrix,智能路由Zuul以及分布式配置中心Config。通过实例代码展示了各组件的配置和工作原理,帮助理解Spring Cloud在微服务架构中的应用。
最低0.47元/天 解锁文章
501

被折叠的 条评论
为什么被折叠?



