为了简化起见,绝大部分的例子都是展示了一个 consumer 调用一个 provider 的场景。也就是说,这个调用链路上只有两个节点。本例展示了大于两个节点的最小链路单元 —— 三节点,dubbo-go 是如何配置和工作的。在这个例子中,由三部分组成:
frontend -> middle -> backend
代码
type DogService struct { GetId func() (int, error) GetName func() (string, error) Yell func() (string, error) } func (d *DogService) Reference() string { return "DogService" } type TigerService struct { GetId func() (int, error) GetName func() (string, error) Yell func() (string, error) } func (t *TigerService) Reference() string { return "TigerService" } func init() { dog := new(DogService) config.SetConsumerService(dog) tiger := new(TigerService) config.SetConsumerService(tiger) config.SetProviderService(&ChineseService{ dog: dog, tiger: tiger, }) }
配置
# reference config references: "CatService": registry: "demoZk" protocol: "dubbo" interface: "org.apache.dubbo.demo.CatService" "DogService": registry: "demoZk" protocol: "dubbo" interface: "org.apache.dubbo.demo.DogService" # service config services: "ChineseService": registry: "demoZk" protocol: "dubbo" interface: "org.apache.dubbo.demo.ChineseService" "AmericanService": registry: "demoZk" protocol: "dubbo" interface: "org.apache.dubbo.demo.AmericanService"
请参阅根目录中的 HOWTO.md 来运行本例。