微服务SpringCloud之Eureka

SpringCloud是基于SpringBoot基础之上开发的微服务框架,SpringCloud是一套目前非常完整的微服务解决方案框架,其内容包含服务治理、注册中心、配置管理、断路器、智能路由、微代理、控制总线、全局锁、分布式会话等。

这一篇先介绍什么是服务治理、注册中心(Eureka)。

官方的介绍在这里Eureka wiki。Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

什么是服务治理

在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

服务注册与发现

 在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,让后在实现本地rpc调用远程。

在我看来,Eureka的吸引力来源于以下几点:

开源:大家可以对实现一探究竟,甚至修改源码。

可靠:经过Netflix多年的生产环境考验,使用应该比较靠谱省心

功能齐全:不但提供了完整的注册发现服务,还有Ribbon等可以配合使用的服务。

基于Java:对于Java程序员来说,使用起来,心里比较有底。

spring cloud可以使用Spring Cloud, 与Eureka进行了很好的集成,使用起来非常方便。

一、下面简单的写一个dome(Eureka 服务端)

这里我们展示Eureka1.X版本的,因为Eureka 2.X已经闭源了~~~~~~~

1.创建项目引入一下依赖

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>sprongcloud2.0-Eureka</artifactId>

    <!-- 管理依赖 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!--SpringCloud eureka-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

2.配置application.yml 文件

#服务端口
server:
  port: 8882
#服务别名
spring:
  application:
    name: Eureka
eureka:
  instance:
#服务注册中心实例的主机名
    hostname: localhost
  client:
#是否开启将自己作为服务注册
    registerWithEureka: false
#是否检索服务
    fetchRegistry: false
#  server:
#    enableSelfPreservation: false
#服务注册中心的配置内容,指定服务注册中心的位置
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3.启动类

@SpringBootApplication
@EnableEurekaServer
public class Eureka02App {
    public static void main(String[] args) {
        SpringApplication.run(Eureka02App.class,args);
    }
}

4.面板信息

到这里一个简单Eureka 服务注册中心就配置完成了。

二、接下来搭建一下Eureka 的客户端:

1.同服务端一样,引入maven依赖

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>sprongcloud2.0-Eureka</artifactId>

    <!-- 管理依赖 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- SpringBoot-整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--SpringCloud eureka-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>
                2.0.2.RELEASE
            </version>
        </dependency>
    </dependencies>

2.配置Eureka配置文件

#服务端口
server:
  port: 8881
#服务别名
spring:
  application:
    name: Eureka-client
eureka:
  client:
#服务注册中心实例的主机名
    service-url:
     defaultZone: http://localhost:8882/eureka

#是否开启将自己作为服务注册
     registerWithEureka: true
#是否检索服务
     fetchRegistry: true

3.这样简单的一个eureka客户端就基本搭建完了,启动一下(注:在启动类中一定要开启Eureka客户端 @EnableEurekaClient)

@SpringBootApplication
@EnableEurekaClient
public class eurekaClientApp {
    public static void main(String[] args) {
        SpringApplication.run(eurekaClientApp.class,args);
    }
}

4.在Eureka 服务端可以看到Eureka 客户端服务已经注册8882端口的注册中心

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值