更新时间:2024-12-16 GMT+08:00

微服务注册发现

操作场景

微服务是业务概念,某个进程提供某种服务,那它就是个微服务。每一个服务都具有自主运行的业务功能,对外开放不受语言限制的API (最常用的是HTTP)。多个微服务组成应用程序。

下面介绍如何调用创建微服务静态信息API注册微服务my-provider后,先调用注册微服务实例API注册微服务my-provider的实例,再次调用创建微服务静态信息API注册微服务微服务my-consumer,然后调用按条件查询微服务实例API,my-consumer带着自身的serviceId去服务中心查询my-provider的实例信息。

以上微服务名称均为示例。

API的调用方法请参见如何调用API

前提条件

  • 获取IAM的Token,调用获取用户Token,并将token值设置为环境变量:export Token={token}。
  • 获取微服务引擎的终端节点,请参考地区和终端节点,以下示例中以{cse_endpoint}代替。

操作步骤

  1. 调用创建微服务静态信息API注册微服务my-provider,请求示例如下:

    curl -k -H "x-domain-name:default" -H "x-auth-token:$Token" -XPOST "https://{cse_endpoint}/v4/default/registry/microservices" -d '{
        "service": {
            "serviceName": "my-provider",
            "appId": "default",
            "version": "1.0.0",
            "description": "test",
            "level": "MIDDLE",
            "status": "UP"
        }
    }'

    返回结果:

    {"serviceId":"918282e8562dc5fdc9a8dcd4d1baabb492190aa4"}

    记录加粗显示的serviceId值,用于替换后续示例中的{providerServiceId}。

  2. 调用注册微服务实例API注册微服务my-provider的实例。

    实例有效期1小时,到期自动下线。假设provider实例监听的地址为127.0.0.1:8080,请求示例如下:

    curl -k -H "x-domain-name:default" -H "x-auth-token:$Token" -XPOST "https://{cse_endpoint}/v4/default/registry/microservices/{providerServiceId}/instances" -d '{
        "instance": {
            "hostName": "test",
            "endpoints": [
                "rest:127.0.0.1:8080"
            ],
            "status": "UP",
            "healthCheck": {
                "mode": "push",
                "interval": 900,
                "times": 3
            }
        }
    }'

    返回结果:

    {"instanceId":"2be605a095ed11eabcbe0255ac100fa3"}

  3. 调用创建微服务静态信息API注册微服务my-consumer,请求示例如下:

    curl -k -H "x-domain-name:default" -H "x-auth-token:$Token" -XPOST "https://{cse_endpoint}/v4/default/registry/microservices" -d '{
        "service": {
            "serviceName": "my-consumer",
            "appId": "default",
            "version": "1.0.0",
            "description": "test",
            "level": "MIDDLE",
            "status": "UP"
        }
    }'

    返回结果:

    {"serviceId":"9db248934c31fc754d6e922b48ede4a5c004d3c1"}

    记录加粗显示的serviceId值,用于替换后续示例中的{consumerServiceId}代替。

  4. 调用按条件查询微服务实例接口,my-consumer带着自身的serviceId去服务中心查询my-provider的实例信息。请求示例如下:

    curl -k -H "x-domain-name:default" -H "x-auth-token:$Token" -H "X-ConsumerId:{consumerServiceId}" -XGET "https://{cse_endpoint}/v4/default/registry/instances?appId=default&serviceName=my-provider&version=0.0.0%2B"

    返回结果:

    {
        "instances": [
            {
                "instanceId": "2be605a095ed11eabcbe0255ac100fa3", 
                "serviceId": "918282e8562dc5fdc9a8dcd4d1baabb492190aa4", 
                "endpoints": [
                    "rest:127.0.0.1:8080"
                ], 
                "hostName": "test", 
                "status": "UP", 
                "healthCheck": {
                    "mode": "push", 
                    "interval": 150, 
                    "times": 3
                }, 
                "timestamp": "1589465646", 
                "modTimestamp": "1589465646", 
                "version": "1.0.0"
            }
        ]
    } 

    在实际业务中,my-consumer可从实例查询结果中的"endpoint"字段获取my-provider实例的地址,发起业务调用。

    您还可以进入ServiceStage控制台,单击微服务引擎的“查看控制台”,在“服务目录”查看服务注册信息。