前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MLSQL Cluster 多Engine管理设计

MLSQL Cluster 多Engine管理设计

作者头像
用户2936994
发布2019-04-01 10:56:35
3280
发布2019-04-01 10:56:35
举报
文章被收录于专栏:祝威廉祝威廉

前言

我之前写了篇很简单的去描述了MLSQL Cluster 路由策略。有朋友就问,有没有一个更清晰一点的设计说明。这篇内容就是为这个目标而写的。

场景

脱离场景说设计就是扯淡。所以,MLSQL Cluster适用的场景是是什么呢?

  1. 不同业务线需要不同的MLSQL Engine.
  2. 同一个业务线也可能需要多个MLSQL Engine
  3. 同一个业务可能需要多个MLSQL Engine 做负载均衡或者高可用

这就意味着,企业必然存在着部署多个MLSQL Engine的实例的诉求,并且根据需要,提供不同的组合方式。

设计

要管理多个MLSQL Engine,首先需要把MLSQL Engine信息注册到MLSQL Cluster。

一般而言可以让MLSQL Engine启动时注册自己,然后MLSQL Cluster 可以读取这些MLSQL Engine注册的信息。目前MLSQL Engine支持注册到ZK, 可以在启动时通过参数:

代码语言:javascript
复制
-streaming.zk.conf_root_dir [zk path]
-streaming.zk.servers  [your zk address]

不过目前MLSQL CLuster 还没有实现去读取ZK。 MLSQL 初期采用了一个侵入式更小更灵活的办法,就是用户自己填写MLSQL Engine信息。

MLSQL Cluster 提供了一套接口管理MLSQL Engine信息。大家可以通过http://127.0.0.1:8080/openapi/ui/spec/ 查看该接口信息。

前面我们讲到的是如何注册MLSQL Engine到MLSQL Cluster,现在,我们假设有A,B 两个业务。A 需要 Engine1,Engine2,Engine3 三个MLSQL Engine, B则需要Engine4,Engine5。 这时候可以使用MLSQL Cluster 接口手动添加这些Engine 实例。然后我们给Engine1-3 打上标签a, 给Egnine4-5 打上标签b.

打开http://127.0.0.1:8080/openapi/ui/spec/,然后查找 /backend/add 接口:

image.png

看到有三个参数,所以比如添加Engine1的时候,可以这么做:

代码语言:javascript
复制
curl -XPOST "http://127.0.0.1:8080/backend/add" -d '
 url=127....9002 
 &name=Engine1
 &tag=a
'

其他类似。

接着A业务就可以的接口就可以调用Cluster了。怎么调用呢? 我们查找下 /run/script

image.png

该接口参数特别多,但是关键的其实就是sql和tags和proxyStrategy。 当业务A请求时,tags需要设置为a,这样MLSQL Cluster 就会按默认的proxyStrategy 策略对Engine1-3进行负载均衡,而不会去使用Engine4-5。

MLSQL Console 是如何对接MLSQL Cluster?

在 team/cluster 页面,我们看MSLQL Console 是如何添加Backend的:

image.png

在MLSQL Console里,tag会被自动生成,生成规则为 teamName_roleName。 也就是说,你添加一个backend的时候,必须选择将这个backend添加到一个Team里,然后一个或者多个Role下。

接着在你使用的时候,系统必须确定当前你是在什么team的什么role,这样MLSQL Cluster才能判断该使用哪些Engine.

image.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 场景
  • 设计
  • MLSQL Console 是如何对接MLSQL Cluster?
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档