readme: update

This commit is contained in:
singchia
2024-05-29 19:56:03 +08:00
parent 2daf8d5a05
commit 428cd58308
2 changed files with 41 additions and 28 deletions

View File

@@ -6,15 +6,15 @@ Frontier是一个go开发的开源长连接网关能让微服务直接连通
## 特性
- **RPC** 微服务和边缘节点可以直接Call对方的注册函数,并且在微服务侧支持负载均衡
- **消息** 微服务和边缘节点可以直接Publish对方的topic边缘节点可以Publish到外部消息队列的topic微服务侧topic支持负载均衡
- **多路复用** 微服务可以直接在边缘节点打开一个新流(连接),可以封装例如流读写、拷贝文件、代理等,天堑变通途
- **上线离线控制** 微服务可以注册边缘节点获取ID、上线和下线回调,当边缘节点请求ID、上线或者离线时Frontier会调用这方法
- **API简单** 在项目api目录下分别对边缘和微服务提供了封装好的sdk可以非常简单和轻量的基于这个sdk做开发
- **部署简单** 支持多种部署方式(docker docker-compose helm以及operator)来部署和管理你的Frontier实例或集群
- **RPC** 微服务和边缘可以Call对方的函数(提前注册),并且在微服务侧支持负载均衡
- **消息** 微服务和边缘可以Publish对方的Topic边缘可以Publish到外部MQ的Topic微服务侧支持负载均衡
- **多路复用** 微服务可以直接在边缘节点打开一个新流(连接),可以封装例如文件上传、代理等,天堑变通途
- **上线离线控制** 微服务可以注册边缘节点获取ID、上线线回调,当这些事件发生Frontier会调用这方法
- **API简单** 在项目api目录下分别对边缘和微服务提供了封装好的sdk可以非常简单的基于这个sdk做开发
- **部署简单** 支持多种部署方式(docker docker-compose helm以及operator)来部署Frontier实例或集群
- **水平扩展** 提供了Frontiter和Frontlas集群在单实例性能达到瓶颈下可以水平扩展Frontier实例或集群
- **高可用** Frontlas支持集群部署,同时使用微服务和边缘节点永久重连sdk在当前实例宕机情况时切换新可用实例继续服务
- **支持控制面** 同时提供了gRPC和rest接口允许运维人员对微服务和边缘节点查询或删除,删除即踢微服务或边缘节点下线
- **高可用** 支持集群部署,支持微服务和边缘节点永久重连sdk在当前实例宕机情况时切换新可用实例继续服务
- **支持控制面** 提供了gRPC和rest接口允许运维人员对微服务和边缘节点查询或删除删除即踢微服务或边缘下线
## 架构
@@ -23,13 +23,11 @@ Frontier是一个go开发的开源长连接网关能让微服务直接连通
<img src="./docs/diagram/frontier.png" width="100%" height="100%">
- Service End微服务侧的功能入口默认连接
- Edge End边缘节点或客户端侧的功能入口
- Publish/Receive发布和接收消息
- Topic发布和接收消息的主题
- Call/Register调用和注册函数
- Method调用和注册的函数名
- OpenStream/AcceptStream打开和接收点到点流连接
- _Service End_:微服务侧的功能入口,默认连接
- _Edge End_:边缘节点或客户端侧的功能入口
- _Publish/Receive_:发布和接收消息
- _Call/Register_调用和注册函数
- _OpenStream/AcceptStream_打开和接收点到点流连接
Frontier需要微服务和边缘节点两方都主动连接到Frontier这种设计的优势在不需要Frontier主动连接任何一个地址Service和Edge的元信息可以在连接的时候携带过来。连接的默认端口是
@@ -44,11 +42,9 @@ Frontier需要微服务和边缘节点两方都主动连接到Frontier这种
### 示例
本仓库携带了一个Chatroom示例
> examples/chatroom
仅100行代码,可以通过
该目录下有简单的聊天室示例仅100行代码来实现一个聊天室功能,可以通过
```
make examples
@@ -109,10 +105,12 @@ func getID(meta []byte) (uint64, error) {
return 0, nil
}
// edge上线
func online(edgeID uint64, meta []byte, addr net.Addr) error {
return nil
}
// edge离线
func offline(edgeID uint64, meta []byte, addr net.Addr) error {
return nil
}
@@ -120,6 +118,8 @@ func offline(edgeID uint64, meta []byte, addr net.Addr) error {
**Service发布消息到Edge**
前提需要该Edge在线否则会找不到Edge
```golang
package main
@@ -302,7 +302,7 @@ Frontier控制面提供gRPC和rest接口运维人员可以使用这些api来
> api/controlplane/frontier/v1/controlplane.proto
```protobuffer
```protobuf
service ControlPlane {
// 列举所有边缘节点
rpc ListEdges(ListEdgesRequest) returns (ListEdgesResponse)
@@ -342,10 +342,23 @@ Swagger文档请见[swagger](./docs/swagger/swagger.yaml)
当你配置dao backend使用sqlite3时count才会返回总数默认使用buntdb为性能考虑这个值返回-1
## 配置
## Frontier配置
### TLS
```
tls:
enable: false
mtls: false
ca_certs:
- ca1.cert
- ca2.cert
certs:
- cert: edgebound.cert
key: edgebound.key
insecure_skip_verify: false
```
## 部署
### docker
@@ -362,13 +375,13 @@ docker run -d --name frontier -p 30011:30011 -p 30012:30012 singchia/frontier:1.
git clone https://github.com/singchia/frontier.git
cd dist/compose
docker-compose up -d frontier
```
### helm
```
git clone https://github.com/singchia/frontier.git
cd dist/
```
@@ -378,10 +391,10 @@ docker-compose up -d frontier
<img src="./docs/diagram/frontlas.png" width="100%" height="100%">
引入了一个Frontlas组件用于构建集群Frontlas同样也是无状态组件并不在内存里留存其他信息
新增Frontlas组件用于构建集群Frontlas同样也是无状态组件并不在内存里留存其他信息因此需要额外依赖Redis你需要
- Frontier最小的Frontier部署实例
- Frontlas:同步到
- _Frontier_微服务和边缘数据面通信组件
- _Frontlas_集群管理组件将微服务和边缘的元信息、活跃信息记录在Redis里
### 高可用
@@ -394,7 +407,7 @@ docker-compose up -d frontier
### 路线图
见 [ROADMAP](./ROADMAP.md)
见 [ROADMAP](./ROADMAP.md)
### Bug和Feature
@@ -407,7 +420,6 @@ docker-compose up -d frontier
* 提交的代码都携带单元测试
## 许可证
Released under the [Apache License 2.0](https://github.com/singchia/geminio/blob/main/LICENSE)

View File

@@ -440,7 +440,8 @@ func genDefaultConfig(writer io.Writer) error {
},
},
Dao: Dao{
Debug: false,
Debug: false,
Backend: "buntdb",
},
Frontlas: Frontlas{
Enable: false,