Dorado 快速使用指南

优质
小牛编辑
136浏览
2023-12-01

快速使用指南,便于使用者快速了解Dorado的应用,更多详细内容可以阅读Dorado使用说明手册

1. 运行准备

1.1 提前安装:JDK 7+、Maven 3+ 并配置好环境

1.2 下载仓库代码准备Dorado依赖

  git clone https://github.com/Meituan-Dianping/octo-rpc.git octo-rpc

2. 运行(二选一)

以下两种方式选择一种快速运行 dorado

2.1 运行Dorado项目Demo

2.1.1 IDE导入dorado 完整项目

注意:Dorado和Whale(C++框架)在一个仓库,选择dorado目录导入即可

2.1.2 进入derado-demo模块

2.1.3 选择一个demo, 如simple package下

2.1.4 run ThriftProvider main

2.1.5 run ThriftConsumer main

在ThriftConsumer控制台将看到服务端的返回

2.2 独立Project运行

2.2.1 install dorado到本地仓库

切换到dorado目录

cd octo-rpc/dorado

本地install

mvn clean install -Dmaven.test.skip=true

注意:dorado-registry-mns、dorado-trace-cat模块因需要mns和cat的依赖,若构建失败可忽略

  • 默认dorado包未包含需以上模块,若需要使用见源码编译说明

  • dorado-registry-mns是OCTO-NS注册中心的集成模块,若使用请到OCTO-NS获取依赖mns-invoker依赖(需要有OCTO-NS注册服务)

  • dorado-trace-cat是Cat应用监控的集成,若使用请到Cat获取依赖(需要有Cat服务)

2.2.2 创建maven工程

pom.xml添加dorado依赖

<dependency>
    <groupId>com.meituan.octo</groupId>
    <artifactId>dorado</artifactId>
    <version>1.0.0</version>
</dependency>

2.2.3 创建接口类 和 实现类

将接口HelloService.java 和 实现类HelloServiceImpl.java 拷贝到你的工程中,注意包路径。 说明:调用端有接口类就行,服务端需要接口类和实现类。

2.2.4 创建服务端启动类,发布服务

下面的代码通过mock的方式发布实现HelloService接口的服务,注意需要对服务端口号、服务于appkey、服务注册地址、服务接口以及服务实现类进行配置,最后通过init方法发布服务

import com.meituan.dorado.config.service.ProviderConfig;
import com.meituan.dorado.config.service.ServiceConfig;
import com.meituan.dorado.demo.thrift.api.HelloService;
import com.meituan.dorado.demo.thrift.api.HelloServiceImpl;

public class QuickStartServer {
    public static void main(String[] args) {
        ServiceConfig<HelloService.Iface> serviceConfig = new ServiceConfig<>();
        serviceConfig.setServiceInterface(HelloService.class);        // 服务接口
        serviceConfig.setServiceImpl(new HelloServiceImpl());         // 服务实现类

        ProviderConfig providerConfig = new ProviderConfig();
        providerConfig.setAppkey("com.meituan.octo.dorado.server");           // 服务appkey
        providerConfig.setServiceConfig(serviceConfig);                       // 服务接口类
        providerConfig.setRegistry("mock");                                   // 服务注册, mock伪注册中心
        providerConfig.setPort(9001);                                         // 服务端口号
        providerConfig.init();                                                // 启动服务
    }
}

2.2.5 创建调用端启动类,订阅服务,发起调用

下面的代码通过直连方式访问mock发布的服务

import com.meituan.dorado.config.service.ReferenceConfig;
import com.meituan.dorado.demo.thrift.api.HelloService;
import org.apache.thrift.TException;
import org.junit.Assert;

public class QuickStartClient {
    public static void main(String[] args) {
        ReferenceConfig<HelloService.Iface> referenceConfig = new ReferenceConfig<>();
        referenceConfig.setAppkey("com.meituan.octo.dorado.client");           //调用端appkey
        referenceConfig.setRemoteAppkey("com.meituan.octo.dorado.server");     //服务端appkey
        referenceConfig.setServiceInterface(HelloService.class);               //服务接口
        referenceConfig.setRegistry("mock");                                   //服务发现, mock伪注册中心
        referenceConfig.setDirectConnAddress("localhost:9001");                //直连访问

        HelloService.Iface client = referenceConfig.get();
        try {
            String result = client.sayHello("OCTO");
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}