Spring Cloud相关配置管理

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

      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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值