标签:turn span over conf gis app consumer stat 实例
我这为了方便测试,只是创建了一个空的项目,然后再分别创建3个模块
创建注册中心模块
使用spring的初始化向导
由于要做注册中心,所以我们选择Eureka Server模块
接下下来再创建服务提供者和服务消费者模块
创建模块步骤都是一样,唯独服务提供者和服务消费者创建时选择的模块是Eureka Discovery Client,而不是Eureka Server,另外加一个Web模块
创建后的三个模块
server:
port: 8761
eureka:
instance:
hostname: eureka-server #eureka实例主机名
client:
register-with-eureka: false #不把自己注册到eureka
fetch-registry: false #不从eureka上来获取服务的注册信息
service-url:
defaultZone: http://localhost:8761/eureka/ #自己指定注册中心服务的地址
注册中心默认的服务地址
/** * 注册中心 * 1、配置Euraka信息 * 2、@EnableEurekaServer */ @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
启动服务之后控制台有打印
说明注册中心配置成功
TicketService代码
import org.springframework.stereotype.Service; @Service public class TicketService { public String getTicket(){ return "《我和我的祖国》"; } }
TicketController代码
@RestController public class TicketController { @Autowired TicketService ticketService; @GetMapping("/ticket") public String getTicket(){ return ticketService.getTicket(); } }
server: port: 8001 spring: application: name: provide-ticket eureka: instance: prefer-ip-address: true #注册的时候使用服务的ip地址 client: service-url: defaultZone: http://localhost:8761/eureka/ #指定注册中心服务的地址
服务的地址要和我们创建的注册中心的地址想对应
注意:我们的注册中心必须是一直启动着,这样才能注册进去
启动着注册中心(eureka-server模块),然后启动服务提供者(provide-ticket模块)后;
可以在注册中心页面中看到我们注册成功的服务
spring:
application:
name: consumer-user
server:
port: 8200
eureka:
instance:
prefer-ip-address: true #注册的时候使用服务的ip地址
client:
service-url:
defaultZone: http://localhost:8761/eureka/ #指定注册中心服务的地址
@EnableDiscoveryClient //开启发现服务功能 @SpringBootApplication public class ConsumerUserApplication { public static void main(String[] args) { SpringApplication.run(ConsumerUserApplication.class, args); } @LoadBalanced //使用负载均衡机制 @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
通过RestTemplate进行访问远程服务
@LoadBalanced:使用负载均衡机制稍后再说明
@RestController public class UserController { @Autowired RestTemplate restTemplate; @GetMapping("/buy") public String buyTicket(String name){ String s = restTemplate.getForObject("http://PROVIDE-TICKET/ticket", String.class); return name+"购买了"+s; } }
restTemplate.getForObject("http://PROVIDE-TICKET/ticket", String.class)
第一个参数是http://服务名/服务地址
服务地址(服务模块里的controller):
第二个参数:返回值类型
注意注册中心服务和服务提供者需要是开启状态才能调用成功
启动服务,链接访问
远程调用服务成功
即注册中心有两个或多个相同的服务时,比如这里有两个PROVIDER-TICKET服务注册了;启动了负载均衡机制时,那么服务消费者远程调用这个PROVIDER-TICKET服务时,
是轮回着调用的;以达到负载均衡。
38、springboot——分布式之SpringCloud
标签:turn span over conf gis app consumer stat 实例
原文地址:https://www.cnblogs.com/lyh233/p/12716128.html