forked from MyCATApache/Mycat2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
需求
62 lines (32 loc) · 2.84 KB
/
需求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
在这里提交需求,
格式,需求编号,需求内容,需求目的,提出人的QQ
1.Mycat 2.0 HBT技术解决 多表关联案例
select a.id,a.price,b.username where a.id in (111,222,333,444) and b.id=a.id
解析步骤 :
select a.id,a.price where a.id in (111,222,333,444)——> fetchIntoMapStream(sql,new MapMeta(id,row))
join(b.id=a.id) ——>select b.id,b.username from b where id matchs mapA.key
join("select b.id,b.username from b", mapA);
Mycat 2.0 HBT 代码:
//fetchIntoMapStream(sql,new MapMeta(id,row)).forBatch(100,mapBachRec->{ });
String sql="select a.id,a.price where a.id in (111,222,333,444)";
String sql2="select b.id,b.username from b",
engine.streamOf(new FetchIntoRowStream(new SqlMeta(sql,"a"),new RowMeta("tableA")))
.joinAndOut(new SqlMeta(sql2,"b"),new RowMeta("tableB"),new JoinMeta("tableA.id","tableB.id",Engnine.MEM,100), new ResultSetMeta({"tableA.id,tableA.price,tableB.username"}),(arow,brow)->{out.write(arow,brow[1]});
实际上还有一些细节考虑:
String cond=sql.lastIndexOf("where");
RouteConditionList routeList=new RouteConditionList();
routeList.add(engine.createRouteCondition(Engine.AND,Engine.IN,"aa,bb,cc"));
routeList.add(engine.createRouteCondition(Engine.OR,Engine.GREATE,"aa,bb,cc"));
String[] partions=engine.calcSQLRoute("tableA",routeList);
上述了路由信息可能需要人工指定,放入 SqlMeta, new(sql,"a",routeList)
2.Mycat Exchanger
负责把实现JDBC方式连接Oracle,SQL Server,以及Redis。MongoDB等后端存储的,模拟成标准的MySQL Server,对接Mycat。这样 Mycat就统一支持各种数据库,并且核心还稳定简单。
3.管理命令
增加管理命令,mycat fetch config,返回三列?的表格,文件名称,修改时间,内容(文本),为了Web管理界面调用,展现配置文件内容
以及对应的 mycat update config xxx.conf <文件内容> ,即上传和更新生效某个配置文件,返回一行的Table,optcode ?错误码,以及说明。。。
包括返回集群状态的表格,哪几个节点,谁是Leader。以及是否有Proxy,Proxy的状态,节点上下线,这些都以后要命令行实现,同时给Web使用
所有管理命令都可以被Web调用
4.新特性需求 提出人HanSenJ QQ:[email protected]
增加服务注册与服务发现的分布式管理思路,替换配置文件的定义方式,建立单体服务与注册中心的watch监控同步状态变化机制,以实现服务的自动化管理。
增加中间件服务的资源弹性调度功能,通过上述的watch机制监控单体服务的性能指标作为数据依据,反馈中间件集群的服务调度。
增加故障自动纳管与上层终端用户自动定制集群服务机制,通过提供上层标准化接口协议以及服务自注册机制可实现分布式的自动化服务。