10分钟了解Eureka

介绍

真糟心,Eureka官网表示不会更新了,大家换一个框架学吧,白费了我写这篇问文章了!

Eureka Server之间可以相互注册,就算其中一个挂掉了也不会影响系统的运行。

而系统中的其他微服务,使用eureka client连接到eureka server并维持心跳连接。这样系统的维护人员就可以通过eureka server来监控系统中各个微服务是否正常运行。

Eureka包含两个组件:Eureka Server和Eureka Client。 Demo运行

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

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

server配置

配置服务,可以多创建几个,只是端口不一样而已

server:
  port: 8761
spring:
  application:
    # 多个服务都可以叫server,但你访问http://server/hi时,RestTemplate可以根据server动态获取当前可用的微服务
    name: server
eureka:
  instance:
    # 与客户端同metadata-map.zone的会优先使用
    metadata-map:
      zone: cs1
  client:
    # 是否注册自身到eureka服务器,默认true
    register-with-eureka: true
    # 是否获取eureka服务器注册表上的注册信息,默认true
    fetch-registry: true
    # region的命名不会影响metadata-map.zone的同地区匹配
    region: xibanya
    availability-zones:
      xibanya: cs3,cs2
    # 将服务注册到其他注册中心去
    service-url:
      cs3: http://localhost:8763/eureka/
      cs2: http://localhost:8762/eureka/

配置服务的java类

@RestController
@EnableEurekaServer
@SpringBootApplication
public class ServiceOneApplication {

   private static Logger log = LoggerFactory.getLogger(ServiceOneApplication.class);

   public static void main(String[] args) {
      SpringApplication.run(ServiceOneApplication.class, args);
   }


   @RequestMapping("/ok")
   public String getHi(HttpServletRequest httpServletRequest){
      return "ServiceOneApplication " + httpServletRequest.getServerPort();
   }
}

配置consumer

spring:
  application:
    # 为客户端命名
    name: consumer

eureka:
  instance:
    # 当前的主机地址,访问服务器时会用该地址
    hostname: 127.0.0.1
    metadata-map:
      # 配置当前服务所在的地区
      zone: cs1
  client:
    region: hunan
    availability-zones:
      hunan: cs1,cs2,cs3
     # 配置服务的地址,也可以是注册中心
    service-url:
      cs1: http://localhost:8761/eureka/
      cs2: http://localhost:8762/eureka/
      cs3: http://localhost:8763/eureka/
    # 优先使用相同区域的服务。与consumer在同一个metadata-map.zone里的server会优先使用,
    # 没有可用的再使用其他区域的微服务。默认是true
    prefer-same-zone-eureka: true

server:
  port: 8779

配置client的java类

@EnableDiscoveryClient
@SpringBootApplication
public class ClientApplicationOne {

   public static void main(String[] args) {
      SpringApplication.run(ClientApplicationOne.class, args);
   }
}

@RestController
class ServiceInstanceRestController {

   @Autowired
   private DiscoveryClient discoveryClient;

   @RequestMapping("/service-instances/{applicationName}")
   public List<ServiceInstance> serviceInstancesByApplicationName(
         @PathVariable String applicationName) {
      return this.discoveryClient.getInstances(applicationName);
   }

   @Bean
   @LoadBalanced
   RestTemplate restTemplate() {
      return new RestTemplate();
   }


   @Autowired
   private RestTemplate restTemplate;

   @RequestMapping("/hi")
   public String getHi(){
      return "获取成功"+restTemplate.getForObject("http://server/ok",String.class);
   }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值