服务注册

第三方服务接入注册中心

第一次分享博客,大神勿喷,请多多指教! 
本篇提到的注册中心是由SpringCloud组件架构中的EurekaServer实现的,所以根据第三方服务的框架类型归纳为以下三种注册方式:

一、 SpringBoot服务:
由于SpringCloud依赖于SpringBoot,所以采用SpringBoot编写的第三方服务注册到注册中心较为简单直接,具体步骤如下:

  1. 在pom.xml中加入以下依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    
  2. 配置application.properties/application.yml,以下是针对于application.properties的配置

    #服务注册到Eureka Server上的应用名称
    spring.application.name=demo-service
    #该配置是在Eureka Server展示应用的IP,默认则展示应用的主机名
    eureka.instance.prefer-ip-address=true
    #Eureka Server注册服务的地址
    eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
    
  3. 在启动类中添加@EnableDiscoveryClient,该注解可用于所有服务发现组件(包括Zookeeper、Consul等),而@EnableEurekaClient这个注解只用于Eureka作为服务发现组件

    /**
     * Created by zhoushun on 2018/11/5.
     */
    @SpringBootApplication
    @EnableDiscoveryClient
    public class DemoServApplication {
        public static void main(String[] args) {
            SpringApplication.run(DemoServApplication.class, args);
        }
    }
    

二、 非SpringBoot服务(属于JVM服务):
服务在启动的时候可以设置监听器,监听服务的启动并完成注册,以SpringMVC为例,具体步骤如下:

  1. 在pom.xml中加入以下依赖

    <dependencies>
        <!--eureka client And java Servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.eureka</groupId>
            <artifactId>eureka-client</artifactId>
            <version>1.7.0</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.archaius</groupId>
            <artifactId>archaius-core</artifactId>
            <version>0.7.4</version>
        </dependency>
        <!--slf4j日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!--Spring相关的依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.13.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.10</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.10</version>
        </dependency>
    </dependencies>
    
  2. 在resources下新建配置文件config.properties,并做如下配置

    #注册到Eureka Server上的服务名称
    eureka.name=eurekaClientDemo1
    #该服务的虚拟主机名,Eureka客户端会识别vipAddress
    eureka.vipAddress=test1
    #Eureka Server的服务地址
    eureka.serviceUrl.default=http://localhost:8761/eureka/
    

    注:配置中并没有写入服务端口的配置,因为服务的端口取决于项目启动所依赖的Web容器的端口

  3. 在/WEB-INF下的web.xml中设置监听器,配置如下
    ![在这里插入图片描述(https://img-blog.csdnimg.cn/20181107112524820.png)

  4. 在/WEB-INF下的dispatcher-servlet.xml加入如下配置

    <mvc:annotation-driven/>
    <context:annotation-config/>
    <bean            class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
    <context:component-scan base-package="com.gsafety.eureka"></context:component-scan>
    

    至此,所需要的配置已经配置完成了!

  5. Java代码中主要需要写一个启动监听类,继承ServletContextListener这个类,详细代码如下
    在这里插入图片描述

三、 非JVM服务(如node.js、python等语言编写的服务)
针对这种服务,我们是通过代理的方式注册服务,所采用的代理模式为SideCar。具体操作步骤如下:

  1. 首先写一个SideCar代理服务,建议使用SpringBoot进行代码编写,在SideCar-Service对应的pom.xml文件中加入以下依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix-sidecar</artifactId>
            <version>1.4.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>
    </dependencies>
    
  2. 在application.properties配置文件中加入以下配置

    server.port=6003
    spring.application.name=SideCar-service
    eureka.instance.prefer-ip-address=true
    eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
    #SideCar所要代理的非JVM服务的端口
    sidecar.port=7001
    #SideCar需要从所要代理的端口中得到非JVM服务的健康检查
    sidecar.health-uri=http://localhost:7001/health.json
    

    注:其中http://localhost:7001/health.json 的返回值是个json对象,形式如:{“status”:”UP”}。如果所接入非JVM服务不便于返回该json对象,那么可以在本服务中进行硬编码,固定这个对象。

  3. 在启动类中加入@EnableSidecar这个注解,具体如下:

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

    综上所述:针对不同框架、不同语言编写的第三方服务进行服务注册的方式已归纳完结。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值