dbproxy

来源:13-1 课程总结之章节重点及技能树温习

skrbug

2019-08-28

xiaomao老师,有点不太明白 DBProxy这个"微服务" 的写法,能稍微解释下流程吗? 看了个一知半解.
我是这样理解的 .

  • client 暴露外部调用
  • proto 作为 client 与 rpc 中间的桥梁(对proto 中的ExecAction 进行了包装)
  • rpc 解析 远程调用,使其能和对应方法形成映射

请求时:
client --> rpc --> mapper --> orm
返回时:箭头反过来

  • main 函数用于注册,起到初始化作用.
  • proto 有点像一种协议,一种规则.

老师我这样理解有问题吗?如果有误的话,麻烦老师帮忙纠正一下吧.

老师还有两个问题需要请教一下

  • 服务注册到注册中心,是怎么注册的呢? 之前有写过java的微服务 Dubbo zookeeper, 我记得当时是各个微服务监听zoomkeeper的端口号,在这里为什么没有感觉到有监听的动作呢? 还是说这就是底层不同的协议造成的?
  • 微服务注册的时候, 可以公网调用其他服务吗?
写回答

1回答

xiaomo

2019-08-29

同学你好,

(1)关于proto, rpc, 以及dbproxy, 大体上描述是没问题的,

准确点来说proto是基于protobuf(二进制传输)协议定义传输数据格式的文件,主要用于service之间的通讯,比如:

微服务apigw -> rpc远程调用(基于protobuf协议) -> dbproxy.

而对于dbproxy内部,首先是main方法了注册了rpc的处理handler, 通过mapper来执行对应的rpc请求,最终的具体的方法会在orm内执行。

(2)当前微服务用了goMicro框架,它支持etcd/consul/k8s等等多种服务注册中心,我们只要在启动的时候指定要连接什么样的注册中心(比如--registry=consul, --registry_address=192.168.1.xx:8500), 框架底层就会默认去执行注册动作,我们并不需要手动实现这些代码。具体可以参考git仓库里的deploy目录下的部署配置文件呢。

(3)不是很理解这个问题,公网调用其他服务,是指调用其他集群或数据中心的微服务?一般是可以的,比如consul他支持多个机房的服务注册到一个center, 那么这个时候一个机房内的微服务是可以调用另一个机房内的微服务的接口的。

0
1
skrbug
谢谢老师,清晰了很多,第一次见这样的写法,有点迷糊
2019-08-30
共1条回复

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程