微服务
1.服务的调用者与被调用这各为服务的消费者和服务的提供者
一个微服务项目既可以为服务的提供者也可以为服务的消费这,要看其在某一个业务中所扮演的角色
1.1消费者远程调用提供者
可以使用RestTemplate来发送远程调用请求,这个对象与任何代码无关,不管是java还是其他类型的语言都是可以使用Http地址来请求某个服务的
->1引导类中注入Bean对象
@Bean
@LoadBalanced //负载均衡 一般提供者为集群时可以使用,也可以使用组件ribbon
public RestTemplate restTemplate(){
return new RestTemplate();
}
->2注入Bean对象发送请求
String url = "提供者的ip地址";
User user = restTemplate.getForObject(url, User.class); //发送get请求 post:postForObject
2.Eureka注册中心
2.1Eureka如何获取服务的提供者IP地址并且检验某服务的健康?
当服务的提供者启动时,会通过yml文件中配置的eureka地址访问eureka并注册IP,eureka每30秒会向提供者索要Ip(心跳机制),若获取到提供者的注册地址后会继续心跳,若获取不到提供者IP,eureka则会将该提供者剔除
2.2Eureka如何使用
eureka的使用基本上都是分三步走
->1导入相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
注意我们需要的是eureka服务端的依赖
->2配置yml核心配置文件
server:
port: 10086 #eureka的端口号
spring:
application:
name: eureka-server #该为服务的名称
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka/ #eureka的注册地址
注意:
我们在配置eureka服务端的时候也是需要配置eureka的注册地址的,因为eureka在也相当于一个微服务,并且也是为了之后防止单点故障做集群使用的,eureka的服务端也是客户端,相当于有点"雌雄同体"的意思
->3启动类开启Eureka服务端注解
@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class,args);
}
}
2.3配置Eureka客户端
配置Eureka客户端也是比较的简单大致分两步走
->1.在对应的客户端引入Eureka客户端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
->2.配置对应的yml文件
server:
port: 8080
spring:
application:
name: 服务的名称 #比较重要之后发送远程调用
eureka:
client:
service-url:
defaultZone: 自己配置的Eureka服务端地址
2.4通过Eureka注册中心来发送远程调用
当我们配置好Eureka客户端服务端后启动Spring,可以看到对应的资源的名称以及ip地址
因为windows的原因可能ip地址显示的为主机名称,但是不会影响我们的调用
直接通过对应提供者服务名称访问即刻实现远程调用,若对方为集群的话也可以添加ribbon组件或者负载均衡
String url = "http://user-service/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);