• Eureka 服务中心


              old                                                                                           使用Eureka  将各个微服务分到不同的服务器上

    Eureka 就是个服务中心,将各种服务都注册到了服务中心,如几台服务提供相同服务来做均衡负载;监控服务器调用成功率来做熔断,移除服务列表中的故障点;监控服务调用时间来对不同的服务器设置不同的权重等等。

    Eureka由两个组件组成:Eureka服务器和Eureka客户端

    1、Eureka Server

    • 提供服务注册和发现

    2、Service Provider

    • 服务提供方
    • 将自身服务注册到Eureka,从而使服务消费方能够找到

    3、Service Consumer

    • 服务消费方
    • 从Eureka获取注册服务列表,从而能够消费服务

     一 。eureka服务注册中心的搭建

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

    添加 

    @EnableEurekaServer 注解 到启动类上

    配置properties
    spring.application.name=spring-cloud-eureka   
    
    server.port=8000
    eureka.client.register-with-eureka=false  表示是否将自己注册到Eureka Server,默认为true。
    eureka.client.fetch-registry=false  表示是否从Eureka Server获取注册信息,默认为true
    
    eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
    设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。

    eureka集群配置    每台注册中心分别又指向其它两个节点即可

    ---
    spring:
      application:
        name: spring-cloud-eureka
      profiles: peer1
    server:
      port: 8000
    eureka:
      instance:
        hostname: peer1
      client:
        serviceUrl:
          defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
    ---
    spring:
      application:
        name: spring-cloud-eureka
      profiles: peer2
    server:
      port: 8001
    eureka:
      instance:
        hostname: peer2
      client:
        serviceUrl:
          defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
    ---
    spring:
      application:
        name: spring-cloud-eureka
      profiles: peer3
    server:
      port: 8002
    eureka:
      instance:
        hostname: peer3
      client:
        serviceUrl:
          defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/

    启动

    java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
    java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
    java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3
    二. 服务提供

    pom 引入
    配置文件
    spring.application.name=spring-cloud-producer
    server.port=9000
    eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

    添加注解
    @EnableDiscoveryClient
    提供服务
    @RestController
    public class HelloController {
        
        @RequestMapping("/hello")
        public String index(@RequestParam String name) {
            return "hello "+name+",this is first messge";
        }
    }

    三.服务调用

    引入pom

    配置

    spring.application.name=spring-cloud-consumer
    server.port=9001
    eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

    添加注解
    @EnableDiscoveryClient启用服务注册与发现
    @EnableFeignClients 启用feign进行远程调用

    feign调用实现

    @FeignClient(name= "spring-cloud-producer")  远程服务名
    public interface HelloRemote {
        @RequestMapping(value = "/hello")
        public String hello(@RequestParam(value = "name") String name);
    }

    web层调用远程服务

    @RestController
    public class ConsumerController {
    
        @Autowired
        HelloRemote HelloRemote;
        
        @RequestMapping("/hello/{name}")
        public String index(@PathVariable("name") String name) {
            return HelloRemote.hello(name);
        }
    
    }

    将服务注册多个负载均衡



  • 相关阅读:
    EntytyFramework批量更新
    EntityFramework批量Insert
    asp.net MVC Session锁的问题
    谈谈ThreadStatic
    C#中XmlSerializer的内存占用问题
    转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
    面试心得
    Part 39 AngularJS route change events
    Part 38 AngularJS cancel route change
    Part 37 Difference between $scope and $rootScope
  • 原文地址:https://www.cnblogs.com/mxz1994/p/8435778.html
Copyright © 2020-2023  润新知