springcloud常用组件简明笔记

这篇博客详细介绍了SpringCloud的常用组件,包括依赖管理、注册中心的设置、服务注册与发现的过程,以及两种不同的负载均衡实现:Ribbon+RestTemplate和Feign。同时,还探讨了服务熔断的实现,为读者提供了全面的SpringCloud实践指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.springcloud依赖

<properties>
	<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
</properties>

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>${spring-cloud.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

2.注册中心

1.pom依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2.配置

eureka:
  instance:
    hostname: eureka8090.com
  client:
    # 是否将自己注册到eureka server
    register-with-eureka: false
    # 是否从eureka server获取注册信息
    fetch-registry: false
    serviceUrl:
      defaultZone: http://eureka8091.com:8091/eureka/, http://eureka8092.com:8092/eureka/

3.注解

@EnableEurekaServer

3.服务注册

1.pom依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.配置

eureka:
  client:
    service-url:
      defaultZone: http://eureka8090.com:8090/eureka/, http://eureka8091.com:8091/eureka/, http://eureka8092.com:8092/eureka/

3.注解

@EnableEurekaClient

4.服务发现

需要自己也注册。

1.pom依赖

spring-cloud-dependencies
spring-cloud-starter-netflix-eureka-client

2.配置

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8090/eureka

3.注解

@EnableEurekaClient
@EnableDiscoveryClient

4.实现

DiscoveryClient client

5.负载均衡

第一种方式ribbon+RestTemplate

1.pom依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

2.配置

eureka:
  client:
    register-with-eureka: false
    serviceUrl:
      defaultZone: http://eureka8090.com:8090/eureka/, http://eureka8091.com:8091/eureka/, http://eureka8092.com:8092/eureka/
@Configuration
public class RestConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

3.注解

@EnableDiscoveryClient

4.调用RestTemplate

@Service
public class RibbonService {
    @Autowired
    private RestTemplate restTemplate;

    private static final String serviceName = "http://SERVICE-HI";

    public String hiService(String name) {
        return restTemplate.getForObject(serviceName + "/hi/" + name, String.class);
    }
}
第二种方式Feign

1.pom依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.配置

eureka:
  client:
    register-with-eureka: false
    serviceUrl:
      defaultZone: http://eureka8090.com:8090/eureka/, http://eureka8091.com:8091/eureka/, http://eureka8092.com:8092/eureka/

3.注解

@EnableFeignClients
@EnableDiscoveryClient

4.服务接口

@FeignClient("SERVICE-HI")
public interface ScheduleServiceHi {

    @RequestMapping(value = "/hi/{name}")
    String sayHiFromClientOne(@PathVariable("name") String name);
}

5.调用服务

@Autowired
ScheduleServiceHi scheduleServiceHi;

6.服务熔断

1.pom依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

2.配置

eureka.client

3.第一种方式ribbon+RestTemplate

@HystrixCommand(fallbackMethod = "hiError")
public String getServiceHi(String name) {
    return restTemplate.getForObject(URL + "/hi/" + name, String.class);
}

public String hiError(String name) {
    return "sorry," + name + " there is an error";
}

@EnableHystrix
@EnableDiscoveryClient

4.第二种方式feign

feign.hystrix.enabled: true

实现调用服务的接口,放入fallback中

在调用服务的接口注解上加上fallback
@FeignClient(value = "SERVICE-HI", fallback = ScheduleServiceHiImpl.class)

@EnableDiscoveryClient
@EnableFeignClients
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值