关于微服务架构图与transfer service
来源:10-1 基于Docker部署服务注册发现中心consul集群

MichaelZENG
2019-11-29
- 如图,在架构图中,download和upload是通过accountservice来验证token的,但是在实际代码中,Authorize是在apigw里面的,是不是有点不匹配?
- 在filestore-server/service/transfer/main.go里面:
func startRPCService() {
service := micro.NewService(
micro.Name("go.micro.service.transfer"),
micro.RegisterTTL(time.Second*10),
micro.RegisterInterval(time.Second*5),
micro.Flags(common.CustomFlags...),
)
service.Init(
micro.Action(func(c *cli.Context) {
mqhost := c.String("mqhost")
if len(mqhost) > 0 {
log.Println("custom mq address: " + mqhost)
mq.UpdateRabbitHost(mqhost)
}
}),
)
/*******************************************/
//为什么要在transfer里面Init dbproxy,有什么讲究吗
/*******************************************/
dbproxy.Init(service)
if err := service.Run(); err != nil {
fmt.Println(err)
}
}
在filestore-server/service/dbproxy/client里面:
func Init(service micro.Service) {
//这里为什么要用transfer创建的service,好像直接一个空的NewService也可以?
//因为只需要Client呀?
dbCli = dbProto.NewDBProxyService("go.micro.service.dbproxy", service.Client())
}
写回答
2回答
-
xiaomo
2019-11-29
同学你好,关于第一个问题,这里的确没有实现完整的逻辑,多谢指出。准确来说,无论是apigw, 还是upload, download这些服务的访问,都是需要经过验证的(除了一些本身不需要安全认证的接口,比如注册)。所以对于apigw,实际也是要通过rpc来访问accountservice来校验访问的有效性。accountservice作为全局的认证中心的角色而存在。已有计划根据同学们的反馈做课程的后续补充,可能会新增一些章节,敬请关注。
00 -
MichaelZENG
提问者
2019-11-29
关于第二个问题,好像按照代码里面的逻辑的话,所有需要操作数据库的function call都是使用的transfer的service.client()呀?好像。。。有点奇怪?
是不是说明UserService, Download, Upload, Transfer用的都是同一个micro,Service客户端来访问dbproxy? 这样不会造成拥堵吗?
042019-11-29
相似问题