Merge pull request #1 from pantianying/master

adapt the 1.4.0 dubbo-go version
tree: 44d18b12ab47e73d8b4824f57d0feee003746daf
  1. .github/
  2. .idea/
  3. common/
  4. conf/
  5. dubbo/
  6. service/
  7. .gitignore
  8. .travis.yml
  9. go.mod
  10. go.sum
  11. main.go
  12. README.md
  13. start.sh
README.md

Build Status

instructions

The gateway can support calling Java Dubbo cluster and golang Dubbo cluster

You can use ‘go build’ and ‘./start.sh’ to start gateway. then,you can do http request to you dubbo interface.

HTTP request format when do not have metadata center:

Group and version is the mapping data in Dubbo service.

{application Name}/​{Interface name}?version={version}&group={group}&method={method}

http POST body:

{
    "paramTypes" : ["org.apache.dubbo.demo.model.User"],
    "paramValues": [
        {
            "id": 23,
            "username": "testUser"
        }
    ]
}

HTTP request format when have metadata center:

{application Name}/​{Interface name}?version={version}&group={group}&method={method}
{
    "paramValues": [
        {
            "id": 23,
            "username": "testUser"
        }
    ]
}

服务端配置元数据中心:

添加依赖

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-metadata-report-redis</artifactId>
</dependency>

在provider和consumer应用中配置MetadataReportConfig

@Bean
public MetadataReportConfig metadataReportConfig() {
    MetadataReportConfig metadataReportConfig = new MetadataReportConfig();
    metadataReportConfig.setAddress("redis://localhost:6379");
    return metadataReportConfig;
}

启动provider,可以在redis中发现多了一个key

org.apache.dubbo.demo.DemoService:provider:dubbo-demo-annotation-provider.metaData
{
    "parameters": {
        "side": "provider",
        "release": "",
        "methods": "sayHello",
        "deprecated": "false",
        "dubbo": "2.0.2",
        "default.dynamic": "false",
        "interface": "org.apache.dubbo.demo.DemoService",
        "generic": "false",
        "default.deprecated": "false",
        "application": "dubbo-demo-annotation-provider",
        "default.register": "true",
        "dynamic": "false",
        "bean.name": "providers:dubbo:org.apache.dubbo.demo.DemoService",
        "register": "true",
        "anyhost": "true"
    },
    "canonicalName": "org.apache.dubbo.demo.DemoService",
    "codeSource": "file:/D:/Workspace/Dubbo/dubbo-demo/dubbo-demo-interface/target/classes/",
    "methods": [
        {
            "name": "sayHello",
            "parameterTypes": [
                "java.lang.String"
            ],
            "returnType": "java.lang.String"
        }
    ],
    "types": [
        {
            "type": "byte"
        },
        {
            "type": "java.lang.String",
            "properties": {
                "coder": {
                    "type": "byte"
                },
                "value": {
                    "type": "byte[]"
                },
                "hash": {
                    "type": "int"
                }
            }
        },
        {
            "type": "int"
        }
    ]
}