设为首页 加入收藏

TOP

服务治理: Spring Cloud Eureka(一)
2019-09-03 01:23:53 】 浏览:57
Tags:服务 治理 Spring Cloud Eureka

服务治理: Spring Cloud Eureka

一、简介

Spring cloud eurekaSpring cloud netfilx中的一部分,它基于Netflix Eureka做了二次封装,主要职责完成Eureka 中的服务治理功能

本篇主要探讨如下:

  • 服务治理和Eureka简介
  • 构建服务注册中心
  • 服务注册与服务发现
  • Eureka 基础架构
  • Eureka 的服务治理机制
  • Eureka 的配置

二、 功能概述

服务治理

? 服务治理可以是说微服务架构中最为核心的基础模块,它主要用来实现各个微服务实现的自动化注册与发现。在开始的时候微服务系统的服务可能并不多,我们需要一些配置来完成服务的调用。

  • 服务注册: 在服务治理框架中,通常会构建一个注册中心,由各个服务提供者来向注册中心登记并提供服务,将主机与端口号、版本号、通信协议等一些附加信息告知注册中心,注册中心按照服务名分类组织服务清单。

    服务名 位置
    服务A 192.168.1.101:8000, 192.168.1.102:8000
    服务B 192.168.1.103:9000,192.168.1.104:9000,192.168.1.105:9000

    比如我们有两个提供服务A 的进程分别位于192.168.1.101:8000, 192.168.1.102:8000 上,另外还有三个提供服务B 的进程分别位于192.168.1.103:9000,192.168.1.104:9000,192.168.1.105:9000 进程上,那么你向服务中心注册过后,服务中心就会有一个这样的服务列表,服务中心向各个注册的服务发送心跳机制,来检验服务是否可用,若不可用就会把服务剔除,来达到故障排除的效果。

  • 服务发现: 由于在服务治理框架下运作,服务间的调用不再通过指定的Ip:端口号这种方式来实现 ,而是向服务名发起请求实现。所以,在服务调用方在调用服务提供方接口的时候,并不知道具体服务的位置。因此,服务调用方需要向服务中心获取服务列表,以实现对具体服务的访问。

    比如一个服务调用者C想要获取服务A的ip来完成接口的调用,那么他首先应该去服务中心发起咨询你服务的请求,由注册中心的服务列表将A的位置发送给调用者C,如果按照上面服务A地址的话,那么调用者C会由两个服务A的地址来提供服务,当服务C需要调用的时候,便从服务A中的清单中采用轮询的方式取出一个位置来服务调用,这个过程也被称为负载均衡。

Netflix Eureka

  • Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
  • Eureka包含两个组件: Eureka ServerEureka Client
  • Eureka Server 简称Eureka 服务端, 主要提供服务注册功能,其实也就相当于是注册中心,和其他服务注册中心一样,提供高可用的配置,同时也支持集群部署,当集群中某一个节点发生故障时,那么Eureka就会进入自我保护模式,它允许故障的节点继续提供服务的发现与注册,当故障分片恢复运行时,集群中的其他分片会把他们的状态再同步回来。
  • Eureka Client:简称Eureka 客户端,主要处理服务的注册与发现。客户端通过注解和参数配置的方式,Eureka 客户端向注册中心注册自身的服务并周期性的发送心跳机制来更新服务租约。同时,它也能从服务端查询当前注册的服务信息并把它们缓存到本地并周期性地刷新服务状态。

搭建服务注册中心

Spring Cloud Eureka 是采用SpringBoot 进行项目的快速搭建的,如果不太了解SpringBoot的话,可以了解一下SpringBoot 入门实例。

  • 首先创建SpringBoot工程,命名为Eureka-server,也就是Eureka服务端,创建完成后在pom.xml文件中增加如下maven依赖,完整的文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.eureka.server</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>


    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</gro
首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇if语句的嵌套使用之获取三个数据.. 下一篇笔记-迎难而上之Java基础进阶7

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目