目录
SpringCloud很多的组件都已经停止更新或者进入维护阶段了,所以是时候应该学习一下这些逐渐的替代方案了。
今天从先从Eureka开始学习,用Eureka服务注册中心替代方案。
Spring Cloud版本
Spring Cloud 和Spring Boot 的版本对应情况:https://spring.io/projects/spring-cloud#overview
更具体的对应情况说明:https://start.spring.io/actuator/info (JSON数据)
Eureka的准备工作
Eureka是一个Java编写的注册中心,设计原则是AP(高可用、网络),这就意味着舍弃了数据的一致性,所以
Eureka适用于需要高度响应的分布式环境,并不适用于数据严格一致的分布式环境。
有关于CAP的文章,可以查看阮老师的文章:点击查看
在开始Eureka之前,先做一个RestTemplate的准备工作,首先建立一个Provider项目,就是简单的SpringMVC项目,
暴露一个接口就可以的,例如:
@Value("${server.port}")
private Stirng serverPort;
@GetMapping("payInfo")
public String payInfo(){
return "返回一个信息!" + serverPort;
}
紧接着用另外一个项目(Consumer)去访问这个接口,例如:
@Resource
private RestTemplate restTemplate;
/**
* 这里要指向提供者接口
*/
private static final String BASE_URL = "http://localhost:8001";
@GetMapping("pay")
public String payInfo(){
return restTemplate.getForObject("BASE_URL" + "/payInfo",String.class);
}
配置RestTemplate如下:
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
然后访问Consumer,就可以通过Consumer来访问到Provider,但是这有个缺点就是Provider的地址是固定写死的,使用
注册中心可以解决这个问题。
安装Eureka服务端
Eureka不需要专门去安装软件,直接在项目中创建一个项目,导入Eureka的包就可以使用Eureka。
<dependency>
<groudId>org.springframework.cloud</groudId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
这个包就是Eureka的服务端,导入包之后,需要对Eureka进行一些配置:
server:
port: 7001
eureka:
instance:
hostname: localhost
client:
# 不把自己注册到Eureka中
register-with-eureka: false
# 不去注册中心检索服务
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
上面两个设置false的参数作用就是用来说明,当前是服务端,不需要将自己作为服务注册到注册中心,也不需要去检索注册
中心里面用拥有的服务。
紧接着些一个启动类,就可以完美的启动Eureka的服务端了。
@SpringBootApplicaiton
@EnableEurekaServer
public class EurekApplication{
public static void main(String[] args){
SpringApplication.run(EurekaApplication.class,args);
}
}
@EnableEurekaServer的作用就是启用Eureka的服务端,启动这个main方法就可以启动Eureka服务了。
启动之后可以直接访问http://localhost:7001就可以看到Eureka的服务界面了,他是一个web-UI
Eureka启动成功
可以看到当前是没有实例可用的,也就是没有服务注册到Eureka上面,接下来就让之前编写的Provider注册上来。
!关于这个页面的具体的一些细节,以及Eureka的一些扩充内容,后面再记录。