Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-WIC-Cnf
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
3
Issues
3
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
CommunityXG
OpenXG-WIC-Cnf
Commits
e9f0b5f2
Commit
e9f0b5f2
authored
Jun 16, 2020
by
joliu
Committed by
Gitee
Jun 16, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'merge_2020_06_16' of gitee.com:prowo_admin/bishe into newWeiXing
parents
23da4682
cc21f268
Pipeline
#101
failed with stages
Changes
14
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
515 additions
and
9 deletions
+515
-9
LICENSE
LICENSE
+201
-0
README.md
README.md
+14
-0
bishe-case-dis/pom.xml
bishe-case-dis/pom.xml
+1
-1
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/config/ClientProperties.java
...ava/top/ninwoo/bishe/starter/config/ClientProperties.java
+1
-0
bishe-cloud-center/src/main/resources/application.yml
bishe-cloud-center/src/main/resources/application.yml
+2
-2
bishe-common-api/src/main/java/top/ninwoo/common/entity/ContainerDescription.java
...n/java/top/ninwoo/common/entity/ContainerDescription.java
+1
-0
bishe-edge-center/src/main/resources/application.yaml
bishe-edge-center/src/main/resources/application.yaml
+3
-1
bishe-test/src/main/resources/application.properties
bishe-test/src/main/resources/application.properties
+1
-1
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
+2
-1
bishe-test/src/test/java/top/ninwoo/YmwangDbcTests.java
bishe-test/src/test/java/top/ninwoo/YmwangDbcTests.java
+139
-0
bishe-test/src/test/java/top/ninwoo/YmwangDfsTests.java
bishe-test/src/test/java/top/ninwoo/YmwangDfsTests.java
+141
-0
bishe-utils/src/main/java/top/ninwoo/utils/service/impl/DockerServiceImpl.java
...java/top/ninwoo/utils/service/impl/DockerServiceImpl.java
+1
-1
bishe-utils/src/main/java/top/ninwoo/utils/util/impl/DockerUtilsImpl.java
...main/java/top/ninwoo/utils/util/impl/DockerUtilsImpl.java
+7
-1
pom.xml
pom.xml
+1
-1
No files found.
LICENSE
0 → 100644
View file @
e9f0b5f2
This diff is collapsed.
Click to expand it.
README.md
View file @
e9f0b5f2
# 项目描述
基于边缘计算场景的计算和网络融合平台
基于Docker和Open vSwitch开发,可用于构建分布式边缘计算、网络环境仿真等场景。
## 功能概览
*
网络编排
*
网络自动变形
*
函数化寻址
*
逻辑拓扑规划
*
计算资源管理
*
容器动态扩缩容
*
容器计算和网络应用快速构建
## 开发人员简介
*
谢建斌
*
王一鸣
...
...
bishe-case-dis/pom.xml
View file @
e9f0b5f2
...
...
@@ -36,7 +36,7 @@
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-shade-plugin
</artifactId>
<version>
1.2.1
</version>
<version>
3.2.3
</version>
<executions>
<execution>
<phase>
package
</phase>
...
...
bishe-client-starter/src/main/java/top/ninwoo/bishe/starter/config/ClientProperties.java
View file @
e9f0b5f2
...
...
@@ -9,5 +9,6 @@ public class ClientProperties {
private
String
zookeeperUrl
=
"zookeeper://127.0.0.1:2181"
;
private
String
cloudUrl
=
"127.0.0.1:9300"
;
private
String
appName
=
"default"
;
}
bishe-cloud-center/src/main/resources/application.yml
View file @
e9f0b5f2
...
...
@@ -2,10 +2,10 @@ server:
port
:
9091
zookeeper
:
url
:
1
27.0.0.1
:2181
url
:
1
92.168.31.156
:2181
bs
:
cloudcenter
:
name
:
my-bs-cloud-center
ipservice
:
url
:
127.0.0.1:23333
\ No newline at end of file
url
:
192.168.31.156:23333
\ No newline at end of file
bishe-common-api/src/main/java/top/ninwoo/common/entity/ContainerDescription.java
View file @
e9f0b5f2
...
...
@@ -11,6 +11,7 @@ import lombok.Data;
public
class
ContainerDescription
{
private
String
mode
;
private
int
replicas
;
// dockerContainer模板
private
DockerContainer
dockerContainer
;
...
...
bishe-edge-center/src/main/resources/application.yaml
View file @
e9f0b5f2
...
...
@@ -14,6 +14,8 @@ mybatis:
map-underscore-to-camel-case
:
true
mapper-locations
:
classpath:mapping/*.xml
debug
:
false
#边缘节点的端口
server
:
port
:
8081
...
...
@@ -22,7 +24,7 @@ bs:
name
:
my-bs-cloud-center
edgenode
:
name
:
random
ip-prefix
:
192
ip-prefix
:
192
.168.31
ipservice
:
ip
:
192.168.31.238:23333
sdn-controller
:
...
...
bishe-test/src/main/resources/application.properties
View file @
e9f0b5f2
bishe.app.app-name
=
joliu
bishe.app.cloud-url
=
1
27.0.0.1:9091
bishe.app.cloud-url
=
1
92.168.31.156:9090
spring.influx.url
=
http://192.168.0.108:8086
spring.influx.user
=
admin
...
...
bishe-test/src/test/java/top/ninwoo/BisheMultiNodeTests.java
View file @
e9f0b5f2
...
...
@@ -32,7 +32,7 @@ public class BisheMultiNodeTests {
@Test
public
void
testInFluxDB
()
{
Point
.
Builder
builder
=
Point
.
measurement
(
"monitor"
);
Point
.
Builder
builder
=
Point
.
measurement
(
"monitor"
);
//这是检测功能
System
.
out
.
println
(
System
.
currentTimeMillis
());
builder
.
addField
(
"rate"
,
1221
f
)
...
...
@@ -60,6 +60,7 @@ public class BisheMultiNodeTests {
container
.
setName
(
"APP1"
);
container
.
setCommand
(
"sh"
);
container
.
setImage
(
"joliu/networktest"
);
//container.setImage("dfs_transfer_client");
containerDescription
.
setDockerContainer
(
container
);
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
...
...
bishe-test/src/test/java/top/ninwoo/YmwangDbcTests.java
0 → 100644
View file @
e9f0b5f2
package
top.ninwoo
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
top.ninwoo.bishe.starter.entity.ContainerMonitor
;
import
top.ninwoo.bishe.starter.service.ClusterService
;
import
top.ninwoo.bishe.starter.service.NetworkService
;
import
top.ninwoo.client.BisheTestMain
;
import
top.ninwoo.common.entity.*
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
BisheTestMain
.
class
)
public
class
YmwangDbcTests
{
/*分散计算业务的测试*/
@Autowired
private
ClusterService
clusterService
;
@Resource
private
NetworkService
networkService
;
@Test
public
void
testSendSeparateConfig
()
{
ArrayList
<
SeparatedClusterConfig
>
clusterConfigs
=
new
ArrayList
<>();
SeparatedClusterConfig
separatedClusterConfig
=
new
SeparatedClusterConfig
();
// TODO: 这个ID应该是从借口获取的
separatedClusterConfig
.
setEdgeNodeId
(
"192.168.31.198:8881"
);
//边缘节点IP+端口号
ClusterConfig
clusterConfigCom
=
new
ClusterConfig
();
clusterConfigCom
.
setId
(
11113
l
);
clusterConfigCom
.
setOwner
(
"joliu"
);
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
/*通过镜像"ymwang/dfs_transfer_client"启动一个名为client的容器,来作为文件的收发端(图片的切割、合并)*/
ContainerDescription
containerDescriptionClient
=
new
ContainerDescription
();
containerDescriptionClient
.
setMode
(
"normal"
);
containerDescriptionClient
.
setReplicas
(
1
);
DockerContainer
container
=
new
DockerContainer
();
container
.
setName
(
"dbc_client"
);
//创建一个client容器
container
.
setCommand
(
"bash"
);
container
.
setImage
(
"dbc_client"
);
container
.
setPorts
(
"8999"
);
//指定容器端口
containerDescriptionClient
.
setDockerContainer
(
container
);
cds
.
add
(
containerDescriptionClient
);
//将client容器添加到list集合中
/*通过镜像"ymwang/dfs_transfer_server"启动一个名为server1的容器,用于存储图片切片*/
ContainerDescription
containerDescriptionServer1
=
new
ContainerDescription
();
containerDescriptionServer1
.
setMode
(
"normal"
);
containerDescriptionServer1
.
setReplicas
(
20
);
DockerContainer
containerServer1
=
new
DockerContainer
();
containerServer1
.
setName
(
"dbc_server"
);
//创建一个server1容器
containerServer1
.
setCommand
(
"sh"
);
containerServer1
.
setImage
(
"dbc_server"
);
containerDescriptionServer1
.
setDockerContainer
(
containerServer1
);
cds
.
add
(
containerDescriptionServer1
);
//将server1容器添加到list集合中
clusterConfigCom
.
setDockers
(
cds
);
NetworkTopology
topo
=
new
NetworkTopology
();
//topo.setAppNames(new String[]{"Run", "APP", "br:ovs1"});
topo
.
setAppNames
(
new
String
[]{
"dbc_client"
,
"dbc_server"
,
"br:ovs1"
});
// 这个参数好像没啥用
topo
.
setTopologyId
(
11
);
topo
.
setTopology
(
new
int
[][]{{
0
,
0
,
0
},{
0
,
0
,
0
},{
1
,
1
,
0
}});
clusterConfigCom
.
setTopology
(
topo
);
separatedClusterConfig
.
setClusterConfig
(
clusterConfigCom
);
clusterConfigs
.
add
(
separatedClusterConfig
);
clusterService
.
sendClusterConfigToEdgeNode
(
clusterConfigs
);
}
//测试容器ip
@Test
public
void
getIpListByAppNameTest
()
{
List
<
String
>
ipList
=
networkService
.
getIpListByAppName
(
11113L
,
"dbc_server"
);
System
.
out
.
println
(
ipList
);
}
@Test
public
void
getIpList
()
{
List
<
String
>
ipListS
=
networkService
.
getIpListByAppName
(
11113L
,
"dbc_server"
);
String
[]
ipList
=
new
String
[
ipListS
.
size
()];
for
(
int
i
=
0
;
i
<
ipListS
.
size
();
i
++)
{
if
(!
ipListS
.
isEmpty
()){
String
ip_tmp
=
ipListS
.
get
(
i
);
String
[]
split_list
=
ip_tmp
.
split
(
"/"
);
ipList
[
i
]
=
split_list
[
0
]+
":8082"
;
}
}
for
(
int
j
=
0
;
j
<
ipList
.
length
;
j
++)
{
System
.
out
.
println
(
ipList
[
j
]);
}
}
@Test
public
void
removeClusterFromEdgeNodeTest
()
{
clusterService
.
removeClusterFromEdgeNode
(
11113L
);
}
@Test
public
void
getLogicalNetworkTopologyTest
()
{
NetworkTopology
logicalNetworkTopology
=
networkService
.
getLogicalNetworkTopology
(
11113L
);
System
.
out
.
println
(
logicalNetworkTopology
);
}
@Test
public
void
enableNetworkMonitorTest
()
throws
InterruptedException
{
String
res
=
networkService
.
enableNetworkMonitor
(
11112L
,
"server"
);
System
.
out
.
println
(
res
);
}
@Test
public
void
cancelNetworkMonitorTest
()
{
String
run
=
networkService
.
cancelNetworkMonitor
(
11112L
,
"server"
);
System
.
out
.
println
(
run
);
}
@Test
public
void
getNetworkMonitorTest
()
throws
InterruptedException
{
List
<
ContainerMonitor
>
run
=
networkService
.
getContainerMonitors
(
11112L
,
"Run"
);
int
i
=
0
;
while
(
i
<
10
)
{
run
.
forEach
(
c
->
{
System
.
out
.
println
(
c
.
getContainerInfo
());
});
Thread
.
sleep
(
500
);
i
++;
}
}
}
bishe-test/src/test/java/top/ninwoo/YmwangDfsTests.java
0 → 100644
View file @
e9f0b5f2
package
top.ninwoo
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
top.ninwoo.bishe.starter.entity.ContainerMonitor
;
import
top.ninwoo.bishe.starter.service.ClusterService
;
import
top.ninwoo.bishe.starter.service.NetworkService
;
import
top.ninwoo.client.BisheTestMain
;
import
top.ninwoo.common.entity.*
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
BisheTestMain
.
class
)
public
class
YmwangDfsTests
{
@Autowired
private
ClusterService
clusterService
;
@Resource
private
NetworkService
networkService
;
@Test
public
void
testSendSeparateConfig
()
{
ArrayList
<
SeparatedClusterConfig
>
clusterConfigs
=
new
ArrayList
<>();
SeparatedClusterConfig
separatedClusterConfig
=
new
SeparatedClusterConfig
();
// TODO: 这个ID应该是从借口获取的
separatedClusterConfig
.
setEdgeNodeId
(
"192.168.31.198:8881"
);
ClusterConfig
clusterConfigStore
=
new
ClusterConfig
();
clusterConfigStore
.
setId
(
11112
l
);
clusterConfigStore
.
setOwner
(
"joliu"
);
List
<
ContainerDescription
>
cds
=
new
ArrayList
<>();
/*通过镜像"ymwang/dfs_transfer_client"启动一个名为client的容器,来作为文件的收发端(图片的切割、合并)*/
ContainerDescription
containerDescriptionClient
=
new
ContainerDescription
();
containerDescriptionClient
.
setMode
(
"normal"
);
containerDescriptionClient
.
setReplicas
(
1
);
DockerContainer
container
=
new
DockerContainer
();
container
.
setName
(
"dfs_client"
);
//创建一个client容器
container
.
setCommand
(
"bash"
);
container
.
setImage
(
"dfs_client"
);
container
.
setPorts
(
"8099"
);
//指定容器端口
containerDescriptionClient
.
setDockerContainer
(
container
);
cds
.
add
(
containerDescriptionClient
);
//将client容器添加到list集合中
/*通过镜像"ymwang/dfs_transfer_server"启动一个名为server1的容器,用于存储图片切片*/
ContainerDescription
containerDescriptionServer1
=
new
ContainerDescription
();
containerDescriptionServer1
.
setMode
(
"normal"
);
containerDescriptionServer1
.
setReplicas
(
20
);
DockerContainer
containerServer1
=
new
DockerContainer
();
containerServer1
.
setName
(
"dfs_server"
);
//创建一个server1容器
containerServer1
.
setCommand
(
"sh"
);
containerServer1
.
setImage
(
"dfs_server"
);
containerDescriptionServer1
.
setDockerContainer
(
containerServer1
);
cds
.
add
(
containerDescriptionServer1
);
//将server1容器添加到list集合中
clusterConfigStore
.
setDockers
(
cds
);
NetworkTopology
topo
=
new
NetworkTopology
();
//topo.setAppNames(new String[]{"Run", "APP", "br:ovs1"});
topo
.
setAppNames
(
new
String
[]{
"dfs_client"
,
"dfs_server"
,
"br:ovs1"
});
// 这个参数好像没啥用
topo
.
setTopologyId
(
11
);
topo
.
setTopology
(
new
int
[][]{{
0
,
0
,
0
},{
0
,
0
,
0
},{
1
,
1
,
0
}});
clusterConfigStore
.
setTopology
(
topo
);
separatedClusterConfig
.
setClusterConfig
(
clusterConfigStore
);
clusterConfigs
.
add
(
separatedClusterConfig
);
clusterService
.
sendClusterConfigToEdgeNode
(
clusterConfigs
);
}
//测试容器ip
@Test
public
void
getIpListByAppNameTest
()
{
List
<
String
>
ipList
=
networkService
.
getIpListByAppName
(
11112L
,
"dfs_server"
);
System
.
out
.
println
(
ipList
);
}
@Test
public
void
getIpList
()
{
List
<
String
>
ipListS
=
networkService
.
getIpListByAppName
(
11112L
,
"dfs_server"
);
String
[]
ipList
=
new
String
[
ipListS
.
size
()];
for
(
int
i
=
0
;
i
<
ipListS
.
size
();
i
++)
{
if
(!
ipListS
.
isEmpty
()){
String
ip_tmp
=
ipListS
.
get
(
i
);
String
[]
split_list
=
ip_tmp
.
split
(
"/"
);
ipList
[
i
]
=
split_list
[
0
];
}
}
for
(
int
j
=
0
;
j
<
ipList
.
length
;
j
++)
{
System
.
out
.
println
(
ipList
[
j
]);
}
}
@Test
public
void
removeClusterFromEdgeNodeTest
()
{
clusterService
.
removeClusterFromEdgeNode
(
11112L
);
}
@Test
public
void
getLogicalNetworkTopologyTest
()
{
NetworkTopology
logicalNetworkTopology
=
networkService
.
getLogicalNetworkTopology
(
11112L
);
System
.
out
.
println
(
logicalNetworkTopology
);
}
@Test
public
void
enableNetworkMonitorTest
()
throws
InterruptedException
{
String
res
=
networkService
.
enableNetworkMonitor
(
11112L
,
"dfs_server"
);
System
.
out
.
println
(
res
);
}
@Test
public
void
cancelNetworkMonitorTest
()
{
String
run
=
networkService
.
cancelNetworkMonitor
(
11112L
,
"dfs_server"
);
System
.
out
.
println
(
run
);
}
@Test
public
void
getNetworkMonitorTest
()
throws
InterruptedException
{
List
<
ContainerMonitor
>
run
=
networkService
.
getContainerMonitors
(
11112L
,
"Run"
);
int
i
=
0
;
while
(
i
<
10
)
{
run
.
forEach
(
c
->
{
System
.
out
.
println
(
c
.
getContainerInfo
());
});
Thread
.
sleep
(
500
);
i
++;
}
}
}
bishe-utils/src/main/java/top/ninwoo/utils/service/impl/DockerServiceImpl.java
View file @
e9f0b5f2
...
...
@@ -64,7 +64,7 @@ public class DockerServiceImpl implements DockerService, InitializingBean {
/**
* 使用系统命令 docker run -itd 在后台启动一个容器,
* 使用这种方式的一个重要
愿意
,是因为我没搞明白docker java启动容器的api到底如何使用
* 使用这种方式的一个重要
原因
,是因为我没搞明白docker java启动容器的api到底如何使用
* @param container 输入一个容器的描述信息
* @return 返回容器启动之后真实的描述信息
*/
...
...
bishe-utils/src/main/java/top/ninwoo/utils/util/impl/DockerUtilsImpl.java
View file @
e9f0b5f2
...
...
@@ -94,7 +94,13 @@ public class DockerUtilsImpl implements DockerUtils {
public
DockerContainer
runDocker
(
DockerContainer
container
)
{
// TODO: 这里启动Docker容器,需要再研究port如何起作用
// TODO: 这里还需要处理name等属性为空的情况
String
cmd
=
"docker run -itd --name "
+
container
.
getName
()
+
" --privileged "
+
container
.
getImage
()
+
" "
+
container
.
getCommand
();
//String cmd = "docker run -itd --name " + container.getName() + " --privileged " + container.getImage() + " " + container.getCommand();
String
cmd
;
if
(
container
.
getPorts
()
==
null
){
cmd
=
"docker run -itd --name "
+
container
.
getName
()
+
" --privileged "
+
container
.
getImage
()
+
" "
+
container
.
getCommand
();
}
else
{
cmd
=
"docker run -itd -p "
+
container
.
getPorts
()+
":"
+
container
.
getPorts
()+
" "
+
"--name "
+
container
.
getName
()
+
" --privileged "
+
container
.
getImage
()
+
" "
+
container
.
getCommand
();
}
String
result
=
linuxCtlUtils
.
runCmd
(
cmd
);
if
(
result
.
contains
(
"Error"
))
{
...
...
pom.xml
View file @
e9f0b5f2
...
...
@@ -26,7 +26,7 @@
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<version>
2.
1.2
.RELEASE
</version>
<version>
2.
2.1
.RELEASE
</version>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment