springcloud eureka

eureka

什么是eureka

在这里插入图片描述

服务调用流程

在这里插入图片描述

spring cloud的技术栈应用

在这里插入图片描述

服务治理

在这里插入图片描述

服务发现的两种方式–客户端服务发现在这里插入图片描述##服务发现的两种方式–服务端 服务发现

在这里插入图片描述

服务治理对比

在这里插入图片描述

CAP ACID BASE

CAP

在这里插入图片描述

BASE

在这里插入图片描述

部署eureka项目

maven

<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>org.example</groupId>
  <artifactId>muse-eureka</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

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

  <name>muse-eureka</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
<!--    <spring-cloud.version>2020.0.0</spring-cloud.version>-->
    <spring-cloud.version>Greenwich.SR6</spring-cloud.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
  </dependencies>

  <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>
</project>

application启动类

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

properties配置文件

server.port=8080
eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

部署eureka-client-producer

maven

<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>org.example</groupId>
  <artifactId>muse-eureka</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

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

  <name>muse-eureka</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
<!--    <spring-cloud.version>2020.0.0</spring-cloud.version>-->
    <spring-cloud.version>Greenwich.SR6</spring-cloud.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>

  <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>
</project>

配置文件

spring.application.name=eureka-client-producer
server.port=7002
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/

controller类

@RestController
public class HelloController {

    @Resource
    private Registration registration;

    @Resource
    private DiscoveryClient discoveryClient;

    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @GetMapping("/hello")
    public String hello() {
        List<ServiceInstance> instances = discoveryClient.getInstances(registration.getServiceId());
        instances.forEach(data -> {
            System.out.println(String
                    .format("%s INFO /hello-%s serviceId=%s port=%s",
                            sdf.format(new Date()),
                            data.getHost(),
                            data.getServiceId(),
                            data.getPort()));

        });
        return "hello world";
    }

}

部署eureka-client-consumer

maven依赖

<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>org.example</groupId>
  <artifactId>muse-eureka</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

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

  <name>muse-eureka</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
<!--    <spring-cloud.version>2020.0.0</spring-cloud.version>-->
    <spring-cloud.version>Greenwich.SR6</spring-cloud.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>

  <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>
</project>

配置文件

spring.application.name=eureka-client-consumer
server.port=7003
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/

启动类 加上restTemplate

@EnableEurekaClient
@SpringBootApplication
@Configuration
public class App 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class,args);
    }
    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

controller

@RestController
public class HelloController {

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/hello")
    public String hello() {
        return restTemplate.getForEntity(
                "http://eureka-client-producer/hello",
                String.class).
                getBody();
    }

}

eureka集群

除了配置文件跟单机的eureka不同 其他都无区别
配置文件

server.port=8082
spring.application.name=eureka-cluster #项目名称要相同
eureka.instance.hostname=cluster2 #实例名不同
#eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
eureka.client.service-url.defaultZone=http://cluster1:8081/eureka/
eureka.client.register-with-eureka=true #一定为true或者不写 才会注册服务
eureka.client.fetch-registry=true #一定为true或者不写 才会去检索服务

server.port=8081
spring.application.name=eureka-cluster
eureka.instance.hostname=cluster1
#eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
eureka.client.service-url.defaultZone=http://cluster2:8082/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true

eureka集群架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常用的http rest接口

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值