zoukankan      html  css  js  c++  java
  • SpringCloud01——服务的注册和发现

    SpringCloud01——服务的注册和发现

    一、微服务的注册和发现

    我们在微服务中,往往有服务提供者,服务消费者和服务注册中心。我们之前学习的Zookeeper就是一个注册中心。但是在官方的SpringCloud中,并不推荐使用ZK作为注册中心,我们往往使用eureka

    服务提供者,服务消费者,注册中心呈一个三角关系

    1.服务提供者将服务注册到中心

    2.服务消费者通过注册中心去查找服务

    3.查找服务后进行调用

    4.服务消费者和服务注册中心保持心跳连接,一旦服务提供者的地址发生改变,注册中心会通知服务消费者

    二、注册中心eureka

    SpringCloud提供了多种注册中心支持,eureka,zk等,官方推荐eureka

    科普:什么是Eureka?
    Eureka是Netfix开源的服务发现组件,本身是一个基于Rest的服务。包含Server和Client两部分。SpringCloud将其集成在子项目Spring Cloud Netflix中,从而实现微服务的注册和发现。
    

    2.1.编写Eureka Server

    2.1.1.新建一个Spring Starter,导入eureka server

    2.1.2.创建一个application.yml,在启动类@EnableEurekaServer

    server:
      port: 1111 #服务端口
     
    eureka:
      client:
        register-with-eureka: false #是否将自己注册到Eureka服务中,自己本来就是服务无需注册
        fetch-registry: false #是否从Eureka中获取注册信息
        service-url: # Eureka客户端与Eureka服务端交互地址
          defaultZone: http://localhost:${server.port}/eureka/
    

    2.1.3.新建一个Spring Starter,导入eureka,编写一个服务

    2.1.4.创建一个application.yml,在启动类@EnableDiscoveryClient,去上面那个注册中心去注册发现

    server:
      port: 8081 
      
    spring:
      application:
        name: microservice-item
        
    eureka:
      client:
        register-with-eureka: true
        fetch-registry: true #是否从eureka中获取注册信息,默认true
        service-url:
          defaultZone: http://localhost:1111/eureka/
    

    2.1.5.编写服务(关键代码)

    @Service
    public class ItemService {
    	
    	@Autowired
    	private RestTemplate restTemplate;
    	
    	@Autowired
    	private DiscoveryClient discoveryClient;
    	
    	/**
    	 * 商品微服务进行查询
    	 * @param id
    	 * @return
    	 */
    	public Item queryItemById(Long id) {
    		List<ServiceInstance> instances = discoveryClient.getInstances("MICROSERVICE-ITEM");
    		ServiceInstance serviceInstance = instances.get(0);
    		String url="http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/item/"+id;
    		return restTemplate.getForObject(url, Item.class);
    	}
    }
    

    2.2.编写eruka-client

    2.2.1.新建一个eruka-client,添加eruka发现组件和web包

    2.2.2.编写配置文件application.yml

    #服务端口
    server:
      port: 8888
    
    #应用名称及验证账号
    spring:
      application:
        name: server-text
    
    #注册中心
    eureka:
      #  server:
      #    enable-self-preservation: false       #关闭保护机制
      #    eviction-interval-timer-in-ms: 2000   #剔除失效服务间隔,单位毫秒
      client:
        register-with-eureka: true
        fetch-registry: true
        #设置服务注册中心的URL
        service-url:
          defaultZone: http://root:root@eureka-7901:7901/eureka/
      instance:
        hostname: server-text
    

    2.2.3.添加启动类注解

    @EnableEurekaClient
    

    2.2.4.启动后发现集群启动正常

  • 相关阅读:
    面向对象的思维
    343. 整数拆分
    413. 等差数列划分
    303. 区域和检索
    62. 不同路径
    char类型与int类型相加
    mybatis里面resultmap的问题
    easyui的datagrid如何获取一个对象里面的成员对象里面的属性?
    ==和equls的区别
    泛型的使用思想
  • 原文地址:https://www.cnblogs.com/littlepage/p/11627898.html
Copyright © 2011-2022 走看看