SpirngCloud搭建Eureka
1. 创建新项目
1.1新建一个maven项目

1.2 输入groupid:com.hewow和artifactid:springcloud-erreka


1.3然后finish
1.4新建项目的目录结构如下,其中src文件夹我们用不上,可以选择删除

2.搭建注册中心
2.1新建一个module项目,在maven项目下右键,新建module,选择Spring Initializr,并命名为server-center,如下图所示:

2.2后面依然是填写GroupId和ArtifactId,后续选择如下图:

勾选spring cloud discovery--》eureka server然后next到finish
第一次创建spring-cloud-eureka项目需要下载一些jar包,时间稍长,等待即可。
2.3创建完成后修改配置
创建模块结束之后,修改applications.properties
#eureka注册中心 #端口号 server.port=8761
eureka.instance.hostname=localhost #表示十分将自己注册到Eureka Server,默认为true。由于当前应用就是Eureka Server,故而设为false。 eureka.client.register-with-eureka=false #表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他 的Eureka Server节点的数据,故而设为false eureka.client.fetch-registry=false #置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,默认是http://localhost:8761/eureka;多个地址可用,分隔 eureka.client.service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka/ |
修改SpringCloudEurekaApplication类文件为下:
package com.buou.springcloudeureka;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer @SpringBootApplication public class SpringCloudEurekaApplication {
public static void main(String[] args) { SpringApplication.run(SpringCloudEurekaApplication.class, args); }
} |
其中@EnableEurekaServer是声明这是一个Eureka注册中心
2.4至此,关于一个EurekaServer的注册中心配置已经完成,启动该Application,可以在控制台看到日志信息,同时,可以在浏览器输入“127.0.0.1:8761”,出现如下界面:

看到上图所示即代表启动成功,可以看到“No instances available”,因为还没有创建服务提供者。
3.搭建服务提供-order
3.1.新建module “server-order”
这里考虑到后续会添加很多服务,因此使用order后缀区别,当然用户可以自定义其他的名字。创建的过程和上述创建是一致的,这里不再赘述。
3.2.修改配置applications.properties
添加如下内容:
#eureka-client #端口号 server.port=8082
eureka.instance.hostname=localhost #置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,默认是http://localhost:8761/eureka;多个地址可用,分隔 eureka.client.service-url.default-zone=http://localhost:8761/eureka/
spring.application.name=service-order |
Spring.application.name代表这个服务提供者的名字,用来区分其他服务;
eureka.client.service-url.default-zone是服务中心的地址
3.3.修改ServerOrderApplication类
添加@EnableEurekaClient注解
package com.hewow.serverorder;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@EnableEurekaClient @SpringBootApplication public class ServerOrderApplication {
public static void main(String[] args) { SpringApplication.run(ServerOrderApplication.class, args); }
} |
注册中心和服务提供者的区别就在于注解的不同。
3.4.新建一个Controller类
首先在ServerOrderApplication同级目录下新建一个包“controller”,在controller包下面建立一个OrderController类,OrderController类的内容如下:
package com.hewow.serverorder.controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
@RestController public class OrderController {
@RequestMapping("getOrder") @GetMapping public String getOrder(){ return "order-001"; }
} |
3.5.测试服务是否可用
测试server-order(前提是注册中心已启动),首先启动服务后,在这册中心看到注册了一个服务,如下图:

在浏览器输入“127.0.0.1:8082/getOrder”直接访问该服务,显示信息如下图所示:

服务提供创建完成。
4.搭建服务消费-user
上述过程实现了从浏览器直接访问一个服务的过程,但如何通过一个微服务访问另外一个微服务呢?下面创建一个服务消费者以调用刚才的微服务。
4.1.新建module模块,命名为“server-user”,过程同上
4.2修改配置文件application.propeties
#eureka-client #端口号 server.port=8083
eureka.instance.hostname=localhost #置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,默认是http://localhost:8761/eureka;多个地址可用,分隔 eureka.client.service-url.default-zone=http://localhost:8761/eureka/
spring.application.name=service-user |
虽然是服务消费者,但其本身也是一个服务提供者,因此需要在服务注册中心注册。可以看到这里更换了一个端口号,同时更改了服务的名字,若新建其他服务可类似更改。
4.3.修改ServerUserApplication
package com.hewow.serveruser;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate;
@EnableEurekaClient @SpringBootApplication public class ServerUserApplication {
@Bean //注入restTemplate @LoadBalanced //在注册中心里进行查找微服务,Ribbon负载均衡 //生成一个RestTemplate实例对象 //使用user服务调用order服务就是通过这个restTemplate对象实现的 public RestTemplate restTemplate(){ return new RestTemplate(); }
public static void main(String[] args) { SpringApplication.run(ServerUserApplication.class, args); }
} |
同样这里要添加注解@EnableEurekaClient表明自己是Eureka-Client的身份;这里注入了一个resttemplate用来进行后续的服务调用。
4.4.添加UserController
同理,新建包并新建UserController类,内容如下
package com.buou.springcloudclientuser.com.buou.user.controller;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;
@RestController public class UserController {
@Autowired private RestTemplate restTemplate;
@RequestMapping("getUserOrder") public String getUserOrder(){ String url="http://service-order/getOrder"; //返回值类型和我们的业务返回值一致 return restTemplate.getForObject(url, String.class); } } |
4.5.测试该服务
启动该服务,刷新注册中心,可以看到多了一个服务:
在浏览器中输入“127.0.0.1:8083/getUserOrder”,出现界面如下:

可以发现成功调用了order服务并返回了结果,实现了server-user服务调用server-order服务的操作。服务消费者本身又是服务提供者。