服务之间调用
- 创建 cloud-provider-payment8001服务
- 创建 cloud-consumer-order80服务
- RestTemplate
- RestTemplate提供了多种便携访问远程Http服务的方法,是一种简单便携的方法restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集
- 注入RestTemplate
@Configuration
public class ApplicationContextConfig {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
- cloud-consumer-order80服务使用restTemplate调用cloud-provider-payment8001提供的接口
@RestController
public class OrderController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/create")
public CommonResult<Payment> create(Payment payment){
/***
* 参数1: 请求地址
* 参数2: 请求参数
* 参数3: 响应转换的对象类型
*/
return restTemplate.postForObject("http://localhost:8001/payment/create",payment,CommonResult.class);
}
}
Eureka注册中心
- Spring Cloud封装了Netflix公司开发的Eureka模块来实现服务治理
- 在传统的rpc远程调用框架中,管理每个服务与服务之间已依赖关系比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
- Eureka采用了CS的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心。而系统的其他微服务,使用Eureka的客户端连接到Eureka的客户端连接到Eureka Server并维持心跳连续。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。
- 在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的洗洗注册到注册中心上。另一方面(消费者|服务提供者)去注册中心上获取到实际的服务通信地址,然后在实现本地RPC调用。RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))
EurekaServer服务端安装
- pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
- application.yml
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com # eureka服务端的实例名称
client:
register-with-eureka: false # false 表示不向注册中心注册自己
fetch-registry: false # false 表示自己就是注册中心
service-url:
defaultZone: http://127.0.0.1:7001/eureka
server:
enable-self-preservation: false # 关闭自我保护机制
eviction-interval-timer-in-ms: 2000 # 清理无效服务的时间间隔
- 启动类添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer // 注册中心 Eureka Server
public class EurekaMain7001 {
public static void main(String[] args) {
SpringApplication.run(EurekaMain7001.class,args);
}
}
EurekaServer客户端注册到注册中心
- pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- application.yml
eureka:
client:
register-with-eureka: true # ture 自己注册到 Eureka Server
fetch-registry: true # 是否从Eureka Server 抓取已有的注册信息
service-url:
defaultZone: http://127.0.0.1:7001/eureka
instance:
instance-id: privider8001 # 修改服务名称
prefer-ip-address: true # 访问信息ip地址
lease-renewal-interval-in-seconds: 1 # Eureka客户端向服务端发送心跳的时间间隔 默认30s
lease-expiration-duration-in-seconds: 2 # Eureka服务端在收到最后一次心跳后等待时间上限,默认90s,超时将剔除服务
- 主启动类添加@EnableEurekaClient、@EnableDiscoveryClient注解
@SpringBootApplication
@EnableEurekaClient //Eureka Client
@EnableDiscoveryClient //开启 Eureka 服务发现功能
public class PaymentMain8001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8001.class,args);
}
}
Eureka集群
- Eureka服务端相互注册
- 7001注册Eureka7002
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com # eureka服务端的实例名称
client:
register-with-eureka: false # false 表示不向注册中心注册自己
fetch-registry: false # false 表示自己就是注册中心
service-url:
defaultZone: http://127.0.0.1:7002/eureka # 注册到 EurekaServer 7002
server:
enable-self-preservation: false # 关闭自我保护机制
eviction-interval-timer-in-ms: 2000 # 清理无效服务的时间间隔
- 7002注册Eureka7001
server:
port: 7002
eureka:
instance:
hostname: eureka7002.com # eureka服务端的实例名称
client:
register-with-eureka: false # false 表示不向注册中心注册自己
fetch-registry: false # false 表示自己就是注册中心
service-url:
defaultZone: http://127.0.0.1:7001/eureka # 注册到 EurekaServer 7001
- 服务注册到Eureka集群(同时注册到7001、7002)
eureka:
client:
register-with-eureka: true # ture 自己注册到 Eureka Server
fetch-registry: true # 是否从Eureka Server 抓取已有的注册信息
service-url:
defaultZone: http://127.0.0.1:7001/eureka,http://127.0.0.1:7002/eureka
instance:
instance-id: consumer80
prefer-ip-address: true
标签:false,eureka,注册,7001,服务,Eureka
From: https://www.cnblogs.com/blackyoumo/p/16570588.html