1宪哩、創(chuàng)建 eureka server 項目
使用intellij idea創(chuàng)建一個spring boot項目隧枫,創(chuàng)建服務中心锚沸。設置端口為5000跋选。
修改配置文件,設置端口
server.port=5000
添加eureka-server依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
Application.java添加注解@EnableEurekaServer
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
2哗蜈、創(chuàng)建Eureka Client項目
分別新建兩個 Spring Boot rest api接口服務 Customer前标、Product,分別設置端口號為9000和9001距潘。
添加eureka-client依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
修改Customer配置文件炼列,設置端口號、應用名稱及eureka服務的地址音比,如下:
server.port=9000
spring.application.name=CustomerService
eureka.client.service-url.defaultZone=http://localhost:5000/eureka
修改Product配置文件俭尖,設置端口號、應用名稱及eureka服務的地址洞翩,如下:
server.port=9001
spring.application.name=ProductService
eureka.client.service-url.defaultZone=http://localhost:5000/eureka
分別對兩個項目的Application.java添加注解@EnableDiscoveryClient
3稽犁、創(chuàng)建api網(wǎng)關
使用intellij idea創(chuàng)建一個spring boot項目,創(chuàng)建Api網(wǎng)關服務骚亿。設置端口為5555已亥。
添加eureka-client和zuul依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
修改配置文件,設置端口號循未、eureka服務的地址陷猫、應用名稱及通過zuul.routes.名稱.path和zuul.routes.名稱.serviceId指定訪問api服務對應的url路徑
server.port=5555
eureka.client.service-url.defaultZone=http://localhost:5000/eureka
spring.application.name=ZuulGateway
zuul.routes.customers.path=/customers/**
zuul.routes.customers.service-id=CustomerService
zuul.routes.products.path=/products/**
zuul.routes.products.service-id=ProductService
注:service-id值必須與client項目配置文件中的spring.application.name值一致
Application.java添加@EnableDiscoveryClient和@EnableZuulProxy注解
@SpringBootApplication
@EnableZuulProxy
@EnableDiscoveryClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
4、分別啟動這4個應用的妖,打開eureka服務:http://localhost:5000/
如下圖所示全部注冊成功:
打開http://localhost:5555/customers绣檬,返回結(jié)果如下:
打開http://localhost:5555/customers/10,返回結(jié)果如下:
打開http://localhost:5555/products嫂粟,返回結(jié)果如下:
通過上面的例子說明Api網(wǎng)關服務已經(jīng)生效娇未。結(jié)合具體的業(yè)務場景,我們的生產(chǎn)環(huán)境只對外暴露5555端口星虹,客戶端訪問Api網(wǎng)關零抬,由Api網(wǎng)關去路由到各個服務節(jié)點,這樣所有的客戶端調(diào)用都統(tǒng)一了入口宽涌。