微服务治理:eureka
1.服务注册:服务治理框架中通常会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,提供相关的主机、端口号、版本号、通信协议等信息告知注册中心,注册中心按服务名分类组织服务清单。服务注册中心还需要以心跳的方式去监测清单中的服务是否可用,若不可用需要从服务清单中剔除,达到排除故障服务的效果。
2、服务发现:在服务治理框架下运作,服务间的调用不再通过制定具体的实例地址来实现,而是通过向服务名发起请求调用实现,服务调方在调用服务提供方接口的时候,并不知道具体的服务实例位置。因此调用方需要向服务注册中心咨询服务,并获取所有服务的实例清单,以实现对具体服务实例的访问。调用方获取到清单后,以某种轮训策略取出一个位置来进行服务调用。
eureka既包括服务端组件,也包含客户端组件。
搭建服务注册中心:
1、引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、注解启动注册中心
通过@EnableEurekaServer注解启动一个注册中心提供给其他应用进行对话。
@EnableEurekaServer
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(七rue).run(args);
}
}
默认设置下,该服务注册中心也会将自己作为客户端来注册自己。所以需要禁用她的客户端行为:
• eureka.client.register-with-eureka: 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
• eureka.client.fetch-registry: 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为 false。
注册服务提供者搭建:主类上添加@EnableDiscoveryClient注解
客户端负载均衡:ribbon
ribbon是一个基于http和tcp的客户端负载均衡工具。springcloud实现对对ribbon的负载均衡调用只需两步:
1、服务提供者只需要启动多个服务实例并注册到一个注册中心或多个相关联的服务注册中心。
2、服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用。
容错断路器hystrix
设置网络超时、出问题时候自动快速失败,处于半开状态,通过一个请求过去试一下服务是否恢复,如果恢复了,立马关闭断路器,还不行,继续打开断路器
通过在工程主类中添加@Enable-CircuitBreaker注解开启断路器功能:
其实@SpringCloudApplication这一个注解就包含了服务发现和断路器功能:
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
声明式服务调用feign:
创建一个接口,并在接口上添加一些注解@FeignClient,代码就完成了。feign支持多种类型的注解,自带的和JAX-RS注解等。springcloud对feign进行了增强,使其支持springmvc注解,并整合了ribbon和eureka功能。
网关服务zuul
网友评论