SpringCloud微服务化(一)-服务注册与发现

服务注册与发现

Eureka

  • 创建服务注册中心

    • pom.xml
    <parent>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-parent</artifactId>
       <version>Brixton.BUILD-SNAPSHOT</version>
       <relativePath/>
       <!-- lookup parent from repository -->
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>
    
    • 注解

    通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话.
    在DiscoveryMicroserviceApplication上添加此注解.

    • 配置application.yml(application.yml配置可变参数)

    在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,添加如下配置。
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false

    server:
      port: 8761
    
    eureka:
      instance:
        hostname: discovery
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://discovery:${server.port}/eureka/
    
    spring.cloud.config.discovery.enabled: true    
    • 配置bootstrap.yml(bootstrap.yml配置工程不可变参数,且在启动时需要设定的内容)

      spring:
        application:
          name: discovery    
    • 启动

    启动工程后,访问:http://localhost:8761/。可以看见Eureka的界面,其中还没有发现任何服务。

  • 创建服务提供方

    • pom.xml

      <parent>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-parent</artifactId>
          <version>Brixton.BUILD-SNAPSHOT</version>
          <relativePath/>
          <!-- lookup parent from repository -->
      </parent>
      
      <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-data-rest</artifactId>
          </dependency>
      <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-starter-eureka</artifactId>
          </dependency>          
    • UserController,实现/add请求处理接口

      @RestController
      public class UserController {
      
          private final Logger logger = Logger.getLogger(getClass());
      
          @Autowired
          private DiscoveryClient client;
      
          @RequestMapping(value = "/add" ,method = RequestMethod.GET)
          public String add(@RequestParam String name) {
              ServiceInstance instance = client.getLocalServiceInstance();
              logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId()+",user add:"+name);
              return "user add success";
        }
      }
      
    • 注解

    @EnableDiscoveryClient注解,该注解能激活Eureka中的DiscoveryClient实现

    • 配置

    通过spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。
    eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。

    bootstrap.yml

    spring:
      application:
        name: user-service

    application.yml

    server:
      port: 9000
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/
      instance:
        preferIpAddress: true    
    • 启动

    访问刚才的Eureka地址http://localhost:8761/,可以看到服务USER-SERVICE已经被注册了
    访问http://localhost:user-service:9000/add?name=xu,返回结果user add success

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值