Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
833f1d49
M
milvus
项目概览
milvus
/
milvus
大约 1 年 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
833f1d49
编写于
2月 09, 2021
作者:
G
groot
提交者:
yefu.chen
2月 09, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Let singlenode use rocksmq
Signed-off-by:
N
groot
<
yihua.mo@zilliz.com
>
上级
e2d8358c
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
70 addition
and
21 deletion
+70
-21
cmd/distributed/roles/roles.go
cmd/distributed/roles/roles.go
+3
-0
cmd/singlenode/main.go
cmd/singlenode/main.go
+1
-1
internal/kv/rocksdb/rocksdb_kv.go
internal/kv/rocksdb/rocksdb_kv.go
+13
-0
internal/msgstream/rmqms/factory.go
internal/msgstream/rmqms/factory.go
+3
-0
internal/msgstream/rmqms/rmq_msgstream.go
internal/msgstream/rmqms/rmq_msgstream.go
+12
-14
internal/querynode/query_node.go
internal/querynode/query_node.go
+8
-4
internal/util/rocksmq/global_rmq.go
internal/util/rocksmq/global_rmq.go
+30
-2
未找到文件。
cmd/distributed/roles/roles.go
浏览文件 @
833f1d49
...
...
@@ -12,6 +12,7 @@ import (
"github.com/zilliztech/milvus-distributed/internal/msgstream"
"github.com/zilliztech/milvus-distributed/internal/msgstream/pulsarms"
"github.com/zilliztech/milvus-distributed/internal/msgstream/rmqms"
"github.com/zilliztech/milvus-distributed/internal/util/rocksmq"
)
func
newMsgFactory
(
localMsg
bool
)
msgstream
.
Factory
{
...
...
@@ -276,4 +277,6 @@ func (mr *MilvusRoles) Run(localMsg bool) {
}
log
.
Printf
(
"exit msg stream service"
)
}
defer
rocksmq
.
CloseRocksMQ
()
}
cmd/singlenode/main.go
浏览文件 @
833f1d49
...
...
@@ -20,5 +20,5 @@ func initRoles(roles *roles.MilvusRoles) {
func
main
()
{
var
roles
roles
.
MilvusRoles
initRoles
(
&
roles
)
roles
.
Run
(
fals
e
)
roles
.
Run
(
tru
e
)
}
internal/kv/rocksdb/rocksdb_kv.go
浏览文件 @
833f1d49
...
...
@@ -146,3 +146,16 @@ func (kv *RocksdbKV) MultiRemove(keys []string) error {
err
:=
kv
.
db
.
Write
(
kv
.
writeOptions
,
writeBatch
)
return
err
}
func
(
kv
*
RocksdbKV
)
MultiSaveAndRemove
(
saves
map
[
string
]
string
,
removals
[]
string
)
error
{
writeBatch
:=
gorocksdb
.
NewWriteBatch
()
defer
writeBatch
.
Clear
()
for
k
,
v
:=
range
saves
{
writeBatch
.
Put
([]
byte
(
k
),
[]
byte
(
v
))
}
for
_
,
key
:=
range
removals
{
writeBatch
.
Delete
([]
byte
(
key
))
}
err
:=
kv
.
db
.
Write
(
kv
.
writeOptions
,
writeBatch
)
return
err
}
internal/msgstream/rmqms/factory.go
浏览文件 @
833f1d49
...
...
@@ -6,6 +6,7 @@ import (
"github.com/mitchellh/mapstructure"
"github.com/zilliztech/milvus-distributed/internal/msgstream"
"github.com/zilliztech/milvus-distributed/internal/util/rocksmq"
)
type
Factory
struct
{
...
...
@@ -37,5 +38,7 @@ func NewFactory() msgstream.Factory {
ReceiveBufSize
:
64
,
RmqBufSize
:
64
,
}
rocksmq
.
InitRocksMQ
(
"/tmp/milvus_rdb"
)
return
f
}
internal/msgstream/rmqms/rmq_msgstream.go
浏览文件 @
833f1d49
...
...
@@ -62,6 +62,7 @@ func newRmqMsgStream(ctx context.Context, receiveBufSize int64, rmqBufSize int64
rmqBufSize
:
rmqBufSize
,
consumerChannels
:
consumerChannels
,
consumerReflects
:
consumerReflects
,
consumerLock
:
&
sync
.
Mutex
{},
}
return
stream
,
nil
...
...
@@ -99,28 +100,25 @@ func (ms *RmqMsgStream) SetRepackFunc(repackFunc RepackFunc) {
func
(
ms
*
RmqMsgStream
)
AsProducer
(
channels
[]
string
)
{
for
_
,
channel
:=
range
channels
{
// TODO(yhz): Here may allow to create an existing channel
if
err
:=
rocksmq
.
Rmq
.
CreateChannel
(
channel
);
err
!=
nil
{
errMsg
:=
"Failed to create producer "
+
channel
+
", error = "
+
err
.
Error
()
panic
(
errMsg
)
err
:=
rocksmq
.
Rmq
.
CreateChannel
(
channel
)
if
err
==
nil
{
ms
.
producers
=
append
(
ms
.
producers
,
channel
)
}
ms
.
producers
=
append
(
ms
.
producers
,
channel
)
}
}
func
(
ms
*
RmqMsgStream
)
AsConsumer
(
channels
[]
string
,
groupName
string
)
{
for
_
,
channelName
:=
range
channels
{
consumer
,
err
:=
rocksmq
.
Rmq
.
CreateConsumerGroup
(
groupName
,
channelName
)
if
err
!=
nil
{
panic
(
err
.
Error
())
if
err
==
nil
{
consumer
.
MsgNum
=
make
(
chan
int
,
ms
.
rmqBufSize
)
ms
.
consumers
=
append
(
ms
.
consumers
,
*
consumer
)
ms
.
consumerChannels
=
append
(
ms
.
consumerChannels
,
channelName
)
ms
.
consumerReflects
=
append
(
ms
.
consumerReflects
,
reflect
.
SelectCase
{
Dir
:
reflect
.
SelectRecv
,
Chan
:
reflect
.
ValueOf
(
consumer
.
MsgNum
),
})
}
consumer
.
MsgNum
=
make
(
chan
int
,
ms
.
rmqBufSize
)
ms
.
consumers
=
append
(
ms
.
consumers
,
*
consumer
)
ms
.
consumerChannels
=
append
(
ms
.
consumerChannels
,
channelName
)
ms
.
consumerReflects
=
append
(
ms
.
consumerReflects
,
reflect
.
SelectCase
{
Dir
:
reflect
.
SelectRecv
,
Chan
:
reflect
.
ValueOf
(
consumer
.
MsgNum
),
})
}
}
...
...
internal/querynode/query_node.go
浏览文件 @
833f1d49
...
...
@@ -16,12 +16,13 @@ import (
"context"
"errors"
"fmt"
"github.com/zilliztech/milvus-distributed/internal/msgstream"
"io"
"log"
"sync/atomic"
"github.com/zilliztech/milvus-distributed/internal/msgstream"
"github.com/zilliztech/milvus-distributed/internal/msgstream/pulsarms"
"github.com/zilliztech/milvus-distributed/internal/msgstream/rmqms"
"github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
"github.com/zilliztech/milvus-distributed/internal/proto/internalpb2"
queryPb
"github.com/zilliztech/milvus-distributed/internal/proto/querypb"
...
...
@@ -371,8 +372,11 @@ func (node *QueryNode) WatchDmChannels(in *queryPb.WatchDmChannelsRequest) (*com
return
status
,
errors
.
New
(
errMsg
)
}
fgDMMsgStream
,
ok
:=
node
.
dataSyncService
.
dmStream
.
(
*
pulsarms
.
PulsarTtMsgStream
)
if
!
ok
{
switch
t
:=
node
.
dataSyncService
.
dmStream
.
(
type
)
{
case
*
pulsarms
.
PulsarTtMsgStream
:
case
*
rmqms
.
RmqTtMsgStream
:
default
:
_
=
t
errMsg
:=
"type assertion failed for dm message stream"
status
:=
&
commonpb
.
Status
{
ErrorCode
:
commonpb
.
ErrorCode_UNEXPECTED_ERROR
,
...
...
@@ -385,7 +389,7 @@ func (node *QueryNode) WatchDmChannels(in *queryPb.WatchDmChannelsRequest) (*com
// add request channel
consumeChannels
:=
in
.
ChannelIDs
consumeSubName
:=
Params
.
MsgChannelSubName
fgDMMsg
Stream
.
AsConsumer
(
consumeChannels
,
consumeSubName
)
node
.
dataSyncService
.
dm
Stream
.
AsConsumer
(
consumeChannels
,
consumeSubName
)
status
:=
&
commonpb
.
Status
{
ErrorCode
:
commonpb
.
ErrorCode_SUCCESS
,
...
...
internal/util/rocksmq/global_rmq.go
浏览文件 @
833f1d49
package
rocksmq
import
(
"sync"
rocksdbkv
"github.com/zilliztech/milvus-distributed/internal/kv/rocksdb"
)
var
Rmq
*
RocksMQ
var
once
sync
.
Once
type
Consumer
struct
{
GroupName
string
...
...
@@ -14,6 +21,27 @@ func InitRmq(rocksdbName string, idAllocator IDAllocator) error {
return
err
}
func
GetRmq
()
*
RocksMQ
{
return
Rmq
func
InitRocksMQ
(
rocksdbName
string
)
error
{
var
err
error
once
.
Do
(
func
()
{
kvname
:=
rocksdbName
+
"_kv"
rocksdbKV
,
err
:=
rocksdbkv
.
NewRocksdbKV
(
kvname
)
if
err
!=
nil
{
panic
(
err
)
}
idAllocator
:=
NewGlobalIDAllocator
(
"rmq_id"
,
rocksdbKV
)
_
=
idAllocator
.
Initialize
()
Rmq
,
err
=
NewRocksMQ
(
rocksdbName
,
idAllocator
)
if
err
!=
nil
{
panic
(
err
)
}
})
return
err
}
func
CloseRocksMQ
()
{
if
Rmq
!=
nil
&&
Rmq
.
store
!=
nil
{
Rmq
.
store
.
Close
()
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录