-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
97 lines (94 loc) · 31.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!doctype html>
<html lang="zh-Hans" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.4.0">
<title data-rh="true">Layotto (L8): To be the next layer of OSI layer 7 | Layotto</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://layotto.github.io/layotto/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://layotto.github.io/layotto/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://layotto.github.io/layotto/"><meta data-rh="true" property="og:locale" content="zh_Hans"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="true" name="docusaurus_locale" content="zh-Hans"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="zh-Hans"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Layotto (L8): To be the next layer of OSI layer 7 | Layotto"><meta data-rh="true" name="description" content="Layotto Env Pipeline 🌊"><meta data-rh="true" property="og:description" content="Layotto Env Pipeline 🌊"><link data-rh="true" rel="icon" href="https://gw.alipayobjects.com/zos/bmw-prod/65518bfc-8ba5-4234-a5c5-2bc065e3a5f0.svg"><link data-rh="true" rel="canonical" href="https://layotto.github.io/layotto/"><link data-rh="true" rel="alternate" href="https://layotto.github.io/layotto/en-US/" hreflang="en-US"><link data-rh="true" rel="alternate" href="https://layotto.github.io/layotto/" hreflang="zh-Hans"><link data-rh="true" rel="alternate" href="https://layotto.github.io/layotto/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://B0I4Q5CLN8-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/layotto/</span> </p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),o=window.location.pathname,s="/"===o.substr(-1)?o:o+"/";e.innerHTML=s}document.addEventListener("DOMContentLoaded",(function(){void 0===window.docusaurus&&insertBanner()}))</script><link rel="alternate" type="application/rss+xml" href="/layotto/blog/rss.xml" title="Layotto RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/layotto/blog/atom.xml" title="Layotto Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Layotto" href="/layotto/opensearch.xml"><link rel="stylesheet" href="/layotto/assets/css/styles.a91448ad.css">
<script src="/layotto/assets/js/runtime~main.4c808966.js" defer="defer"></script>
<script src="/layotto/assets/js/main.4e3ef75f.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="跳到主要内容"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">跳到主要内容</a></div><nav aria-label="主导航" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="切换导航栏" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/layotto/"><div class="navbar__logo"><img src="https://gw.alipayobjects.com/zos/bmw-prod/65518bfc-8ba5-4234-a5c5-2bc065e3a5f0.svg" alt="Layotto Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="https://gw.alipayobjects.com/zos/bmw-prod/65518bfc-8ba5-4234-a5c5-2bc065e3a5f0.svg" alt="Layotto Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate"></b></a><a class="navbar__item navbar__link" href="/layotto/docs/">文档</a><a class="navbar__item navbar__link" href="/layotto/blog">博客</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link" href="/layotto/"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>简体中文</a><ul class="dropdown__menu"><li><a href="/layotto/en-US/" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="en-US">English</a></li><li><a href="/layotto/" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="zh-Hans">简体中文</a></li></ul></div><a href="https://github.com/mosn/layotto" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="切换浅色/暗黑模式(当前为浅色模式)" aria-label="切换浅色/暗黑模式(当前为浅色模式)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="搜索"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">搜索</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><main class="container container--fluid margin-vert--lg"><div class="row mdxPageWrapper_j9I6"><div class="col col--8"><article><h1>Layotto (L8): To be the next layer of OSI layer 7</h1>
<img src="https://gw.alipayobjects.com/zos/bmw-prod/65518bfc-8ba5-4234-a5c5-2bc065e3a5f0.svg" height="120px">
<p><a href="https://github.com/mosn/layotto/actions/workflows/proto-checker.yml" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" src="https://github.com/mosn/layotto/actions/workflows/proto-checker.yml/badge.svg" alt="Layotto Env Pipeline 🌊" class="img_ev3q"></a>
<a href="https://github.com/mosn/layotto/actions/workflows/layotto-ci.yml" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" src="https://github.com/mosn/layotto/actions/workflows/layotto-ci.yml/badge.svg" alt="Layotto Dev Pipeline 🌊" class="img_ev3q"></a></p>
<p><a href="https://godoc.org/mosn.io/layotto" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" src="https://godoc.org/mosn.io/layotto?status.svg" alt="GoDoc" class="img_ev3q"></a>
<a href="https://goreportcard.com/report/mosn.io/layotto" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" src="https://goreportcard.com/badge/github.com/mosn/layotto" alt="Go Report Card" class="img_ev3q"></a>
<a href="https://codecov.io/gh/mosn/layotto" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" src="https://codecov.io/gh/mosn/layotto/branch/main/graph/badge.svg?token=10RxwSV6Sz" alt="codecov" class="img_ev3q"></a>
<a href="http://isitmaintained.com/project/mosn/layotto" target="_blank" rel="noopener noreferrer" title="Average time to resolve an issue"><img decoding="async" loading="lazy" src="http://isitmaintained.com/badge/resolution/mosn/layotto.svg" alt="Average time to resolve an issue" class="img_ev3q"></a></p>
<p>Layotto(/leɪˈɒtəʊ/) 是一款使用 Golang 开发的应用运行时, 旨在帮助开发人员快速构建云原生应用,帮助应用和基础设施解耦。它为应用提供了各种分布式能力,比如状态管理,配置管理,事件发布订阅等能力,以简化应用的开发。</p>
<p>Layotto 以开源的 <a href="https://github.com/mosn/mosn" target="_blank" rel="noopener noreferrer">MOSN</a> 为底座,在提供分布式能力以外,提供了 Service Mesh 对于流量的管控能力。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="诞生背景">诞生背景<a class="hash-link" aria-label="诞生背景的直接链接" title="诞生背景的直接链接" href="/layotto/#诞生背景"></a></h2>
<p>Layotto 希望可以把 <a href="https://www.infoq.com/articles/multi-runtime-microservice-architecture/" target="_blank" rel="noopener noreferrer">Multi-Runtime</a> 跟 Service
Mesh 两者的能力结合起来,无论你是使用 MOSN 还是 Envoy 或者其他产品作为 Service Mesh 的数据面,都可以在不增加新的 sidecar 的前提下,使用 Layotto 为这些数据面追加 Runtime 的能力。</p>
<p>例如,通过为 MOSN 添加 Runtime 能力,一个 Layotto 进程可以<a href="/layotto/docs/start/istio/start">既作为 istio 的数据面</a> 又提供各种 Runtime API(例如 Configuration API,Pub/Sub API 等)</p>
<p>此外,随着探索实践,我们发现 sidecar 能做的事情远不止于此。 通过引入<a href="https://en.wikipedia.org/wiki/WebAssembly" target="_blank" rel="noopener noreferrer">WebAssembly</a> ,我们正在尝试将 Layotto 做成 FaaS (Function as a service) 的运行时容器 。</p>
<p>如果您对诞生背景感兴趣,可以看下<a href="https://mosn.io/layotto/#/zh/blog/mosn-subproject-layotto-opening-a-new-chapter-in-service-grid-application-runtime/index" target="_blank" rel="noopener noreferrer">这篇演讲</a>
。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="功能">功能<a class="hash-link" aria-label="功能的直接链接" title="功能的直接链接" href="/layotto/#功能"></a></h2>
<ul>
<li>服务通信</li>
<li>服务治理,例如流量的劫持和观测,服务限流等</li>
<li><a href="/layotto/docs/start/istio/start">作为 istio 的数据面</a></li>
<li>配置管理</li>
<li>状态管理</li>
<li>事件发布订阅</li>
<li>健康检查、查询运行时元数据</li>
<li>基于 WASM 的多语言编程</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="工程架构">工程架构<a class="hash-link" aria-label="工程架构的直接链接" title="工程架构的直接链接" href="/layotto/#工程架构"></a></h2>
<p>如下图架构图所示,Layotto 以开源 MOSN 作为底座,在提供了网络层管理能力的同时提供了分布式能力,业务可以通过轻量级的 SDK 直 接与 Layotto 进行交互,而无需关注后端的具体的基础设施。</p>
<p>Layotto 提供了多种语言版本的 SDK,SDK 通过 gRPC 与 Layotto 进行交互。</p>
<p>如果您想把应用部署到不同的云平台(例如将阿里云上的应用部署到 AWS),您只需要在 Layotto 提供的 <a href="https://github.com/mosn/layotto/blob/main/configs/runtime_config.json" target="_blank" rel="noopener noreferrer">配置文件</a>
里修改配置、指定自己想用的基础设施类型,不需要修改应用的代码就能让应用拥有"跨云部署"能力,大大提高了程序的可移植性。</p>
<img src="https://gw.alipayobjects.com/mdn/rms_5891a1/afts/img/A*oRkFR63JB7cAAAAAAAAAAAAAARQnAQ">
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="快速开始">快速开始<a class="hash-link" aria-label="快速开始的直接链接" title="快速开始的直接链接" href="/layotto/#快速开始"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-started-with-layotto">Get started with Layotto<a class="hash-link" aria-label="Get started with Layotto的直接链接" title="Get started with Layotto的直接链接" href="/layotto/#get-started-with-layotto"></a></h3>
<p>您可以尝试以下 Quickstart demo,体验 Layotto 的功能;或者体验<a href="/layotto/docs/start/lab">线上实验室</a></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="api">API<a class="hash-link" aria-label="API的直接链接" title="API的直接链接" href="/layotto/#api"></a></h3>
<table><thead><tr><th>API</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>State</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/state/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>提供读写 KV 模型存储的数据的能力</td></tr><tr><td>Pub/Sub</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/pubsub/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>提供消息的发布/订阅能力</td></tr><tr><td>Service Invoke</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/rpc/helloworld" target="_blank" rel="noopener noreferrer">demo</a></td><td>通过 MOSN 进行服务调用</td></tr><tr><td>Config</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/configuration/start-apollo" target="_blank" rel="noopener noreferrer">demo</a></td><td>提供配置增删改查及订阅的能力</td></tr><tr><td>Lock</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/lock/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>提供 lock/unlock 分布式锁的实现</td></tr><tr><td>Sequencer</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/sequencer/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>提供获取分布式自增 ID 的能力</td></tr><tr><td>File</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/file/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>提供访问文件的能力</td></tr><tr><td>Binding</td><td style="text-align:center">✅</td><td style="text-align:center">TODO</td><td>提供透传数据的能力</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="service-mesh">Service Mesh<a class="hash-link" aria-label="Service Mesh的直接链接" title="Service Mesh的直接链接" href="/layotto/#service-mesh"></a></h3>
<table><thead><tr><th>feature</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>Istio</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/istio/" target="_blank" rel="noopener noreferrer">demo</a></td><td>跟 Istio 集成,作为 Istio 的数据面</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="可扩展性">可扩展性<a class="hash-link" aria-label="可扩展性的直接链接" title="可扩展性的直接链接" href="/layotto/#可扩展性"></a></h3>
<table><thead><tr><th>feature</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>API 插件</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/api_plugin/helloworld" target="_blank" rel="noopener noreferrer">demo</a></td><td>为 Layotto 添加您自己的 API</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="可观测性">可观测性<a class="hash-link" aria-label="可观测性的直接链接" title="可观测性的直接链接" href="/layotto/#可观测性"></a></h3>
<table><thead><tr><th>feature</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>Skywalking</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/trace/skywalking" target="_blank" rel="noopener noreferrer">demo</a></td><td>Layotto 接入 Skywalking</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="actuator">Actuator<a class="hash-link" aria-label="Actuator的直接链接" title="Actuator的直接链接" href="/layotto/#actuator"></a></h3>
<table><thead><tr><th>feature</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>Health Check</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/actuator/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>查询 Layotto 依 赖的各种组件的健康状态</td></tr><tr><td>Metadata Query</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/actuator/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>查询 Layotto 或应用对外暴露的元信息</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="流量控制">流量控制<a class="hash-link" aria-label="流量控制的直接链接" title="流量控制的直接链接" href="/layotto/#流量控制"></a></h3>
<table><thead><tr><th>feature</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>TCP Copy</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/network_filter/tcpcopy" target="_blank" rel="noopener noreferrer">demo</a></td><td>把 Layotto 收到的 TCP 数据 dump 到本地文件</td></tr><tr><td>Flow Control</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/stream_filter/flow_control" target="_blank" rel="noopener noreferrer">demo</a></td><td>限制访问 Layotto 对外提供的 API</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="在-sidecar-中用-webassembly-wasm-写业务逻辑">在 Sidecar 中用 WebAssembly (WASM) 写业务逻辑<a class="hash-link" aria-label="在 Sidecar 中用 WebAssembly (WASM) 写业务逻辑的直接链接" title="在 Sidecar 中用 WebAssembly (WASM) 写业务逻辑的直接链接" href="/layotto/#在-sidecar-中用-webassembly-wasm-写业务逻辑"></a></h3>
<table><thead><tr><th>feature</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>Go (TinyGo)</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/wasm/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>把用 TinyGo 开发的代码编译成 *.wasm 文件跑在 Layotto 上</td></tr><tr><td>Rust</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/wasm/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>把用 Rust 开发的代码编译成 *.wasm 文件跑在 Layotto 上</td></tr><tr><td>AssemblyScript</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/wasm/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>把用 AssemblyScript 开发的代码编译成 *.wasm 文件跑在 Layotto 上</td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="作为-serverless-的运行时通过-webassembly-wasm-写-faas">作为 Serverless 的运行时,通过 WebAssembly (WASM) 写 FaaS<a class="hash-link" aria-label="作为 Serverless 的运行时,通过 WebAssembly (WASM) 写 FaaS的直接链接" title="作为 Serverless 的运行时,通过 WebAssembly (WASM) 写 FaaS的直接链接" href="/layotto/#作为-serverless-的运行时通过-webassembly-wasm-写-faas"></a></h3>
<table><thead><tr><th>feature</th><th style="text-align:center">status</th><th style="text-align:center">quick start</th><th>desc</th></tr></thead><tbody><tr><td>Go (TinyGo)</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/faas/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>把用 TinyGo 开发的代码编译成 *.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。</td></tr><tr><td>Rust</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/faas/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>把用 Rust 开发的代码编译成 *.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。</td></tr><tr><td>AssemblyScript</td><td style="text-align:center">✅</td><td style="text-align:center"><a href="https://mosn.io/layotto/#/zh/start/faas/start" target="_blank" rel="noopener noreferrer">demo</a></td><td>把用 AssemblyScript 开发的代码编译成 *.wasm 文件跑在 Layotto 上,并且使用 k8s 进行调度。</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="landscapes">Landscapes<a class="hash-link" aria-label="Landscapes的直接链接" title="Landscapes的直接链接" href="/layotto/#landscapes"></a></h2>
<p align="center"></p><p><img src="https://landscape.cncf.io/images/left-logo.svg" width="150"> <img src="https://landscape.cncf.io/images/right-logo.svg" width="200"></p><br><br><p>Layotto enriches the <a href="https://landscape.cncf.io/serverless">CNCF CLOUD NATIVE Landscape.</a></p><p></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="社区">社区<a class="hash-link" aria-label="社区的直接链接" title="社区的直接链接" href="/layotto/#社区"></a></h2>
<table><thead><tr><th style="text-align:left">平台</th><th style="text-align:left">联系方式</th></tr></thead><tbody><tr><td style="text-align:left">💬 <a href="https://www.dingtalk.com/zh" target="_blank" rel="noopener noreferrer">钉钉</a> (用户群)</td><td style="text-align:left">群号: 31912621 或者扫描下方二维码 <br> <img src="https://gw.alipayobjects.com/mdn/rms_5891a1/afts/img/A*--KAT7yyxXoAAAAAAAAAAAAAARQnAQ" height="200px"></td></tr><tr><td style="text-align:left">💬 <a href="https://www.dingtalk.com/zh" target="_blank" rel="noopener noreferrer">钉钉</a> (社区会议群)</td><td style="text-align:left">群号:41585216 <a href="/layotto/docs/community/meeting">Layotto 在每周五晚 8 点进行社区会议,欢迎所有人</a></td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="如何贡献">如何贡献<a class="hash-link" aria-label="如何贡献的直接链接" title="如何贡献的直接链接" href="/layotto/#如何贡献"></a></h2>
<p><a href="/layotto/docs/development/start-from-zero">新手攻略:从零开始 成为 Layotto 贡献者</a></p>
<p><a href="https://github.com/mosn/layotto/issues/108#issuecomment-872779356" target="_blank" rel="noopener noreferrer">从哪下手?看看"新手任务"列表</a></p>
<p>作为技术同学,你是否有过“想参与某个开源项目的开发、但是不知道从何下手”的感觉?
为了帮助大家更好的参与开源项目,社区会定期发布适合新手的新手开发任务,帮助大家 learning by doing!</p>
<p><a href="/layotto/docs/development/contributing-doc">文档贡献指南</a></p>
<p><a href="/layotto/docs/development/developing-component">组件开发指南</a></p>
<p><a href="/layotto/docs/development/github-workflows">Layotto Github Workflow 指南</a></p>
<p><a href="/layotto/docs/development/commands">Layotto 命令行指南</a></p>
<p><a href="/layotto/docs/development/CONTRIBUTING">Layotto 贡献者指南</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="贡献者">贡献者<a class="hash-link" aria-label="贡献者的直接链接" title="贡献者的直接链接" href="/layotto/#贡献者"></a></h2>
<p>感谢所有的贡献者!</p>
<a href="https://github.com/mosn/layotto/graphs/contributors"><img src="https://contrib.rocks/image?repo=mosn/layotto"></a>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="设计文档">设计文档<a class="hash-link" aria-label="设计文档的直接链接" title="设计文档的直接链接" href="/layotto/#设计文档"></a></h2>
<p><a href="/layotto/docs/design/actuator/actuator-design-doc">Actuator 设计文档</a></p>
<p><a href="/layotto/docs/design/pubsub/pubsub-api-and-compability-with-dapr-component">Pubsub API 与 Dapr Component 的兼容性</a></p>
<p><a href="/layotto/docs/design/configuration/configuration-api-with-apollo">Configuration API with Apollo</a></p>
<p><a href="/layotto/docs/design/rpc/rpc_design_document">RPC 设计文档</a></p>
<p><a href="/layotto/docs/design/lock/lock-api-design">分布式锁 API 设计文档</a></p>
<p><a href="/layotto/docs/design/faas/faas-poc-design">FaaS 设计文档</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="faq">FAQ<a class="hash-link" aria-label="FAQ的直接链接" title="FAQ的直接链接" href="/layotto/#faq"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="跟-dapr-有什么差异">跟 dapr 有什么差异?<a class="hash-link" aria-label="跟 dapr 有什么差异?的直接链接" title="跟 dapr 有什么差异?的直接链接" href="/layotto/#跟-dapr-有什么差异"></a></h3>
<p>dapr 是一款优秀的 Runtime 产品,但它本身缺失了 Service Mesh 的能力,而这部分能力对于实际在生产环境落地是至关重要的,因此我们希望把 Runtime 跟 Service Mesh 两种能力结合在一起,满足更复杂的生产落地需求。</p></article></div><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a class="table-of-contents__link toc-highlight" href="/layotto/#诞生背景">诞生背景</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#功能">功能</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#工程架构">工程架构</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#快速开始">快速开始</a><ul><li><a class="table-of-contents__link toc-highlight" href="/layotto/#get-started-with-layotto">Get started with Layotto</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#api">API</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#service-mesh">Service Mesh</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#可扩展性">可扩展性</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#可观测性">可观测性</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#actuator">Actuator</a></li><li><a class="table-of-contents__link toc-highlight" href="/layotto/#流量控制">