对于一个springcloud项目来说,首先第一步就是要构建服务注册中心,什么是服务注册中心?形象地说就是每一个微服务都要先到这里注册,表明自己是一个微服务才能让springcloud给你暴露出去。springcloud已经给出了微服务架构搭建的所有组件,其中Eureka就是在springcloud中作为服务注册中心来使用。
构建Eureka Server
建立一个maven父工程
一直next,写上groupId,artifactId,构建完成。
在父工程中new一个module
勾选上Eureka Server,我这里选择的springboot版本是1.5.19
一直next,成功构建。
修改application.yml配置文件
添加@EnableEurekaServer注解向springboot声明自己是服务注册中心
启动项目,访问地址http://localhost:7001
出现这个网页说明Eureka启动成功了。
构建Eureka Client
Eureka的客户端其实就是服务提供者,服务消费者每次访问都会先去Eureka里面看看该服务是否已经注册,而服务提供者(Eureka客户端)也会与Eureka Server保持心跳连接,服务消费者发现服务提供者已经注册成功的就能进一步访问到服务提供者。
与构建Eureka Server差不多一样的过程,只是下面勾选的地方不一样
修改application.yml配置文件
添加@EnableEurekaClient注解向springboot声明自己是Eureka Client
启动Eureka Client,再次访问http://localhost:7001
可以看到
这个就是我们client端在application.yml里面设置的名字,,这个就是我们已经修改的client的主机的名字。
这样一个简单的Eureka服务注册中心就搭建好了。
服务发现
服务发现就是我们可以把我们的微服务信息暴露出去
使用DiscoveryClient
@RestController
public class TestController {
@Autowired
private DiscoveryClient client;
@RequestMapping(value = "/dept/discovery", method = RequestMethod.GET)
public Object discovery()
{
List<String> list = client.getServices();
System.out.println("**********" + list);
List<ServiceInstance> srvList = client.getInstances("MICROSERVICECLOUD-DEPT");
for (ServiceInstance element : srvList) {
System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
+ element.getUri());
}
return this.client;
}
}
访问我们的服务提供者
以上得到的就是我们所有微服务的信息了
使用服务消费者来进行访问
在父工程下面新建一个consumer的module工程,与上面新建服务者的步骤一样,因为消费者和提供者都要依赖于eureka,所以两个module都要加上eureka的依赖。
加上@EnableEurekaClient注解,由于消费者不用注册进eureka,所以写上了register-with-eureka: false
这里还设置了端口号为80,因为80端口号是http协议的默认端口号,所以我们这里访问消费者就可以直接http://localhost/...就行了
所以大概流程就是先访问消费者,消费者先去eureka中查看对应的提供者是否已注册,已注册的话直接访问提供者。