diff --git a/.github/ISSUE_TEMPLATE/good-first-issue-component.md b/.github/ISSUE_TEMPLATE/good-first-issue-component.md
index 752ed7512a..8306edc2d4 100644
--- a/.github/ISSUE_TEMPLATE/good-first-issue-component.md
+++ b/.github/ISSUE_TEMPLATE/good-first-issue-component.md
@@ -48,9 +48,9 @@ API quickstart doc:
API definition(the `.proto` file):
-Component development guide: https://mosn.io/layotto/#/en/development/developing-component
+Component development guide: https://mosn.io/layotto/en-US/docs/development/developing-component
-Component development guide(in chinese): https://mosn.io/layotto/#/zh/development/developing-component
+Component development guide(in chinese): https://mosn.io/layotto/docs/development/developing-component
An example pull request to develop a new component:
diff --git a/.github/ISSUE_TEMPLATE/good-first-issue-go-demo.md b/.github/ISSUE_TEMPLATE/good-first-issue-go-demo.md
index 0026be86a9..6cbda17ad8 100644
--- a/.github/ISSUE_TEMPLATE/good-first-issue-go-demo.md
+++ b/.github/ISSUE_TEMPLATE/good-first-issue-go-demo.md
@@ -13,7 +13,7 @@ Develop a golang demo for **(FIXME) XXX** API.
Now we already have quickstart docs for this API, and we need a demo to show users how to invoke this API.
-You can take the [lock api quickstart](https://mosn.io/layotto/#/en/start/lock/start) as an example:
+You can take the [lock api quickstart](https://mosn.io/layotto/en-US/docs/start/lock/start) as an example:
![image](https://user-images.githubusercontent.com/26001097/199906600-d4c92b5e-7b93-4e61-96ca-91c9d96edc04.png)
diff --git a/.github/ISSUE_TEMPLATE/good-first-issue-java-demo.md b/.github/ISSUE_TEMPLATE/good-first-issue-java-demo.md
index b06989cdac..b50725f812 100644
--- a/.github/ISSUE_TEMPLATE/good-first-issue-java-demo.md
+++ b/.github/ISSUE_TEMPLATE/good-first-issue-java-demo.md
@@ -13,7 +13,7 @@ Develop a java demo for **(FIXME) XXX** API.
Now we already have quickstart docs for this API, and we need a demo to show users how to invoke this API.
-You can take the [lock api quickstart](https://mosn.io/layotto/#/en/start/lock/start) as an example:
+You can take the [lock api quickstart](https://mosn.io/layotto/en-US/docs/start/lock/start) as an example:
![image](https://user-images.githubusercontent.com/26001097/199906799-ac30da05-c983-408b-b0e9-2fd712ec492f.png)
diff --git a/.github/workflows/docusaurus-ci.yml b/.github/workflows/docusaurus-ci.yml
index a7a7d89f99..01de8fa682 100644
--- a/.github/workflows/docusaurus-ci.yml
+++ b/.github/workflows/docusaurus-ci.yml
@@ -24,19 +24,20 @@ jobs:
file: 'algolia-config.json'
- name: creates output
run: npm install && npm run build --config docs
- - name: Deploy
- uses: peaceiris/actions-gh-pages@v3
- with:
- deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
- external_repository: layotto/layotto.github.io
- publish_dir: docs/build
- publish_branch: main
-# - name: Pushes to another repository
-# uses: cpina/github-action-push-to-another-repository@main
-# env:
-# SSH_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
+# - name: Deploy
+# uses: peaceiris/actions-gh-pages@v3
# with:
-# source-directory: 'docs/build'
-# destination-github-username: 'layotto'
-# destination-repository-name: 'layotto.github.io'
-# target-branch: main
\ No newline at end of file
+# deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
+# external_repository: layotto/layotto.github.io
+# publish_dir: docs/build
+# publish_branch: main
+ - name: Pushes to another repository
+ uses: cpina/github-action-push-to-another-repository@main
+ env:
+ SSH_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
+ with:
+ source-directory: 'docs/build'
+ target-directory: 'layotto'
+ destination-github-username: 'layotto'
+ destination-repository-name: 'layotto.github.io'
+ target-branch: main
\ No newline at end of file
diff --git a/README.md b/README.md
index 26471a33a4..77dbff6bfe 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
-[查看中文版本](https://mosn.io/layotto/#/zh/README)
+[查看中文版本](https://mosn.io/layotto/docs/README)
Layotto(/leɪˈɒtəʊ/) is an application runtime developed using Golang, which provides various distributed capabilities for applications, such as state management, configuration management, and event pub/sub capabilities to simplify application development.
@@ -22,7 +22,7 @@ Layotto is built on the open source data plane [MOSN](https://github.com/mosn/mo
Layotto aims to combine [Multi-Runtime](https://www.infoq.com/articles/multi-runtime-microservice-architecture/) with Service Mesh into one sidecar. No matter which product you are using as the Service Mesh data plane (e.g. MOSN,Envoy or any other product), you can always attach Layotto to it and add Multi-Runtime capabilities without adding new sidecars.
-For example, by adding Runtime capabilities to MOSN, a Layotto process can both [serve as the data plane of istio](https://mosn.io/layotto/#/en/start/istio/) and provide various Runtime APIs (such as Configuration API, Pub/Sub API, etc.)
+For example, by adding Runtime capabilities to MOSN, a Layotto process can both [serve as the data plane of istio](https://mosn.io/layotto/en-US/docs/start/istio/) and provide various Runtime APIs (such as Configuration API, Pub/Sub API, etc.)
In addition, we were surprised to find that a sidecar can do much more than that. We are trying to make Layotto even the runtime container of FaaS (Function as a service) with the magic power of [WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) .
@@ -30,12 +30,12 @@ In addition, we were surprised to find that a sidecar can do much more than that
- Service Communication
- Service Governance.Such as traffic hijacking and observation, service rate limiting, etc
-- [As the data plane of istio](https://mosn.io/layotto/#/en/start/istio/)
+- [As the data plane of istio](https://mosn.io/layotto/en-US/docs/start/istio/)
- Configuration management
- State management
- Event publish and subscribe
- Health check, query runtime metadata
-- [FaaS model based on WASM and Runtime](https://mosn.io/layotto/#/en/start/faas/start.md)
+- [FaaS model based on WASM and Runtime](https://mosn.io/layotto/en-US/docs/start/faas/start.md)
## Project Architecture
@@ -49,18 +49,18 @@ Layotto provides SDKs in various languages. The sdk interacts with Layotto throu
### Get started with Layotto
-You can try the quickstart demos below to get started with Layotto. In addition, you can experience the [online laboratory](https://mosn.io/layotto/#/en/start/lab)
+You can try the quickstart demos below to get started with Layotto. In addition, you can experience the [online laboratory](https://mosn.io/layotto/en-US/docs/start/lab)
### API
| API | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------------------: | -------------------------------------------------------------- |
-| State | ✅ | [demo](https://mosn.io/layotto/#/en/start/state/start) | Write/Query the data of the Key/Value model |
-| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/#/en/start/pubsub/start) | Publish/Subscribe message through various Message Queue |
-| Service Invoke | ✅ | [demo](https://mosn.io/layotto/#/en/start/rpc/helloworld) | Call Service through MOSN (another istio data plane) |
-| Config | ✅ | [demo](https://mosn.io/layotto/#/en/start/configuration/start-apollo) | Write/Query/Subscribe the config through various Config Center |
-| Lock | ✅ | [demo](https://mosn.io/layotto/#/en/start/lock/start) | Distributed lock API |
-| Sequencer | ✅ | [demo](https://mosn.io/layotto/#/en/start/sequencer/start) | Generate distributed unique and incremental ID |
+| State | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/state/start) | Write/Query the data of the Key/Value model |
+| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/pubsub/start) | Publish/Subscribe message through various Message Queue |
+| Service Invoke | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/rpc/helloworld) | Call Service through MOSN (another istio data plane) |
+| Config | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/configuration/start-apollo) | Write/Query/Subscribe the config through various Config Center |
+| Lock | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/lock/start) | Distributed lock API |
+| Sequencer | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/sequencer/start) | Generate distributed unique and incremental ID |
| File | ✅ | TODO | File API implementation |
| Binding | ✅ | TODO | Transparent data transmission API |
@@ -69,43 +69,43 @@ You can try the quickstart demos below to get started with Layotto. In addition,
| feature | status | quick start | desc |
| ------- | :----: | :----------------------------------------------------: | -------------------------- |
-| istio | ✅ | [demo](https://mosn.io/layotto/#/en/start/istio/) | As the data plane of istio |
+| istio | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/istio/) | As the data plane of istio |
### Extendability
| feature | status | quick start | desc |
| ---------- | :----: | :--------------------------------------------------------------: | -------------------------- |
-| API plugin | ✅ | [demo](https://mosn.io/layotto/#/en/start/api_plugin/helloworld) | You can add your own API ! |
+| API plugin | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/api_plugin/helloworld) | You can add your own API ! |
### Actuator
| feature | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------: | --------------------------------------------------- |
-| Health Check | ✅ | [demo](https://mosn.io/layotto/#/en/start/actuator/start) | Query health state of app and components in Layotto |
-| Metadata Query | ✅ | [demo](https://mosn.io/layotto/#/en/start/actuator/start) | Query metadata in Layotto/app |
+| Health Check | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/actuator/start) | Query health state of app and components in Layotto |
+| Metadata Query | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/actuator/start) | Query metadata in Layotto/app |
### Traffic Control
| feature | status | quick start | desc |
| ------------ | :----: | :-------------------------------------------------------------------: | --------------------------------------------------------------- |
-| TCP Copy | ✅ | [demo](https://mosn.io/layotto/#/en/start/network_filter/tcpcopy) | Dump the tcp traffic received by Layotto into local file system |
-| Flow Control | ✅ | [demo](https://mosn.io/layotto/#/en/start/stream_filter/flow_control) | limit access to the APIs provided by Layotto |
+| TCP Copy | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/network_filter/tcpcopy) | Dump the tcp traffic received by Layotto into local file system |
+| Flow Control | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/stream_filter/flow_control) | limit access to the APIs provided by Layotto |
### Write your bussiness logic using WASM
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | -------------------------------------------------------------------- |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by Rust to \*.wasm and run in Layotto |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto |
+| Rust | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by Rust to \*.wasm and run in Layotto |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto |
### As a FaaS(Serverless) runtime (Layotto + WebAssembly + k8s)
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | ------------------------------------------------------------------------------------------ |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto And Scheduled by k8s. |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by Rust to \*.wasm and run in Layotto And Scheduled by k8s. |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto And Scheduled by k8s. |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto And Scheduled by k8s. |
+| Rust | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by Rust to \*.wasm and run in Layotto And Scheduled by k8s. |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto And Scheduled by k8s. |
## Presentations
diff --git a/algolia-config.json b/algolia-config.json
index 9846c662d0..e07c304f55 100644
--- a/algolia-config.json
+++ b/algolia-config.json
@@ -1,10 +1,10 @@
{
"index_name": "layotto",
"start_urls": [
- "https://layotto.github.io/docs",
- "https://layotto.github.io/blog",
- "https://layotto.github.io/en-US/docs",
- "https://layotto.github.io/en-US/blog"
+ "https://mosn.io/layotto/docs",
+ "https://mosn.io/layotto/blog",
+ "https://mosn.io/layotto/en-US/docs",
+ "https://mosn.io/layotto/en-US/blog"
],
"stop_urls": [
"/tests"
diff --git a/crowdin.yaml b/crowdin.yaml
index da3afb5333..90a2be185f 100644
--- a/crowdin.yaml
+++ b/crowdin.yaml
@@ -1,12 +1,11 @@
project_id: 688617
-# token local testing layotto token
api_token: 7305dcca805d8750a5d0983438bdc4bca9adff6bf35eff5a86dfdca9d85a1c273dd55e8b5362fe8d
#api_token_env: CROWDIN_VERDACCIO_API_KEY
preserve_hierarchy: true
files:
- - source: /blog/**/*
- translation: '/i18n/%locale%/docusaurus-plugin-content-blog/current/**/%original_file_name%'
- - source: /docs/**/*
+# - source: docs/blog/**/*
+# translation: '/i18n/%locale%/docusaurus-plugin-content-blog/current/**/%original_file_name%'
+ - source: /docs/docs/**/*
translation: '/i18n/%locale%/docusaurus-plugin-content-docs/current/**/%original_file_name%'
\ No newline at end of file
diff --git a/demo/faas/code/assemblyscript/README.md b/demo/faas/code/assemblyscript/README.md
index 2f55cd43f4..9026d36897 100644
--- a/demo/faas/code/assemblyscript/README.md
+++ b/demo/faas/code/assemblyscript/README.md
@@ -5,4 +5,4 @@ The Node.js version should >=16.14.0.
* npm i
* npm run asbuild
* Copy build/function_1.wasm and build/function_2.wasm to your actual directory.
-* Test the demo follow https://mosn.io/layotto/#/zh/start/faas/start.
\ No newline at end of file
+* Test the demo follow https://mosn.io/layotto/docs/start/faas/start.
\ No newline at end of file
diff --git a/demo/faas/code/rust/README.md b/demo/faas/code/rust/README.md
index 9cb216848f..68e9fda442 100644
--- a/demo/faas/code/rust/README.md
+++ b/demo/faas/code/rust/README.md
@@ -2,4 +2,4 @@
* `cargo build --target=wasm32-unknown-unknown --release`
* Copy `target/wasm32-unknown-unknown/release/function_1.wasm` and `target/wasm32-unknown-unknown/release/function_2.wasm` to your actual directory.
-* Test the demo follow [https://mosn.io/layotto/#/zh/start/faas/start](https://mosn.io/layotto/#/zh/start/faas/start).
\ No newline at end of file
+* Test the demo follow [https://mosn.io/layotto/docs/start/faas/start](https://mosn.io/layotto/docs/start/faas/start).
\ No newline at end of file
diff --git a/docs/blog/code/layotto-rpc/index.md b/docs/blog/code/layotto-rpc/index.md
index 359a4e8e85..ea1adf9222 100644
--- a/docs/blog/code/layotto-rpc/index.md
+++ b/docs/blog/code/layotto-rpc/index.md
@@ -148,7 +148,7 @@ func (stm *StageManager) runStartStage() {
### 0x01 Dubbo-go-sample client 发起请求
-根据 [Dubbo Json Rpc Example](https://mosn.io/layotto/#/zh/start/rpc/dubbo_json_rpc) 例子运行如下命令
+根据 [Dubbo Json Rpc Example](https://mosn.io/layotto/docs/start/rpc/dubbo_json_rpc) 例子运行如下命令
```shell
go run demo/rpc/dubbo_json_rpc/dubbo_json_client/client.go -d '{"jsonrpc":"2.0","method":"GetUser","params":["A003"],"id":9527}'
diff --git a/docs/blog/code/webassembly/index.md b/docs/blog/code/webassembly/index.md
index 6e6e2244a0..674137837c 100644
--- a/docs/blog/code/webassembly/index.md
+++ b/docs/blog/code/webassembly/index.md
@@ -13,7 +13,7 @@
## 概述
WebAssemly 简称 WASM,是一种运行在沙箱化的执行环境中的可移植、体积小、加载快的二进制格式,WASM最初设计是为了在网络浏览器中实现高性能应用,得益于它良好的隔离性和安全性、多语言支持、冷启动快等灵活性和敏捷性等特性,又被应用于嵌入其它应用程序中以获得较好的扩展能力,显然我们可以将它嵌入到 Layotto 中。Layotto 支持加载编译好的 WASM 文件,并通过 proxy_abi_version_0_2_0 的 API 与目标 WASM 进行交互;
-另外 Layotto 也支持加载并运行以 WASM 为载体的 Function,并支持 Function 之间互相调用以及访问基础设施;同时 Layotto 社区也正在探索把 component 编译成 WASM 模块以此来增强模块间的隔离性。本文以 Layotto 官方 [quickstart](https://mosn.io/layotto/#/zh/start/wasm/start) 即访问redis相关示例为例来分析 Layotto 中 WebAssemly 相关的实现和应用。
+另外 Layotto 也支持加载并运行以 WASM 为载体的 Function,并支持 Function 之间互相调用以及访问基础设施;同时 Layotto 社区也正在探索把 component 编译成 WASM 模块以此来增强模块间的隔离性。本文以 Layotto 官方 [quickstart](https://mosn.io/layotto/docs/start/wasm/start) 即访问redis相关示例为例来分析 Layotto 中 WebAssemly 相关的实现和应用。
## 源码分析
备注:本文基于 commit hash:f1cf350a52b5a1a0b3788a31681007a056e332ef
@@ -32,7 +32,7 @@ WebAssemly 简称 WASM,是一种运行在沙箱化的执行环境中的可移
[proxy-wasm-go-host](https://github.com/mosn/proxy-wasm-go-host) WebAssembly for Proxies (GoLang host implementation):Proxy-Wasm 的 golang 实现,用以在 Layotto 中实现 Runtime ABI 的具体逻辑。\
VM:Virtual Machine 虚拟机,Runtime类型有:wasmtime、Wasmer、V8、 Lucet、WAMR、wasm3,本文例子中使用 wasmer
-1、首先看 [quickstart例子](https://mosn.io/layotto/#/zh/start/wasm/start) 中 stream filter 的配置,如下可以看到配置中有两个 WASM 插件,使用 wasmer VM 分别启动一个实例,详见如下配置:
+1、首先看 [quickstart例子](https://mosn.io/layotto/docs/start/wasm/start) 中 stream filter 的配置,如下可以看到配置中有两个 WASM 插件,使用 wasmer VM 分别启动一个实例,详见如下配置:
```json
"stream_filters": [
@@ -579,7 +579,7 @@ func ProxyGetState(instance common.WasmInstance, storeNamePtr int32, storeNameSi
}
```
-以上 Layotto rpc 流程简要说是通过两个虚拟连接借助 Dapr API 和 底层 Mosn 实现 [5],具体可参见前序文章[Layotto源码解析——处理RPC请求](https://mosn.io/layotto/#/zh/blog/code/layotto-rpc/index),从 Redis 中获取数据可直接阅读 Dapr State 相关代码,在此不一一展开了。
+以上 Layotto rpc 流程简要说是通过两个虚拟连接借助 Dapr API 和 底层 Mosn 实现 [5],具体可参见前序文章[Layotto源码解析——处理RPC请求](https://mosn.io/layotto/docs/blog/code/layotto-rpc/index),从 Redis 中获取数据可直接阅读 Dapr State 相关代码,在此不一一展开了。
### FaaS模式
@@ -621,5 +621,5 @@ Layotto WebAssemly 虽然涉及较多 WASM 相关的基础知识,但通过示
- [2] [feature: WASM plugin framework](https://github.com/mosn/mosn/pull/1589)
- [3] [WebAssembly for Proxies (ABI Spec)](https://github.com/proxy-wasm/spec)
- [4] [Proxy WebAssembly Architecture](https://techhenzy.com/proxy-webassembly-architecture/)
-- [5] [Layotto源码解析——处理RPC请求](https://mosn.io/layotto/#/zh/blog/code/layotto-rpc/index)
+- [5] [Layotto源码解析——处理RPC请求](https://mosn.io/layotto/docs/blog/code/layotto-rpc/index)
- [6] [云原生运行时的下一个五年](https://www.sofastack.tech/blog/the-next-five-years-of-cloud-native-runtime/)
diff --git a/docs/docs/README.md b/docs/docs/README.md
index 27bb6da7f0..b16fee4a8d 100644
--- a/docs/docs/README.md
+++ b/docs/docs/README.md
@@ -25,7 +25,7 @@ Mesh 两者的能力结合起来,无论你是使用 MOSN 还是 Envoy 或者
此外,随着探索实践,我们发现 sidecar 能做的事情远不止于此。 通过引入[WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) ,我们正在尝试将 Layotto 做成 FaaS (Function as a service) 的运行时容器 。
-如果您对诞生背景感兴趣,可以看下[这篇演讲](https://mosn.io/layotto/#/zh/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index)
+如果您对诞生背景感兴趣,可以看下[这篇演讲](https://mosn.io/layotto/docs/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index)
。
## 功能
@@ -60,64 +60,64 @@ Layotto 提供了多种语言版本的 SDK,SDK 通过 gRPC 与 Layotto 进行
| API | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------------------: | -------------------------------- |
-| State | ✅ | [demo](https://mosn.io/layotto/#/zh/start/state/start) | 提供读写 KV 模型存储的数据的能力 |
-| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/#/zh/start/pubsub/start) | 提供消息的发布/订阅能力 |
-| Service Invoke | ✅ | [demo](https://mosn.io/layotto/#/zh/start/rpc/helloworld) | 通过 MOSN 进行服务调用 |
-| Config | ✅ | [demo](https://mosn.io/layotto/#/zh/start/configuration/start-apollo) | 提供配置增删改查及订阅的能力 |
-| Lock | ✅ | [demo](https://mosn.io/layotto/#/zh/start/lock/start) | 提供 lock/unlock 分布式锁的实现 |
-| Sequencer | ✅ | [demo](https://mosn.io/layotto/#/zh/start/sequencer/start) | 提供获取分布式自增 ID 的能力 |
-| File | ✅ | [demo](https://mosn.io/layotto/#/zh/start/file/start) | 提供访问文件的能力 |
+| State | ✅ | [demo](https://mosn.io/layotto/docs/start/state/start) | 提供读写 KV 模型存储的数据的能力 |
+| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/docs/start/pubsub/start) | 提供消息的发布/订阅能力 |
+| Service Invoke | ✅ | [demo](https://mosn.io/layotto/docs/start/rpc/helloworld) | 通过 MOSN 进行服务调用 |
+| Config | ✅ | [demo](https://mosn.io/layotto/docs/start/configuration/start-apollo) | 提供配置增删改查及订阅的能力 |
+| Lock | ✅ | [demo](https://mosn.io/layotto/docs/start/lock/start) | 提供 lock/unlock 分布式锁的实现 |
+| Sequencer | ✅ | [demo](https://mosn.io/layotto/docs/start/sequencer/start) | 提供获取分布式自增 ID 的能力 |
+| File | ✅ | [demo](https://mosn.io/layotto/docs/start/file/start) | 提供访问文件的能力 |
| Binding | ✅ | TODO | 提供透传数据的能力 |
### Service Mesh
| feature | status | quick start | desc |
| ------- | :----: | :----------------------------------------------------: | ----------------------------- |
-| Istio | ✅ | [demo](https://mosn.io/layotto/#/zh/start/istio/) | 跟 Istio 集成,作为 Istio 的数据面 |
+| Istio | ✅ | [demo](https://mosn.io/layotto/docs/start/istio/) | 跟 Istio 集成,作为 Istio 的数据面 |
### 可扩展性
| feature | status | quick start | desc |
| -------- | :----: | :--------------------------------------------------------------: | --------------------------- |
-| API 插件 | ✅ | [demo](https://mosn.io/layotto/#/zh/start/api_plugin/helloworld) | 为 Layotto 添加您自己的 API |
+| API 插件 | ✅ | [demo](https://mosn.io/layotto/docs/start/api_plugin/helloworld) | 为 Layotto 添加您自己的 API |
### 可观测性
| feature | status | quick start | desc |
| ---------- | :----: | :---------------------------------------------------------: | ----------------------- |
-| Skywalking | ✅ | [demo](https://mosn.io/layotto/#/zh/start/trace/skywalking) | Layotto 接入 Skywalking |
+| Skywalking | ✅ | [demo](https://mosn.io/layotto/docs/start/trace/skywalking) | Layotto 接入 Skywalking |
### Actuator
| feature | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------: | ------------------------------------- |
-| Health Check | ✅ | [demo](https://mosn.io/layotto/#/zh/start/actuator/start) | 查询 Layotto 依赖的各种组件的健康状态 |
-| Metadata Query | ✅ | [demo](https://mosn.io/layotto/#/zh/start/actuator/start) | 查询 Layotto 或应用对外暴露的元信息 |
+| Health Check | ✅ | [demo](https://mosn.io/layotto/docs/start/actuator/start) | 查询 Layotto 依赖的各种组件的健康状态 |
+| Metadata Query | ✅ | [demo](https://mosn.io/layotto/docs/start/actuator/start) | 查询 Layotto 或应用对外暴露的元信息 |
### 流量控制
| feature | status | quick start | desc |
| ------------ | :----: | :-------------------------------------------------------------------: | ------------------------------------------ |
-| TCP Copy | ✅ | [demo](https://mosn.io/layotto/#/zh/start/network_filter/tcpcopy) | 把 Layotto 收到的 TCP 数据 dump 到本地文件 |
-| Flow Control | ✅ | [demo](https://mosn.io/layotto/#/zh/start/stream_filter/flow_control) | 限制访问 Layotto 对外提供的 API |
+| TCP Copy | ✅ | [demo](https://mosn.io/layotto/docs/start/network_filter/tcpcopy) | 把 Layotto 收到的 TCP 数据 dump 到本地文件 |
+| Flow Control | ✅ | [demo](https://mosn.io/layotto/docs/start/stream_filter/flow_control) | 限制访问 Layotto 对外提供的 API |
### 在 Sidecar 中用 WebAssembly (WASM) 写业务逻辑
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | ---------------------------------------------------------------- |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/zh/start/wasm/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/zh/start/wasm/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/zh/start/wasm/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/docs/start/wasm/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
+| Rust | ✅ | [demo](https://mosn.io/layotto/docs/start/wasm/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/docs/start/wasm/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
### 作为 Serverless 的运行时,通过 WebAssembly (WASM) 写 FaaS
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | ----------------------------------------------------------------------------------------- |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/zh/start/faas/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/zh/start/faas/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/zh/start/faas/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/docs/start/faas/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
+| Rust | ✅ | [demo](https://mosn.io/layotto/docs/start/faas/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/docs/start/faas/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
## Landscapes
diff --git a/docs/docs/building_blocks/rpc/reference.md b/docs/docs/building_blocks/rpc/reference.md
index 7fc03682bb..dbba3fbea4 100644
--- a/docs/docs/building_blocks/rpc/reference.md
+++ b/docs/docs/building_blocks/rpc/reference.md
@@ -24,10 +24,10 @@ Layotto 通过提供服务调用 API 来解决这些挑战,该 API 充当反
## 如何使用RPC API?
您可以通过 grpc 接口 **InvokeService** 进行 RPC 调用。 API 在 [api.go](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/pkg/grpc/api.go) 中定义。
-该组件需要在使用前进行配置。详细的配置说明见[配置参考](https://mosn.io/layotto/#/zh/configuration/overview),目前Layotto使用的是集成MOSN的MOSN 4层过滤器,运行在MOSN上,所以配置文件Layotto使用的其实是一个MOSN配置文件。所以也可以参考[MOSN配置文件](https://mosn.io/docs/configuration/)的文档。
+该组件需要在使用前进行配置。详细的配置说明见[配置参考](https://mosn.io/layotto/docs/configuration/overview),目前Layotto使用的是集成MOSN的MOSN 4层过滤器,运行在MOSN上,所以配置文件Layotto使用的其实是一个MOSN配置文件。所以也可以参考[MOSN配置文件](https://mosn.io/docs/configuration/)的文档。
### 演示 1:Hello World -- 基本 Golang HTTP 服务器
-此演示的快速入门文档:[Hello World](https://mosn.io/layotto/#/zh/start/rpc/helloworld)
+此演示的快速入门文档:[Hello World](https://mosn.io/layotto/docs/start/rpc/helloworld)
[echoserver](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/demo/rpc/http/echoserver/echoserver.go)在8889端口发布一个简单的接口,配置文件[example.json](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/demo/rpc/http/example.json)利用mosn的路由能力转发http头中id字段等于**HelloService:1.0**的请求 到本地8889端口,然后在[echoclient](https://github.com/mosn/layotto/blob/b66b998f50901f8bd1cce035478579c1b47f986d/demo/rpc/http/echoclient/echoclient.go)使用接口 **InvokeService** 进行 RPC 调用。
@@ -44,7 +44,7 @@ resp, err := cli.InvokeService(
```
### Demo 2:Dubbo JSON RPC
-本demo快速入门文档:[Dubbo JSON RPC Example](https://mosn.io/layotto/#/zh/start/rpc/dubbo_json_rpc)
+本demo快速入门文档:[Dubbo JSON RPC Example](https://mosn.io/layotto/docs/start/rpc/dubbo_json_rpc)
服务端由dubbo示例程序[dubbo-go-samples](https://github.com/apache/dubbo-go-samples)充当,配置文件 [example.json](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/demo/rpc/dubbo_json_rpc/example.json) 使用插件[dubbo_json_rpc](https://github.com/mosn/layotto/blob/8db7a2297bd05d1b0c4452cc980d8f6412a82f3a/components/rpc/callback/dubbo_json_rpc.go),以产生请求头。随后请求端[client](https://github.com/mosn/layotto/blob/b66b998f50901f8bd1cce035478579c1b47f986d/demo/rpc/dubbo_json_rpc/dubbo_json_client/client.go) 使用接口 **InvokeService** 进行 RPC 调用。
@@ -65,4 +65,4 @@ resp, err := cli.InvokeService(
## 实现原理
-如果对实现原理感兴趣,或者想扩展一些功能,可以阅读[RPC设计文档](https://mosn.io/layotto/#/zh/design/rpc/rpc%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3)。
+如果对实现原理感兴趣,或者想扩展一些功能,可以阅读[RPC设计文档](https://mosn.io/layotto/docs/design/rpc/rpc%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3)。
diff --git a/docs/docs/development/contributing-doc.md b/docs/docs/development/contributing-doc.md
index 97361c79ac..7e1b33b240 100644
--- a/docs/docs/development/contributing-doc.md
+++ b/docs/docs/development/contributing-doc.md
@@ -6,57 +6,75 @@
## 1. 文档路径说明
-文档统一放在docs/目录下,其中docs/en存放英文文档,docs/zh存放中文文档。
+文档统一放在docs/目录下,docs/docs存放文档,docs/blog存放博客,其中docs/i18n存放翻译后的多语言文档。
-![img_2.png](/img/development/doc/img_2.png)
+![img_14.png](/img/development/doc/img_14.png)
## 2. 文档站点说明
-docs/目录下的文件,会被自动部署到github pages,通过[docsify](https://docsify.js.org/#/) 渲染。
+docs/目录下的文件,会被自动部署到github pages,通过[docusaurus](https://docusaurus.io/) 渲染。
通常来说,.md文件合并入主干分支后,您就能在Layotto的文档站点上看到新页面,部署、渲染的过程都是自动的。
### 本地启动文档站点
-在本地写完文档后,为了能尽快查看效果,您也可以参考 [docsify quickstart](https://docsify.js.org/#/quickstart) 在本地启动文档站点。
+在本地写完文档后,为了能尽快查看效果,您也可以参考 [docusaurus_installation](https://docusaurus.io/docs/installation) 在本地启动文档站点。
这里概括一下步骤:
-step 1. 安装 docsify
+step 1. 安装 docusaurus,确保nodejs版本在18.0或以上
```shell
-npm i docsify-cli -g
+npm install
```
-step 2. 启动文档站点
+step 2. 编译,把docs下面的文档编译成静态的HTML文件,编译后的文件放在docs/build下面
+
+```shell
+npm run build --config docs
+```
+
+step 3. 启动文档站点
```shell
# 在 layotto 项目根目录下执行
-docsify serve docs
+npm run serve --config docs
```
step 3. 打开 http://localhost:3000/ 查看文档站点。
## 3. 新增文档需要做哪些事
### step 1. 新建 markdown 文档
-当需要新增文档时,可以按目录结构新建文件夹、新建.md文件。比如想写分布式锁API的设计文档,就新建目录:
+当需要新增文档时,可以按目录结构新建文件夹、新建.md文件。比如想写分布式锁API的设计文档,在中文和英文目录下面分别新建目录:
-![img_1.png](/img/development/doc/img_1.png)
+![img_8.png](/img/development/doc/img_8.png)
+![img_9.png](/img/development/doc/img_9.png)
+
+可以使用crowdin进行辅助翻译,编写好中文文档后,使用 npm run crowdin:upload 上传中文文档到crowdin平台,在平台找到 layotto 项目,翻译后下载到本地响应目录即可。[crowdin参考文档](https://docusaurus.io/docs/i18n/crowdin)
### step 2. 把文档加入侧边栏
新增文档、写完内容后,记得更新一下侧边栏哦。
-中文侧边栏在 docs/zh/_sidebar.md
+中文侧边栏在 docs/sidebars.js
+
+英文侧边栏在需要执行下:
+
+```shell
+npm run write-translations -- --locale en-US
+```
+
+然后在docs/i18n/en-US/docusaurus-plugin-content-docs/current.json里面修改对应的sidebar的内容
+
+![img_10.png](/img/development/doc/img_10.png)
-英文侧边栏在 docs/_sidebar.md
### step 3. (可选) 本地启动文档站点、验证
-您可以使用 dosify 在本地启动文档服务器,查看修改效果
+您可以使用 docusaurus 在本地启动文档服务器,查看修改效果
### step 4. 提交pr、合并入代码库
写完上述markdown文件,提交pr、合并入主干分支后,打开官网就能看到新的文档啦
## 4. 经常遇到的坑:文档内的超链接
-使用Docsify建站有个讨厌的问题:超链接很奇怪。
+使用Docusaurus建站有个讨厌的问题:超链接很奇怪。
这里说的超链接是那种点了后会跳转到其他文档的链接,比如下面这种:
@@ -73,9 +91,11 @@ step 3. 打开 http://localhost:3000/ 查看文档站点。
有两种正确的方式使用超链接:
-a. 用相对于docs/目录的相对路径。例如:
+a. 用相对于docs/目录的绝对路径。例如:
+
+![img_11.png](/img/development/doc/img_11.png)
-![img_5.png](/img/development/doc/img_5.png)
+用这种方式写,在本地编译器里面会提示警告,不用理会,在编译的时候会自动处理成可用的超链接。
b. 用完整的Url。例如:
@@ -84,11 +104,11 @@ see [runtime_config.json](https://github.com/mosn/layotto/blob/main/configs/runt
```
## 5. 图片目录与图片链接
-图片放在docs/img/ 目录下。放这里是为了能让docsify站点能访问到:
+图片放在docs/static/img/ 目录下。放这里是为了能让docusaurus站点能访问到,docusaurus编译的时候会把static下面的文件夹放到最顶层:
-![img.png](/img/development/doc/img.png)
+![img12.png](/img/development/doc/img_12.png)
-文档中引用图片建议就用完整路径,免得遇到一堆乱七八糟的路径问题。
+文档中引用static的本地图片建议就用/img绝对路径,如果是网络图片,直接用完整的图片URL即可。
例如,如果是引用main分支的图片,图片Url的前缀是`raw.githubusercontent.com/mosn/layotto/main/docs/img/xxx`
@@ -97,5 +117,3 @@ Markdown写法如下:
```markdown
![Architecture](https://raw.githubusercontent.com/mosn/layotto/main/docs/img/runtime-architecture.png)
```
-
-注:相对路径其实也可以用,只不过你可能会遇到很多问题,比如``标签和markdown的相对路径逻辑不一样;比如用户可能会通过不同路径访问README,等等。总之很痛苦。
\ No newline at end of file
diff --git a/docs/docs/development/developing-api.md b/docs/docs/development/developing-api.md
index 0da9eb5f58..ac7662c5a2 100644
--- a/docs/docs/development/developing-api.md
+++ b/docs/docs/development/developing-api.md
@@ -84,7 +84,7 @@ A: **本规范只限制“新增Layotto API的pr需要有哪些东西”(比
反例:文档只写了操作步骤1234,用户看不懂操作这些想干啥
#### 2.3.2. 使用文档
-文档路径在"用户手册--接口文档"下,例如 State API的见 https://mosn.io/layotto/#/zh/api_reference/state/reference
+文档路径在"用户手册--接口文档"下,例如 State API的见 https://mosn.io/layotto/docs/api_reference/state/reference
>调研发现Dapr的使用文档较多,比如光State API就有:
>
@@ -170,13 +170,13 @@ message StateOptions {
有设计文档的话贴个文档链接,没文档的话贴个proposal issue链接
#### 2.3.3. 介绍API通用配置的文档
-例如https://mosn.io/layotto/#/zh/component_specs/state/common
+例如https://mosn.io/layotto/docs/component_specs/state/common
- 配置文件结构
- 解释这个API的通用配置,比如keyPrefix
#### 2.3.4. 介绍组件配置的文档
-例如https://mosn.io/layotto/#/zh/component_specs/state/redis
+例如https://mosn.io/layotto/docs/component_specs/state/redis
- 这个组件的配置项说明
- 想启动这个组件跑demo的话,怎么启动
diff --git a/docs/docs/development/start-from-zero.md b/docs/docs/development/start-from-zero.md
index 97749d8077..a041847bcc 100644
--- a/docs/docs/development/start-from-zero.md
+++ b/docs/docs/development/start-from-zero.md
@@ -3,15 +3,15 @@
## Step 1. Hello world,了解 Layotto 是干嘛的
先了解项目是干啥的,参照quickstart demo把hello world跑起来,比如:
- - [使用Configuration API](https://mosn.io/layotto/#/zh/start/configuration/start-apollo)
- - [使用State API进行状态管理](https://mosn.io/layotto/#/zh/start/state/start)
- - [使用分布式锁 API](https://mosn.io/layotto/#/zh/start/lock/start)
+ - [使用Configuration API](https://mosn.io/layotto/docs/start/configuration/start-apollo)
+ - [使用State API进行状态管理](https://mosn.io/layotto/docs/start/state/start)
+ - [使用分布式锁 API](https://mosn.io/layotto/docs/start/lock/start)
Tips: 如果过程中遇到了报错没法启动,可以在github发issue提问。
Tips: 如果觉得某篇文档写的不够详细想要补充,或者文档写错了,可以提PR修复。这可能是成为contributor的最快路线 :)
-(可选)扩展阅读:有一些介绍项目的演讲视频,比如[《MOSN 子项目 Layotto:开启服务网格+应用运行时新篇章》](https://mosn.io/layotto/#/zh/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index) ,
+(可选)扩展阅读:有一些介绍项目的演讲视频,比如[《MOSN 子项目 Layotto:开启服务网格+应用运行时新篇章》](https://mosn.io/layotto/docs/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index) ,
比如 [《Service Mesh落地之后:为 sidecar 注入灵魂》](https://www.bilibili.com/video/BV1RL4y1b7U9?from=search&seid=1492521025214444985&spm_id_from=333.337.0.0)
。不过看视频比较花时间,懒得看的话可以多跑几个demo体验下,quickstart demo蛮多的
diff --git a/docs/docs/sdk_reference/go/start.md b/docs/docs/sdk_reference/go/start.md
index 63e962a820..e8bd6b38d2 100644
--- a/docs/docs/sdk_reference/go/start.md
+++ b/docs/docs/sdk_reference/go/start.md
@@ -191,7 +191,7 @@ func main() {
- next_id: 分布式id.
-> 关于接口的详细使用方式,可以通过查看[API设计文档](https://mosn.io/layotto/#/zh/design/sequencer/design). 可能文档还未即使补充,也可以查看[相关代码注释](https://github.com/mosn/layotto/blob/6f6508b11783f1e4fa947ff47632e74064333384/spec/proto/runtime/v1/runtime.pb.go#L1118-L1131),及[组件内部实现](https://github.com/mosn/layotto/blob/6f6508b11783f1e4fa947ff47632e74064333384/pkg/grpc/default_api/api_sequencer.go#L99-L119)获悉.
+> 关于接口的详细使用方式,可以通过查看[API设计文档](https://mosn.io/layotto/docs/design/sequencer/design). 可能文档还未即使补充,也可以查看[相关代码注释](https://github.com/mosn/layotto/blob/6f6508b11783f1e4fa947ff47632e74064333384/spec/proto/runtime/v1/runtime.pb.go#L1118-L1131),及[组件内部实现](https://github.com/mosn/layotto/blob/6f6508b11783f1e4fa947ff47632e74064333384/pkg/grpc/default_api/api_sequencer.go#L99-L119)获悉.
diff --git a/docs/docs/start/faas/start.md b/docs/docs/start/faas/start.md
index 1677775ace..d591900d77 100644
--- a/docs/docs/start/faas/start.md
+++ b/docs/docs/start/faas/start.md
@@ -59,7 +59,7 @@ Layotto支持加载并运行以 wasm 为载体的 Function,并支持Function
**注2:需要把`./demo/faas/config.json`中的 wasm 文件的路径修改为`/home/docker/function_1.wasm`跟`/home/docker/function_2.wasm`, 两个wasm文件在后面会被自动注入。**
-**注3:也可动态加载 WASM 文件,详情参见:[WASM 动态注册](https://mosn.io/layotto/#/zh/start/wasm/start?id=动态注册)**
+**注3:也可动态加载 WASM 文件,详情参见:[WASM 动态注册](https://mosn.io/layotto/docs/start/wasm/start?id=动态注册)**
#### D、安装 containerd-shim-layotto-v2
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 9a6674f7d4..bbe0f7538e 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -7,8 +7,8 @@ const config = {
tagline: 'Layotto (L8): To be the next layer of OSI layer 7',
favicon: 'https://gw.alipayobjects.com/zos/bmw-prod/65518bfc-8ba5-4234-a5c5-2bc065e3a5f0.svg',
- url: 'https://mosn.io',
- baseUrl: '/',
+ url: 'https://layotto.github.io',
+ baseUrl: '/layotto/',
organizationName: 'mosn',
projectName: 'layotto',
@@ -39,11 +39,11 @@ const config = {
if (locale !== 'en-US') {
const pathSegments = docPath.split('/');
newDocPath = ['docs', ...pathSegments].join('/');
- return `https://github.com/mosn/layotto/edit/main/`+docPath;
+ return `https://github.com/mosn/layotto/edit/main/docs/`+newDocPath;
}else{
const pathSegments = docPath.split('/');
newDocPath = ['i18n/en-US/docusaurus-plugin-content-docs/current', ...pathSegments].join('/');
- return `https://github.com/mosn/layotto/edit/main/`+docPath;
+ return `https://github.com/mosn/layotto/edit/main/docs/`+newDocPath;
}
},
@@ -54,14 +54,7 @@ const config = {
showReadingTime: true,
editUrl:({ locale,blogDirPath, blogPath }) => {
- //把docPath 拆分,中间加上对应的路径。
- let newDocPath;
- if (locale !== 'en-US') {
- return `https://github.com/mosn/layotto/edit/main//${blogDirPath}/${blogPath}`;
- }else{
- return `https://github.com/mosn/layotto/edit/main//${blogDirPath}/${blogPath}`;
- }
-
+ return `https://github.com/mosn/layotto/edit/main/docs/${blogDirPath}/${blogPath}`;
}
},
theme: {
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-blog/code/layotto-rpc/index.md b/docs/i18n/en-US/docusaurus-plugin-content-blog/code/layotto-rpc/index.md
index 02dd0e66c0..47750844c1 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-blog/code/layotto-rpc/index.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-blog/code/layotto-rpc/index.md
@@ -149,7 +149,7 @@ func (stm *StageManager) runStartStage() {
### 0x01 Dubbo-go-sample client request
-Follow the example of [Dubbo Json Rpc Example](https://mosn.io/layotto/#/en/start/rpc/dub_json_rpc)
+Follow the example of [Dubbo Json Rpc Example](https://mosn.io/layotto/en-US/docs/start/rpc/dub_json_rpc)
```shell
go un demo/rpc/dubbo_json_rpc/dub_json_client/client.go -d '{"jsonrpc": "2.0", "method":"GetUser", "params":["A003"],"id":9527}'
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-blog/code/webassembly/index.md b/docs/i18n/en-US/docusaurus-plugin-content-blog/code/webassembly/index.md
index 6953d27192..a100847b5e 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-blog/code/webassembly/index.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-blog/code/webassembly/index.md
@@ -14,7 +14,7 @@
## General description
WebAssemly Abbreviations WASM, a portable, small and loaded binary format operating in sandboxing implementation environment, was originally designed to achieve high-performance applications in web browsers, benefiting from its good segregation and security, multilingual support, cool-start fast flexibility and agility and application to embed other applications for better expansion, and obviously we can embed it into Layotto.Layotto supports loading compiled WASM files and interacting with the Target WASM API via proxy_abi_version_0_2_0;
-other Layotto also supports loading and running WASM carrier functions and supports interfaces between Function and access to infrastructure; and Layotto communities are also exploring the compilation of components into WASM modules to increase segregation between modules.This article uses the Layotto official [quickstart](https://mosn.io/layotto/#/zh/start/wasm/start) example of accessing redis as an example to analyze WebAssemly in Layotto Related implementation and application.
+other Layotto also supports loading and running WASM carrier functions and supports interfaces between Function and access to infrastructure; and Layotto communities are also exploring the compilation of components into WASM modules to increase segregation between modules.This article uses the Layotto official [quickstart](https://mosn.io/layotto/docs/start/wasm/start) example of accessing redis as an example to analyze WebAssemly in Layotto Related implementation and application.
## Source analysis
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/README.md b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/README.md
index 6552476c09..dfa3680c18 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/README.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/README.md
@@ -52,12 +52,12 @@ You can try the quickstart demos below to get started with Layotto. In addition,
| API | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------------------: | -------------------------------------------------------------- |
-| State | ✅ | [demo](https://mosn.io/layotto/#/en/start/state/start) | Write/Query the data of the Key/Value model |
-| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/#/en/start/pubsub/start) | Publish/Subscribe message through various Message Queue |
-| Service Invoke | ✅ | [demo](https://mosn.io/layotto/#/en/start/rpc/helloworld) | Call Service through MOSN (another istio data plane) |
-| Config | ✅ | [demo](https://mosn.io/layotto/#/en/start/configuration/start-apollo) | Write/Query/Subscribe the config through various Config Center |
-| Lock | ✅ | [demo](https://mosn.io/layotto/#/en/start/lock/start) | Distributed lock API |
-| Sequencer | ✅ | [demo](https://mosn.io/layotto/#/en/start/sequencer/start) | Generate distributed unique and incremental ID |
+| State | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/state/start) | Write/Query the data of the Key/Value model |
+| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/pubsub/start) | Publish/Subscribe message through various Message Queue |
+| Service Invoke | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/rpc/helloworld) | Call Service through MOSN (another istio data plane) |
+| Config | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/configuration/start-apollo) | Write/Query/Subscribe the config through various Config Center |
+| Lock | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/lock/start) | Distributed lock API |
+| Sequencer | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/sequencer/start) | Generate distributed unique and incremental ID |
| File | ✅ | TODO | File API implementation |
| Binding | ✅ | TODO | Transparent data transmission API |
@@ -72,37 +72,37 @@ You can try the quickstart demos below to get started with Layotto. In addition,
| feature | status | quick start | desc |
| ---------- | :----: | :--------------------------------------------------------------: | -------------------------- |
-| API plugin | ✅ | [demo](https://mosn.io/layotto/#/en/start/api_plugin/helloworld) | You can add your own API ! |
+| API plugin | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/api_plugin/helloworld) | You can add your own API ! |
### Actuator
| feature | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------: | --------------------------------------------------- |
-| Health Check | ✅ | [demo](https://mosn.io/layotto/#/en/start/actuator/start) | Query health state of app and components in Layotto |
-| Metadata Query | ✅ | [demo](https://mosn.io/layotto/#/en/start/actuator/start) | Query metadata in Layotto/app |
+| Health Check | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/actuator/start) | Query health state of app and components in Layotto |
+| Metadata Query | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/actuator/start) | Query metadata in Layotto/app |
### Traffic Control
| feature | status | quick start | desc |
| ------------ | :----: | :-------------------------------------------------------------------: | --------------------------------------------------------------- |
-| TCP Copy | ✅ | [demo](https://mosn.io/layotto/#/en/start/network_filter/tcpcopy) | Dump the tcp traffic received by Layotto into local file system |
-| Flow Control | ✅ | [demo](https://mosn.io/layotto/#/en/start/stream_filter/flow_control) | limit access to the APIs provided by Layotto |
+| TCP Copy | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/network_filter/tcpcopy) | Dump the tcp traffic received by Layotto into local file system |
+| Flow Control | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/stream_filter/flow_control) | limit access to the APIs provided by Layotto |
### Write your bussiness logic using WASM
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | -------------------------------------------------------------------- |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by Rust to \*.wasm and run in Layotto |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto |
+| Rust | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by Rust to \*.wasm and run in Layotto |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto |
### As a FaaS(Serverless) runtime (Layotto + WebAssembly + k8s)
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | ------------------------------------------------------------------------------------------ |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto And Scheduled by k8s. |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by Rust to \*.wasm and run in Layotto And Scheduled by k8s. |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto And Scheduled by k8s. |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto And Scheduled by k8s. |
+| Rust | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by Rust to \*.wasm and run in Layotto And Scheduled by k8s. |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto And Scheduled by k8s. |
## Presentations
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/building_blocks/rpc/reference.md b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/building_blocks/rpc/reference.md
index aed1cefaaa..4496dbb33c 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/building_blocks/rpc/reference.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/building_blocks/rpc/reference.md
@@ -24,10 +24,10 @@ Layotto addresses these challenges by providing a service invocation API that ac
## How to use RPC API?
You can do RPC calls through grpc interface **InvokeService**. The API is defined in [api.go](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/pkg/grpc/api.go).
-The component needs to be configured before use. For detailed configuration instructions, see [configuration reference](https://mosn.io/layotto/#/en/configuration/overview), currently, Layotto uses MOSN layer 4 filter integrated with MOSN and runs on MOSN, so the configuration file used by Layotto is actually a MOSN configuration file. So you can also refer to the documentation of the [MOSN configuration file](https://mosn.io/en/docs/configuration/).
+The component needs to be configured before use. For detailed configuration instructions, see [configuration reference](https://mosn.io/layotto/en-US/docs/configuration/overview), currently, Layotto uses MOSN layer 4 filter integrated with MOSN and runs on MOSN, so the configuration file used by Layotto is actually a MOSN configuration file. So you can also refer to the documentation of the [MOSN configuration file](https://mosn.io/en/docs/configuration/).
### Demo 1: Hello World -- Basic Golang HTTP Server
-Quick start Document for this demo: [Hello World](https://mosn.io/layotto/#/en/start/rpc/helloworld)
+Quick start Document for this demo: [Hello World](https://mosn.io/layotto/en-US/docs/start/rpc/helloworld)
The [echoserver](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/demo/rpc/http/echoserver/echoserver.go) publish a simple interface in port 8889, the config file [example.json](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/demo/rpc/http/example.json) use mosn's routing capabilities to forward the request whose id field in the http header is equal to **HelloService:1.0** to the local port 8889, and then the [echoclient](https://github.com/mosn/layotto/blob/b66b998f50901f8bd1cce035478579c1b47f986d/demo/rpc/http/echoclient/echoclient.go) do a RPC calls though grpc interface **InvokeService**.
@@ -44,7 +44,7 @@ resp, err := cli.InvokeService(
```
### Demo 2: Dubbo JSON RPC
-Quick start Document for this demo: [Dubbo JSON RPC Example](https://mosn.io/layotto/#/en/start/rpc/dubbo_json_rpc)
+Quick start Document for this demo: [Dubbo JSON RPC Example](https://mosn.io/layotto/en-US/docs/start/rpc/dubbo_json_rpc)
The server is [dubbo-go-samples](https://github.com/apache/dubbo-go-samples), the config file [example.json](https://github.com/mosn/layotto/blob/77e0a4b2af063ff9e365a933c4735655898de369/demo/rpc/dubbo_json_rpc/example.json) use the callback function [dubbo_json_rpc](https://github.com/mosn/layotto/blob/8db7a2297bd05d1b0c4452cc980d8f6412a82f3a/components/rpc/callback/dubbo_json_rpc.go) to generate a request header.
And then,the [client](https://github.com/mosn/layotto/blob/b66b998f50901f8bd1cce035478579c1b47f986d/demo/rpc/dubbo_json_rpc/dubbo_json_client/client.go) do a RPC calls though grpc interface **InvokeService**.
@@ -65,4 +65,4 @@ resp, err := cli.InvokeService(
```
## Implementation Principle
-If you are interested in the implementation principle, or want to extend some functions, you can read [RPC design document](https://mosn.io/layotto/#/en/design/rpc/rpc-design-doc).
\ No newline at end of file
+If you are interested in the implementation principle, or want to extend some functions, you can read [RPC design document](https://mosn.io/layotto/en-US/docs/design/rpc/rpc-design-doc).
\ No newline at end of file
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/contributing-doc.md b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/contributing-doc.md
index bc537ac24a..230486df4a 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/contributing-doc.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/contributing-doc.md
@@ -1,78 +1,127 @@
-# Document Contribution Guide
+# Docs contributing guide
-Thank you for your support in Layotto!
+Thank you for your support of Layotto!
-This document describes how to modify/add documents. Documentation for this repository is written in Markdown.
+This document describes how to modify/add documents.The documents in this repository are written using Markdown syntax.
-## 1. Document Path description
+## 1. Document Path Description
-Documents are stored in the 'docs/' directory, where 'docs/en' stores English documents and 'docs/zh' stores Chinese documents.
+Documents are uniformly placed in the docs/ directory, with docs/docs storing documents, docs/blog storing blogs, and docs/i18n storing translated multilingual documents.
-![img_2.png](/img/development/doc/img_2.png)
+![img\_14.png](/img/development/doc/img_14.png)
## 2. Documentation Site Description
-Files under docs/ directory will be automatically deployed to github pages and rendered through [docsify](https://docsify.js.org/#/).
-Generally speaking, after the .md file is merged into the main branch, you can see the new page on Layotto's documentation site, and all deployment and rendering processes are done automatically.
+Files under the docs/ directory will be automatically deployed to github pages and rendered through [docusaurus](https://docusaurus.io/).
-## 3. How to Add a New Document
-### step 1. Write a new markdown file
-To add a document, create a folder and a .md file based on the directory structure. For example, if you want to write a design document for the distributed lock API, just create a new directory:
+Generally speaking, after the .md file is merged into the main branch, you will be able to see the new page on the Layotto documentation site, and the deployment and rendering processes are automatic.
-![img_1.png](/img/development/doc/img_1.png)
+### Local startup documentation site
-### step 2. Update the sidebar
-Remember to update the sidebar after adding new documents or revising existing documents.
+After writing the document locally, in order to quickly preview the effect, you can also refer to [docusaurus_installation](https://docusaurus.io/docs/installation) to start the documentation site locally.
-Chinese sidebar: 'docs/zh/_sidebar.md'
+Here is a summary of the steps:
-English sidebar: 'docs/_sidebar.md'
+step 1. Install Docusaurus, make sure the Node.js version is 18.0 or above
-### step 3. Submit a Pull request
-After writing the above Markdown files, submitting pr, and merging it into the main branch, new documents are now available on the official website.
+```shell
+npm install
+```
+
+step 2. Compile, compile the documents under 'docs' into static HTML files, and place the compiled files under 'docs/build'
+
+```shell
+npm run build --config docs
+```
+
+Step 3. Start the documentation site
+
+```shell
+# Run npm run serve --config docs in the layotto project root directory
+npm run serve --config docs
+```
+
+step 3. Open http://localhost:3000/ to view the documentation site.
-## 4. Tips on Hyperlinks
+## 3. What needs to be done to add a document
-One annoying problem with Docsify is that the use of hyperlinks is confusing.
+### step 1. Create a markdown document
-The hyperlink mentioned here is the kind of links that will jump to other documents once clicked, such as the following:
+When you need to add a new document, you can create a new folder according to the directory structure, and create a .md file.For example, if you want to write the design document for distributed lock API, create directories under both Chinese and English directories:
-![image](https://user-images.githubusercontent.com/26001097/132220354-db2b6ad0-58e4-46ed-b005-71d8134f725b.png)
+![img\_8.png](/img/development/doc/img_8.png)
+![img\_9.png](/img/development/doc/img_9.png)
+
+You can use Crowdin for auxiliary translation. After writing the Chinese documentation, use npm run crowdin:upload to upload the Chinese documentation to the Crowdin platform. Find the Layotto project on the platform, translate it, and download it to the local response directory.[crowdin reference documentation](https://docusaurus.io/docs/i18n/crowdin)
+
+### step 2. Add the document to the sidebar
+
+After adding new documents and finishing the content, remember to update the sidebar.
+
+The Chinese sidebar is in docs/sidebars.js
+
+The English sidebar needs to perform the following:
+
+```shell
+npm run write-translations -- --locale en-US
+```
-### Incorrect Syntax
-If you try to create a hyperlink with a relative path, then a 404 page will appear once you clicked it:
+Then modify the corresponding sidebar content in docs/i18n/en-US/docusaurus-plugin-content-docs/current.json
-![img_6.png](/img/development/doc/img_6.png)
+![img\_10.png](/img/development/doc/img_10.png)
-![img_7.png](/img/development/doc/img_7.png)
+### step 3. (optional) Start the local documentation site, validate
-### Correct Syntax
+You can use docusaurus to start a local documentation server and view the editing effects
-There are two suggested ways to write hyperlinks:
+### Step 4. Submit PR, merge into the code repository
-a. Use a path relative to the 'docs/' directory. Such as:
+After finishing the above markdown file, submitting a PR, merging into the master branch, opening the official website will show the new document.
-![img_5.png](/img/development/doc/img_5.png)
+## 4. Common pitfall: hyperlinks in documents
-b. Use the full Url. Such as:
+There is an annoying issue with using Docusaurus to build a website: hyperlinks look very strange.
+
+The hyperlinks mentioned here are links that, when clicked, will redirect to other documents, such as the following:
+
+![img\_4.png](/img/development/doc/img_4.png)
+
+### 4.1. Incorrect Writing
+
+If you try to use a relative path to write a hyperlink URL, you will find that clicking on it in the website will lead to a 404 error:
+
+![img\_6.png](/img/development/doc/img_6.png)
+
+![img\_7.png](/img/development/doc/img_7.png)
+
+### 4.2. Correct Writing
+
+There are two correct ways to use hyperlinks:
+
+a. Use absolute path relative to the docs/ directory.For example:
+
+![img\_11.png](/img/development/doc/img_11.png)
+
+Write in this way, warning in local compilers will be alerted, not ignored, and automatically processed into available hyperlinks when compiled.
+
+b. Use completed Url。For example:
```markdown
see [runtime_config.json](https://github.com/mosn/layotto/blob/main/configs/runtime_config.json):
```
-## 5. Tips on image links
-Images are stored under docs/img/ directory for the purpose that the Docsify site can access it
+## 5. Image directory to image link
+
+Image is placed in the docs/static/img/ directory.This is in order to allow the docusaurus site to reach and docusaurus compiles the folders below static's top:
-![img.png](/img/development/doc/img.png)
+![img12.png](/img/development/doc/img_12.png)
-It is recommended to use the full path when referencing images in documents, to avoid a bunch of messy path problems.
+Local images with statics in the document recommend an absolute path /img if they are a network image, and a full image URL is sufficient.
-For example, when referencing the images under the main branch, the prefix of the image url is `raw.githubusercontent.com/mosn/layotto/main/docs/img/xxx`
+For example, in the case of images with the mains branch, the prefix for the image Url is `raw.githubusercontent.com/mosn/layotto/main/docs/img/xxx`
-and the Markdown phrase referring to an image will be :
+The Markdown syntax is as follows:
```markdown
![Architecture](https://raw.githubusercontent.com/mosn/layotto/main/docs/img/runtime-architecture.png)
```
-
-Note: Relative paths can also be used, but you may encounter many problems. For example, the relative path logic of the `` tag and `![xxx](url)` tag are different; for example, users may access the README through different paths, so it's hard for you to define the relative path. To avoid these problems, it's recommended to use a full url.
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/developing-api.md b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/developing-api.md
index 0a4bce2db8..6914cf0f2f 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/developing-api.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/developing-api.md
@@ -83,7 +83,7 @@ Before the operation, explain what effect this demo want to achieve with illustr
Counter-example: The document only writes operation steps 1234, and users do not understand what they want to do.
#### 2.3.2. Using document
-The documentation path is under "Reference - API reference", for example, see [State API](https://mosn.io/layotto/#/en/api_reference/state/reference)
+The documentation path is under "Reference - API reference", for example, see [State API](https://mosn.io/layotto/en-US/docs/api_reference/state/reference)
>The study found that Dapr has a lot of documentation, such as the State API:
>
@@ -169,13 +169,13 @@ Clear comment should to be written :
Post a document link if there is a design document or a proposal issue link if there is no document
#### 2.3.3. This document describes the general CONFIGURATION of the API
-For example: https://mosn.io/layotto/#/zh/component_specs/state/common
+For example: https://mosn.io/layotto/docs/component_specs/state/common
- Configuration file structure
- Explain the general configuration of the API, such as keyPrefix
#### 2.3.4. Documents that describe component configuration
-For example: https://mosn.io/layotto/#/zh/component_specs/state/redis
+For example: https://mosn.io/layotto/docs/component_specs/state/redis
- Configuration item description for this component
- If you want to start this component and run the demo, how to start it
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/start-from-zero.md b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/start-from-zero.md
index 44c1af7707..25cb4698bd 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/start-from-zero.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/development/start-from-zero.md
@@ -6,7 +6,7 @@ This paper is a new hand-walker for the purpose of attempting to participate in
Learn what the project was. Use quickstart to run hello around the world by reference to quickstart demo like:
-- [Use configuration API](https://mosn.io/layotto/#/en/start/configuration/start-apollo)
+- [Use configuration API](https://mosn.io/layotto/en-US/docs/start/configuration/start-apollo)
- [State API for status management](https://mosn.io/layotto/#/start/state/start)
- [Use distributed lock API](https://mosn.io/layotto/#/start/lock/start)
@@ -14,7 +14,7 @@ Tips: Ask issues in github, if a bug is started during the process.
Tips: If you feel that a document is not written in sufficient detail to add it, or the document is written incorrectly, you can make a PR.This is probably the fastest route to contribor :)
-(可选)扩展阅读:有一些介绍项目的演讲视频,比如[《MOSN 子项目 Layotto:开启服务网格+应用运行时新篇章》](https://mosn.io/layotto/#/zh/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index) ,
+(可选)扩展阅读:有一些介绍项目的演讲视频,比如[《MOSN 子项目 Layotto:开启服务网格+应用运行时新篇章》](https://mosn.io/layotto/docs/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index) ,
比如 [《Service Mesh落地之后:为 sidecar 注入灵魂》](https://www.bilibili.com/video/BV1RL4y1b7U9?from=search\&seid=1492521025214444985\&spm_id_from=333.337.0.0)
。But looking at videos takes time, lazy to run more than a few demo experiments, quickstart more brutally
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/sdk_reference/go/start.md b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/sdk_reference/go/start.md
index 0ce299e4a6..743e685610 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/sdk_reference/go/start.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/sdk_reference/go/start.md
@@ -193,7 +193,7 @@ returns:
- next_id: The distributed id.
-> For detailed useage of interface, you can refer to the [API design docs](https://mosn.io/layotto/#/en/design/sequencer/design)
+> For detailed useage of interface, you can refer to the [API design docs](https://mosn.io/layotto/en-US/docs/design/sequencer/design)
> Perhaps the document has not been supplemented yet, you can still view the [relecant code comments](https://github.com/mosn/layotto/blob/6f6508b11783f1e4fa947ff47632e74064333384/spec/proto/runtime/v1/runtime.pb.go#L1118-L1131)
The relevant parameter configuration parameters are as follows:
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/start/faas/start.md b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/start/faas/start.md
index b2045aafa3..aa9d6266bf 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-docs/current/start/faas/start.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-docs/current/start/faas/start.md
@@ -59,7 +59,7 @@ The example only needs a Redis server that can be used normally. As for where it
**Note2: Need to modify the path of the wasm file in `./demo/faas/config.json` to `/home/docker/function_1.wasm` and `/home/docker/function_2.wasm`**
-**Note3: We can also load WASM file dynamically. For details, see [WASM Dynamic Load](https://mosn.io/layotto/#/en/start/wasm/start?id=dynamic-load)**
+**Note3: We can also load WASM file dynamically. For details, see [WASM Dynamic Load](https://mosn.io/layotto/en-US/docs/start/wasm/start?id=dynamic-load)**
#### D、Compile & install containerd-shim-layotto-v2
diff --git a/docs/i18n/en-US/docusaurus-plugin-content-pages/index.md b/docs/i18n/en-US/docusaurus-plugin-content-pages/index.md
index c403519ef1..d917c4230a 100644
--- a/docs/i18n/en-US/docusaurus-plugin-content-pages/index.md
+++ b/docs/i18n/en-US/docusaurus-plugin-content-pages/index.md
@@ -52,12 +52,12 @@ You can try the quickstart demos below to get started with Layotto. In addition,
| API | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------------------: | -------------------------------------------------------------- |
-| State | ✅ | [demo](https://mosn.io/layotto/#/en/start/state/start) | Write/Query the data of the Key/Value model |
-| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/#/en/start/pubsub/start) | Publish/Subscribe message through various Message Queue |
-| Service Invoke | ✅ | [demo](https://mosn.io/layotto/#/en/start/rpc/helloworld) | Call Service through MOSN (another istio data plane) |
-| Config | ✅ | [demo](https://mosn.io/layotto/#/en/start/configuration/start-apollo) | Write/Query/Subscribe the config through various Config Center |
-| Lock | ✅ | [demo](https://mosn.io/layotto/#/en/start/lock/start) | Distributed lock API |
-| Sequencer | ✅ | [demo](https://mosn.io/layotto/#/en/start/sequencer/start) | Generate distributed unique and incremental ID |
+| State | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/state/start) | Write/Query the data of the Key/Value model |
+| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/pubsub/start) | Publish/Subscribe message through various Message Queue |
+| Service Invoke | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/rpc/helloworld) | Call Service through MOSN (another istio data plane) |
+| Config | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/configuration/start-apollo) | Write/Query/Subscribe the config through various Config Center |
+| Lock | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/lock/start) | Distributed lock API |
+| Sequencer | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/sequencer/start) | Generate distributed unique and incremental ID |
| File | ✅ | TODO | File API implementation |
| Binding | ✅ | TODO | Transparent data transmission API |
@@ -72,37 +72,37 @@ You can try the quickstart demos below to get started with Layotto. In addition,
| feature | status | quick start | desc |
| ---------- | :----: | :--------------------------------------------------------------: | -------------------------- |
-| API plugin | ✅ | [demo](https://mosn.io/layotto/#/en/start/api_plugin/helloworld) | You can add your own API ! |
+| API plugin | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/api_plugin/helloworld) | You can add your own API ! |
### Actuator
| feature | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------: | --------------------------------------------------- |
-| Health Check | ✅ | [demo](https://mosn.io/layotto/#/en/start/actuator/start) | Query health state of app and components in Layotto |
-| Metadata Query | ✅ | [demo](https://mosn.io/layotto/#/en/start/actuator/start) | Query metadata in Layotto/app |
+| Health Check | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/actuator/start) | Query health state of app and components in Layotto |
+| Metadata Query | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/actuator/start) | Query metadata in Layotto/app |
### Traffic Control
| feature | status | quick start | desc |
| ------------ | :----: | :-------------------------------------------------------------------: | --------------------------------------------------------------- |
-| TCP Copy | ✅ | [demo](https://mosn.io/layotto/#/en/start/network_filter/tcpcopy) | Dump the tcp traffic received by Layotto into local file system |
-| Flow Control | ✅ | [demo](https://mosn.io/layotto/#/en/start/stream_filter/flow_control) | limit access to the APIs provided by Layotto |
+| TCP Copy | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/network_filter/tcpcopy) | Dump the tcp traffic received by Layotto into local file system |
+| Flow Control | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/stream_filter/flow_control) | limit access to the APIs provided by Layotto |
### Write your bussiness logic using WASM
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | -------------------------------------------------------------------- |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by Rust to \*.wasm and run in Layotto |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/en/start/wasm/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto |
+| Rust | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by Rust to \*.wasm and run in Layotto |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/wasm/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto |
### As a FaaS(Serverless) runtime (Layotto + WebAssembly + k8s)
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | ------------------------------------------------------------------------------------------ |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto And Scheduled by k8s. |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by Rust to \*.wasm and run in Layotto And Scheduled by k8s. |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/en/start/faas/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto And Scheduled by k8s. |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by TinyGo to \*.wasm and run in Layotto And Scheduled by k8s. |
+| Rust | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by Rust to \*.wasm and run in Layotto And Scheduled by k8s. |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/en-US/docs/start/faas/start) | Compile Code written by AssemblyScript to \*.wasm and run in Layotto And Scheduled by k8s. |
## Presentations
diff --git a/docs/src/pages/index.md b/docs/src/pages/index.md
index defd6ba739..d1037763f5 100644
--- a/docs/src/pages/index.md
+++ b/docs/src/pages/index.md
@@ -24,7 +24,7 @@ Mesh 两者的能力结合起来,无论你是使用 MOSN 还是 Envoy 或者
此外,随着探索实践,我们发现 sidecar 能做的事情远不止于此。 通过引入[WebAssembly](https://en.wikipedia.org/wiki/WebAssembly) ,我们正在尝试将 Layotto 做成 FaaS (Function as a service) 的运行时容器 。
-如果您对诞生背景感兴趣,可以看下[这篇演讲](https://mosn.io/layotto/#/zh/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index)
+如果您对诞生背景感兴趣,可以看下[这篇演讲](https://mosn.io/layotto/docs/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index)
。
## 功能
@@ -59,64 +59,64 @@ Layotto 提供了多种语言版本的 SDK,SDK 通过 gRPC 与 Layotto 进行
| API | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------------------: | -------------------------------- |
-| State | ✅ | [demo](https://mosn.io/layotto/#/zh/start/state/start) | 提供读写 KV 模型存储的数据的能力 |
-| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/#/zh/start/pubsub/start) | 提供消息的发布/订阅能力 |
-| Service Invoke | ✅ | [demo](https://mosn.io/layotto/#/zh/start/rpc/helloworld) | 通过 MOSN 进行服务调用 |
-| Config | ✅ | [demo](https://mosn.io/layotto/#/zh/start/configuration/start-apollo) | 提供配置增删改查及订阅的能力 |
-| Lock | ✅ | [demo](https://mosn.io/layotto/#/zh/start/lock/start) | 提供 lock/unlock 分布式锁的实现 |
-| Sequencer | ✅ | [demo](https://mosn.io/layotto/#/zh/start/sequencer/start) | 提供获取分布式自增 ID 的能力 |
-| File | ✅ | [demo](https://mosn.io/layotto/#/zh/start/file/start) | 提供访问文件的能力 |
+| State | ✅ | [demo](https://mosn.io/layotto/docs/start/state/start) | 提供读写 KV 模型存储的数据的能力 |
+| Pub/Sub | ✅ | [demo](https://mosn.io/layotto/docs/start/pubsub/start) | 提供消息的发布/订阅能力 |
+| Service Invoke | ✅ | [demo](https://mosn.io/layotto/docs/start/rpc/helloworld) | 通过 MOSN 进行服务调用 |
+| Config | ✅ | [demo](https://mosn.io/layotto/docs/start/configuration/start-apollo) | 提供配置增删改查及订阅的能力 |
+| Lock | ✅ | [demo](https://mosn.io/layotto/docs/start/lock/start) | 提供 lock/unlock 分布式锁的实现 |
+| Sequencer | ✅ | [demo](https://mosn.io/layotto/docs/start/sequencer/start) | 提供获取分布式自增 ID 的能力 |
+| File | ✅ | [demo](https://mosn.io/layotto/docs/start/file/start) | 提供访问文件的能力 |
| Binding | ✅ | TODO | 提供透传数据的能力 |
### Service Mesh
| feature | status | quick start | desc |
| ------- | :----: | :----------------------------------------------------: | ----------------------------- |
-| Istio | ✅ | [demo](https://mosn.io/layotto/#/zh/start/istio/) | 跟 Istio 集成,作为 Istio 的数据面 |
+| Istio | ✅ | [demo](https://mosn.io/layotto/docs/start/istio/) | 跟 Istio 集成,作为 Istio 的数据面 |
### 可扩展性
| feature | status | quick start | desc |
| -------- | :----: | :--------------------------------------------------------------: | --------------------------- |
-| API 插件 | ✅ | [demo](https://mosn.io/layotto/#/zh/start/api_plugin/helloworld) | 为 Layotto 添加您自己的 API |
+| API 插件 | ✅ | [demo](https://mosn.io/layotto/docs/start/api_plugin/helloworld) | 为 Layotto 添加您自己的 API |
### 可观测性
| feature | status | quick start | desc |
| ---------- | :----: | :---------------------------------------------------------: | ----------------------- |
-| Skywalking | ✅ | [demo](https://mosn.io/layotto/#/zh/start/trace/skywalking) | Layotto 接入 Skywalking |
+| Skywalking | ✅ | [demo](https://mosn.io/layotto/docs/start/trace/skywalking) | Layotto 接入 Skywalking |
### Actuator
| feature | status | quick start | desc |
| -------------- | :----: | :-------------------------------------------------------: | ------------------------------------- |
-| Health Check | ✅ | [demo](https://mosn.io/layotto/#/zh/start/actuator/start) | 查询 Layotto 依赖的各种组件的健康状态 |
-| Metadata Query | ✅ | [demo](https://mosn.io/layotto/#/zh/start/actuator/start) | 查询 Layotto 或应用对外暴露的元信息 |
+| Health Check | ✅ | [demo](https://mosn.io/layotto/docs/start/actuator/start) | 查询 Layotto 依赖的各种组件的健康状态 |
+| Metadata Query | ✅ | [demo](https://mosn.io/layotto/docs/start/actuator/start) | 查询 Layotto 或应用对外暴露的元信息 |
### 流量控制
| feature | status | quick start | desc |
| ------------ | :----: | :-------------------------------------------------------------------: | ------------------------------------------ |
-| TCP Copy | ✅ | [demo](https://mosn.io/layotto/#/zh/start/network_filter/tcpcopy) | 把 Layotto 收到的 TCP 数据 dump 到本地文件 |
-| Flow Control | ✅ | [demo](https://mosn.io/layotto/#/zh/start/stream_filter/flow_control) | 限制访问 Layotto 对外提供的 API |
+| TCP Copy | ✅ | [demo](https://mosn.io/layotto/docs/start/network_filter/tcpcopy) | 把 Layotto 收到的 TCP 数据 dump 到本地文件 |
+| Flow Control | ✅ | [demo](https://mosn.io/layotto/docs/start/stream_filter/flow_control) | 限制访问 Layotto 对外提供的 API |
### 在 Sidecar 中用 WebAssembly (WASM) 写业务逻辑
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | ---------------------------------------------------------------- |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/zh/start/wasm/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/zh/start/wasm/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/zh/start/wasm/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/docs/start/wasm/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
+| Rust | ✅ | [demo](https://mosn.io/layotto/docs/start/wasm/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/docs/start/wasm/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上 |
### 作为 Serverless 的运行时,通过 WebAssembly (WASM) 写 FaaS
| feature | status | quick start | desc |
| -------------- | :----: | :---------------------------------------------------: | ----------------------------------------------------------------------------------------- |
-| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/#/zh/start/faas/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
-| Rust | ✅ | [demo](https://mosn.io/layotto/#/zh/start/faas/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
-| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/#/zh/start/faas/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
+| Go (TinyGo) | ✅ | [demo](https://mosn.io/layotto/docs/start/faas/start) | 把用 TinyGo 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
+| Rust | ✅ | [demo](https://mosn.io/layotto/docs/start/faas/start) | 把用 Rust 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
+| AssemblyScript | ✅ | [demo](https://mosn.io/layotto/docs/start/faas/start) | 把用 AssemblyScript 开发的代码编译成 \*.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。 |
## Landscapes
diff --git a/docs/static/img/development/doc/img_10.png b/docs/static/img/development/doc/img_10.png
new file mode 100644
index 0000000000..1551e1263e
Binary files /dev/null and b/docs/static/img/development/doc/img_10.png differ
diff --git a/docs/static/img/development/doc/img_11.png b/docs/static/img/development/doc/img_11.png
new file mode 100644
index 0000000000..817d9b49d5
Binary files /dev/null and b/docs/static/img/development/doc/img_11.png differ
diff --git a/docs/static/img/development/doc/img_12.png b/docs/static/img/development/doc/img_12.png
new file mode 100644
index 0000000000..9c54bffa5a
Binary files /dev/null and b/docs/static/img/development/doc/img_12.png differ
diff --git a/docs/static/img/development/doc/img_14.png b/docs/static/img/development/doc/img_14.png
new file mode 100644
index 0000000000..ca3a80af9c
Binary files /dev/null and b/docs/static/img/development/doc/img_14.png differ
diff --git a/docs/static/img/development/doc/img_8.png b/docs/static/img/development/doc/img_8.png
new file mode 100644
index 0000000000..74096a707a
Binary files /dev/null and b/docs/static/img/development/doc/img_8.png differ
diff --git a/docs/static/img/development/doc/img_9.png b/docs/static/img/development/doc/img_9.png
new file mode 100644
index 0000000000..caed706457
Binary files /dev/null and b/docs/static/img/development/doc/img_9.png differ
diff --git a/spec/proto/runtime/v1/README.md b/spec/proto/runtime/v1/README.md
index 11a4f06891..dcee90f112 100644
--- a/spec/proto/runtime/v1/README.md
+++ b/spec/proto/runtime/v1/README.md
@@ -1,3 +1,3 @@
## How to compile these proto files into golang code and documentation
-Please visit https://mosn.io/layotto/#/en/api_reference/how_to_generate_api_doc
\ No newline at end of file
+Please visit https://mosn.io/layotto/en-US/docs/api_reference/how_to_generate_api_doc
\ No newline at end of file