专栏首页祝威廉MLSQL Cluster 多Engine管理设计

MLSQL Cluster 多Engine管理设计

前言

我之前写了篇很简单的去描述了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, 可以在启动时通过参数:

-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的时候,可以这么做:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MLSQL v1.1.6 新特性:用MLSQL脚本查看API/Configuration

    MLSQL有自己的一套doc系统,可以通过标准的MLSQL语句进行获取,可以参看MLSQL-Doc-Slide。

    用户2936994
  • MLSQL Cluster 路由策略

    MLSQL Cluster 具备多MLSQL Engine 实例管理功能,实现负载均衡,多业务切分等等功能。

    用户2936994
  • MLSQL v1.1.7 Release roadmap

    MLSQL v1.1.7 plans to release in Mid Jan 2019, this version will take almost thr...

    用户2936994
  • 用Python对你的微信好友进行一波骚操作

    临近毕业,慢慢的也感伤起来,回想大学这几年,除了技术的成长,最值得庆幸的就是结交了一帮志同道合的好友。后期自己做了公众号,微信好友的数量也越来越多,身边人所扮演...

    统计学家
  • linux(十三)之磁盘分区、创建文件系统、挂载

    前面学习了linux的用户管理 ,感觉是不是linux的多用户多任务的系统感觉十分了解了,但是其实并不然的。你还需要了解更多。接下来给大家分享的是 在vmwar...

    用户1195962
  • 【MySQL】Dockerfile书写简单示例

    前言:在用MySQL镜像启动MySQL服务时,我们经常会遇到时区和字符集问题,本篇文章将以Dockerfile形式重新构建MySQL镜像来彻底解决此问题。

    MySQL技术
  • Python文本挖掘:基于共现提取《釜山行》人物关系

    《釜山行》是一部丧尸灾难片,其人物少、关系简单,非常适合我们学习文本处理。这个项目将介绍共现在关系中的提取,使用python编写代码实现对《釜山行》文本的人物关...

    机器学习AI算法工程
  • 毕马威发布2018年度《全球科技创新报告》

    日前,毕马威发布《2018全球科技创新报告》,报告显示,我们如今正处在一个科技创新爆发的时代,人工智能、机器人和物联网必将会影响全球的商业,那些不主动去抓住未来...

    钱塘数据
  • 翻译 | Thingking in Redux(如果你只了解MVC)

    作者:珂珂(沪江前端开发工程师) 本文原创,转载请注明作者及出处。 原文地址:https://hackernoon.com/thinking-in-red...

    iKcamp
  • Java、模式、美眉、篮球 Java设计模式算法数据结构体育

    1、FACTORY一追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个...

    阿敏总司令

扫码关注云+社区

领取腾讯云代金券