SpringCloud架构概览

本文介绍了在项目中采用SpringCloud构建微服务架构的过程,重点探讨了服务注册和发现组件Eureka的核心作用。

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

最近项目中使用SpringCloud做微服务架构,所以对微服务体系进行了系统的学习

一,服务注册和发现中心Eureka

1,Eurekaserver和Eurekaclient
a,Eurekaserver注解 @SpringBootApplication和@EnableEurekaServer
服务注册中心
b,Eurekaclient注解 @SpringBootApplication和@EnableEurekaClient
启动后将服务注册到注册中心


二-1,服务消费者Feign(服务之间相互调用RPC)
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解,注解中value为被调用的eurekaclient服务,接口中每个方法的requestmapping的url地址需与被调用服务的对应方法url地址一致。在其他项目中只需注入这个接口,就可调用被代理的eurekaclient服务。
定义一个feign接口
@FeignClient(value = "service-hi")
public interface SchedualServiceHi {
@RequestMapping(value = "/hi", method = RequestMethod.GET)
String sayHiFromClientOne(@RequestParam(value = "name") String name);
}
一个”/hi”的API接口
@RestController
public class HiController {
@Autowired
SchedualServiceHi schedualServiceHi;
@RequestMapping(value = "/hi",method = RequestMethod.GET)
public String sayHi(@RequestParam String name){
return schedualServiceHi.sayHiFromClientOne(name);
}
}
二-2,服务消费者RestTemplate(服务之间相互调用RPC)
通过之前注入ioc容器的restTemplate来消费service-hi服务的“/hi”接口,在这里我们直接用的程序名替代了具体的url地址,在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名




对RestTemplate加负载均衡标签
@LoadBalanced 
@Bean 
RestTemplate restTemplate() { 
return new RestTemplate(); 
}
使用RestTemplate调用其他服务的方法
@RestController 
public class ConsumerController { 
@Autowired 
RestTemplate restTemplate; 
@RequestMapping(value = "/ribbon-consumer",method = RequestMethod.GET) 
public String helloController() { 
return restTemplate.getForEntity("http://HELLO-SERVICE/hello", String.class).getBody(); 
}
}


三,断路器Hystrix
较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阀值(Hystric 是5秒20次) 断路器将会被打开。
在项目启动类上加@EnableHystrix断路器注解,在controller方法上加@HystrixCommand(fallbackMethod = "hiError")注解,同时定义hiError回调函数,若该方法出现熔断,则执行hiError方法


四,智能路由zuul
Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。
在其入口applicaton类加上注解@EnableZuulProxy,开启zuul的功能:
@EnableZuulProxy
@EnableEurekaClient


五,分布式配置中心组件spring cloud config 
它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。
在config server的入口加上@enableconfigserver注解,并需要配置远程仓库git的参数,在config client中配置config地址等参数,即可从远程仓库中获取参数值


五,消息总线spring cloud bus
在需要接受消息的项目中配置RabbitMq的配置,包括RabbitMq的地址、端口,用户名、密码
只要通过其中一个项目访问/bus/refresh,则其他项目都会收到消息总线的刷新通知
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值