{"componentChunkName":"component---src-templates-blog-detail-tsx","path":"/blog/2020-04-05-serverLess-api-cloudnative","result":{"data":{"currentBlog":{"id":"8cb2fb27-5998-546f-88c8-35458216d90d","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020522/1590169274977-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15901691298526.png","authors":["StatLee"],"categories":["user-stories"],"date":"2020-04-05T00:00:00.000Z","title":"使用 ServerLess 实现云原生","description":"今天来聊聊 ServerLess，也就是所谓的 FaaS，笔者有幸经历了 IaaS (OS)、CaaS (Container)，在这两年又听到了 FaaS (Funtion)，这也是运维开发领域里的第三个阶段了吧，今天我将从一个不懂得开发的系统工程师视角尝试诠释这个概念。","authorslink":["https://cloud.tencent.com/developer/article/1609585"],"translators":null,"translatorslink":null,"tags":["Serverless","云原生"],"keywords":"Serverless,Serverless网站,Serverless云原生","outdated":null},"wordCount":{"words":299,"sentences":38,"paragraphs":38},"fileAbsolutePath":"/opt/build/repo/content/blog/2020-04-05-serverLess-api-cloudnative.md","fields":{"slug":"/blog/2020-04-05-serverLess-api-cloudnative/","keywords":["go","python","serverless","云函数","ServerLess","serverless","serverlesscloud","Function"]},"html":"<p>笔者有幸经历了 IaaS（OS）、CaaS（Container），在这两年又听到了 FaaS（Funtion），这也是运维开发领域里的第三个阶段了吧，今天我将从一个不懂得开发的系统工程师视角以及结合之前的几篇系列文章为各位诠释这个概念。</p>\n<h2 id=\"一、简述\"><a href=\"#%E4%B8%80%E3%80%81%E7%AE%80%E8%BF%B0\" aria-label=\"一、简述 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>一、简述</h2>\n<p>一开始听到 ServerLess 我以为是类似于 VPS（建站主机）亦或者是 VM、Container 之类的具备完整 OS 或半完整 OS 生态的一个全新开发方式，后来发现我完全理解错了，如果说传统的云计算是这样分层的：</p>\n<p><img src=\"https://img.serverlesscloud.cn/2020522/1590169274965-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15901691298526.png\" alt=\"serverless\"></p>\n<p>那么 FaaS（ServerLess 为代表的的 Funtion As A Service）就是把 SaaS 再进行精细化拆分，可以看这张图就明白了（特别是红圈部分）：</p>\n<p><img src=\"https://img.serverlesscloud.cn/2020522/1590169274977-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15901691298526.png\" alt=\"FaaS\"></p>\n<p>传统以为 Application 就是业务的最终形态，可是随着以开发领域为首的「微服务」及运维领域为首的「SRE/DevOps」理念出来后，传统的业务运维明显已经不能满足新一代业务的需求，为了更贴合这些新的需求，实现：</p>\n<ul>\n<li>模块拆分化（即一个功能作为一个模块，而非一个业务作为一个模块）</li>\n<li>最小颗粒化变更（即分层变更，变更时通过合理调度时变更间隔缩短，实现快速迭代）的目的</li>\n</ul>\n<p>云厂商最终在以往的「最终形态」上又拆分了 Function 出来，多个 Function 再组成 Application，除了业务上的好处，这样做的好处还可以支持将 Function 拆分单独作为某个服务通过简单的加壳（API 化）提供给外部调用，从商业角度讲，这样的模式能够给 Application 本身创造的价值之外提供了更多的细分变现领域。</p>\n<p>所以，为什么 ServerLess 这么火（至少表面看），就是因为 ServerLess 是上述所说 FaaS 的最佳体现。</p>\n<h2 id=\"二、实操\"><a href=\"#%E4%BA%8C%E3%80%81%E5%AE%9E%E6%93%8D\" aria-label=\"二、实操 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>二、实操</h2>\n<ol>\n<li>我们开始创建今天的主角，ServerLess（python 版本随自身业务需求而变）创建一个云函数：</li>\n</ol>\n<p><img src=\"https://img.serverlesscloud.cn/2020522/1590169274926-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15901691298526.png\" alt=\"serverless\"></p>\n<p>创建 SCF(云函数，ServerLess)</p>\n<p>从云函数的功能上来看，与腾讯云的功能整合度还是比较高的，在规划上笔者建议通过私有网络来构造云函数应用。</p>\n<ol start=\"2\">\n<li>对接 cvm apiv3 sdk来实现拉取cvm列表，首先将用到的SDK文件放在云函数所在目录下。</li>\n<li>通过 VSCode 插件一键部署。这里推荐使用 VSCode 来作为主 IDE，无论是构造 API 的 Django 所用的 TKE 可以通过 Remote Development 插件来进行远程开发，还是 ServerLess 也可以通过腾讯云提供的 ServerLess ToolKit（当然大部分提供 ServerLess 的云厂商都有提供 Toolkit，安装 ToolKit 时主要不要在 Remote IDE 窗口下点击，否则就变成为远端安装了）进行开发，基本上做到完全体验一致。</li>\n<li>通过 CVM SDK 获取 ins-id、内网 IP，再调用 Django 构造的接口进行传参。</li>\n<li>结果调用成功添加数据：</li>\n</ol>\n<p><img src=\"https://img.serverlesscloud.cn/2020522/1590169515300-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15901695028122.png\" alt=\"serverless\"></p>\n<p>至此，实操完成，这样相当把后端一个「同步信息」的接口搬上了 ServerLess</p>\n<h2 id=\"三、场景\"><a href=\"#%E4%B8%89%E3%80%81%E5%9C%BA%E6%99%AF\" aria-label=\"三、场景 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>三、场景</h2>\n<p>如实验所述，ServerLess 只能是一个类似于「转发器」的玩意吗？并不是的，除了业务模块是处于「中间（转发、同步）」的模块类型之外，其实 ServerLess 也是可以结合其他产品来实现对外输出功能的。</p>\n<p>本身 ServerLess 是没有对外发布能力的，怎么理解呢？就是一般运维同学上手一看，这玩意儿为什么连个 ip 都没有，域名哪里定义的，端口又在哪里，如何定义协议类型？</p>\n<p>实际上 ServerLess 确实这些都没有，因为如简述所说，这是一个细粒化到只需要关注其上 App 中的某个 Function 的一个产品，所以 Function 之下的所有包括 OS、网络、App 都是不具备定制化的。</p>\n<p>虽然 ServerLess 本身没有对外发布能力，但是<strong>结合 API 网关</strong>就不是这回事儿了，当 ServerLess 遇到 API 网关，通常云厂商是支持 ServerLess 添加（或叫注册）到API网关的，这就相当于你可以<strong>借 API 网关的「力」来使 ServerLess 实现对外发布</strong>的功能。</p>\n<h2 id=\"四、总结\"><a href=\"#%E5%9B%9B%E3%80%81%E6%80%BB%E7%BB%93\" aria-label=\"四、总结 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>四、总结</h2>\n<p>ServerLess 的开发模式业界已经很多公司采用，相比于还在使用传统环境（OS、中间件、选择应用语言、构建数据层、前后端）来说：</p>\n<ol>\n<li>运维压力小了很多，因为只需要专注在 ServerLess 本身的运行参数以及架构上的调整、运维，而不再需要关注 Function 以下的运维难点；</li>\n<li>开发人员由于 ServerLess 一般由云厂商提供全链路的整合，加上 IDE 插件的支持基本上全程实现云上开发，灵活的版本、环境也可以保证发布出现问题的几率最小化，同时<strong>开发职能的交叉度降到最低</strong>，<strong>开发人员之间的干扰依赖降低</strong>；</li>\n<li>对于公司的商业模式来说，像拥有大量访问量、市场受众的企业客户不单单可以在业务上实现盈利，<strong>某些业务系统模块</strong>的优势也可以借助 ServerLess 拆分出来实现内部IT支撑系统的<strong>变现</strong>。</li>\n</ol>\n<p>ServerLess 也存在一些问题，比如由于 ServerLess 基本上是<strong>依托在云厂商</strong>之上，对于有混合云的场景，对于<strong>S2S 的链接质量要求更高</strong>，当然这些在 ServerLess 的不断优化迭代情况下会越来越顺畅，所以，无论是 Dev 还是 Ops，拥抱并享受 ServerLess 吧。</p>\n<hr>\n<div id='scf-deploy-iframe-or-md'></div>\n<hr>\n<blockquote>\n<p><strong>传送门：</strong></p>\n<ul>\n<li>GitHub: <a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">github.com/serverless</a></li>\n<li>官网：<a href=\"https://serverless.com/\">serverless.com</a></li>\n</ul>\n</blockquote>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！</p>","tableOfContents":"<ul>\n<li><a href=\"/blog/2020-04-05-serverLess-api-cloudnative/#%E4%B8%80%E3%80%81%E7%AE%80%E8%BF%B0\">一、简述</a></li>\n<li><a href=\"/blog/2020-04-05-serverLess-api-cloudnative/#%E4%BA%8C%E3%80%81%E5%AE%9E%E6%93%8D\">二、实操</a></li>\n<li><a href=\"/blog/2020-04-05-serverLess-api-cloudnative/#%E4%B8%89%E3%80%81%E5%9C%BA%E6%99%AF\">三、场景</a></li>\n<li><a href=\"/blog/2020-04-05-serverLess-api-cloudnative/#%E5%9B%9B%E3%80%81%E6%80%BB%E7%BB%93\">四、总结</a></li>\n</ul>"},"previousBlog":{"id":"8a1a4c70-1042-5f69-b2dd-6254d859e6a2","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020522/1590171266721-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15901711409297.png","authors":["用户1358150"],"categories":["user-stories"],"date":"2020-04-08T00:00:00.000Z","title":"使用 Serverless + 飞书打造你的个性化消息提醒系统","description":"可以将消息集中起来并且及时推送呢？在这里我想向大家推荐一个解决方案，那就是使用 Serverless + 飞书打造属于自己的个性化消息提醒系统。","authorslink":["https://cloud.tencent.com/developer/article/1610964"],"translators":null,"translatorslink":null,"tags":["Serverless","飞书"],"keywords":"Serverless,飞书,Serverless应用","outdated":true},"wordCount":{"words":208,"sentences":69,"paragraphs":69},"fileAbsolutePath":"/opt/build/repo/content/blog/2020-04-08-Serverless-feishu.md","fields":{"slug":"/blog/2020-04-08-Serverless-feishu/","keywords":["java","serverless","云函数","serverless","serverlesscloud","点击"]}},"nextBlog":{"id":"e3cbde67-2160-5b99-888c-06285ca68253","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020522/1590167093112-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15901670801318.png","authors":["逸笙"],"categories":["user-stories"],"date":"2020-03-31T00:00:00.000Z","title":"云函数 SCF 中 PHP 的一些入门坑","description":"由于云函数本身是用 bootstrap.php 来调用我们的入口函数，默认为 index.main\\_handler，意思是调用 index.php 文件中的 main\\_handler()，所以很多地方写法要有改变。php 一般提供网页服务，所以我主要讲 API 网关配合的 SCF。","authorslink":["https://cloud.tencent.com/developer/article/1607248"],"translators":null,"translatorslink":null,"tags":["Serverless","云函数"],"keywords":"Serverless,Serverless PHP,Serverless应用","outdated":null},"wordCount":{"words":213,"sentences":31,"paragraphs":31},"fileAbsolutePath":"/opt/build/repo/content/blog/2020-03-31-scf-php.md","fields":{"slug":"/blog/2020-03-31-scf-php/","keywords":["go","java","php","serverless","云函数","event","浏览器","网关","headers","substr"]}},"recommendBlogs":{"edges":[{"node":{"id":"4300b21c-7209-5256-86ff-0d38e3daec9b","frontmatter":{"thumbnail":"https://main.qcloudimg.com/raw/14f1c8eed372e76c1b139703b2f6d0fa.jpg","authors":["KieranMcCarthy"],"categories":["user-stories","engineering-culture"],"date":"2018-01-09T00:00:00.000Z","title":"我是如何在四年时间里，从厨师转行为 Serverless 应用开发者","description":"我是厨师出身，现在成为了一名 Serverless 应用开发者。","authorslink":["https://serverless.com/author/kieranmccarthy/"],"translators":["Aceyclee"],"translatorslink":["https://www.zhihu.com/people/Aceyclee"],"tags":["应用开发","Serverless"],"keywords":"Serverless 应用开发,Serverless 管理,厨师转行为 Serverless 应用开发者","outdated":null},"wordCount":{"words":285,"sentences":38,"paragraphs":36},"fileAbsolutePath":"/opt/build/repo/content/blog/2018-01-09-from-chef-to-serverless-developer-in-4-years.md","fields":{"slug":"/blog/2018-01-09-from-chef-to-serverless-developer-in-4-years/","keywords":["无服务器","无服务器开发","云函数","学习","Serverless","构建","Framework","开发者","服务器","应用","学位","简历"]}}},{"node":{"id":"713a0563-4bf9-5721-bacb-3b4ef609fe4a","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/camp-fire/camp-fire-housing-thumb.jpg","authors":["EricWyne"],"categories":["guides-and-tutorials","user-stories"],"date":"2018-12-05T00:00:00.000Z","title":"Serverless Twitter 机器人帮助为坎普山火受灾者安置住房","description":"加利福尼亚州的坎普山火致使数千人流离失所，为此，我构建了一个简单的 Serverless Twitter 机器人来帮助将受灾者安置在临时住房！","authorslink":["https://serverless.com/author/ericwyne/"],"translators":["Aceyclee"],"translatorslink":["zhihu.com/people/Aceyclee"],"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":157,"sentences":26,"paragraphs":26},"fileAbsolutePath":"/opt/build/repo/content/blog/2018-12-05-serverless-twitter-camp-fire.md","fields":{"slug":"/blog/2018-12-05-serverless-twitter-camp-fire/","keywords":["serverless","无服务器","云函数","Serverless","org","住房","Twitter","函数","受灾","机器人","山火"]}}},{"node":{"id":"98602143-b837-5f50-a24f-3b1ec76044d7","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/sqquid/sqquid-serverless-thumb.jpg","authors":["RonPeled"],"categories":["user-stories"],"date":"2018-12-17T00:00:00.000Z","title":"SQQUID：100% 无服务器初创公司","description":"SQQUID 将 AWS Lambda 和无服务器框架用于其核心产品和营销网站。我们来看看一个完全无服务器的初创公司是怎样的。","authorslink":null,"translators":null,"translatorslink":null,"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":266,"sentences":42,"paragraphs":42},"fileAbsolutePath":"/opt/build/repo/content/blog/2018-12-17-sqquid-one-hundred-percent-serverless.md","fields":{"slug":"/blog/2018-12-17-sqquid-one-hundred-percent-serverless/","keywords":["go","serverless","无服务器","无服务器架构","服务器","架构","Lambda","集成","FaaS","串行","系统"]}}},{"node":{"id":"29dc2e58-d2ba-56f9-aee1-d21b0bc62e0e","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/ao-com-story/ao-serverless-thumbnail.png","authors":["NickGottlieb"],"categories":["user-stories"],"date":"2019-04-24T00:00:00.000Z","title":"AO.com：逐渐转向无服务器优先","description":"AO.com 的 SCV 团队率先尝试无服务器服务。折服于无服务器框架的快速周转时间和低维护成本，整个团队逐渐转向无服务器优先。","authorslink":null,"translators":null,"translatorslink":null,"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":236,"sentences":42,"paragraphs":35},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-04-24-ao-serverless-first.md","fields":{"slug":"/blog/2019-04-24-ao-serverless-first/","keywords":["serverless","无服务器","服务器","团队","Lambda","功能","构建"]}}},{"node":{"id":"752d08d1-387a-5bde-acf3-98141baab294","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020414/1586871710979-%E5%85%AC%E5%85%B1%E7%94%A8.png","authors":["Anycodes"],"categories":["user-stories"],"date":"2019-06-20T00:00:00.000Z","title":"如何用 Serverless 为 Python 云函数打包依赖","description":"在使用无服务器云函数SCF时通常会遇到导入第三方库的问题，很多小伙伴比较头疼是：应该如何打包进去？这里，推荐几个不错的方法。","authorslink":["https://zhuanlan.zhihu.com/ServerlessGo"],"translators":null,"translatorslink":null,"tags":["云函数","Serverless"],"keywords":"Serverless,Serverless应用,无服务器云函数","outdated":null},"wordCount":{"words":81,"sentences":43,"paragraphs":43},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-06-20-for-python-cloud-functions.md","fields":{"slug":"/blog/2019-06-20-for-python-cloud-functions/","keywords":["java","serverless","无服务器","无服务器云函数","云函数","serverlesscloud","安装","serverless","pillowtest"]}}},{"node":{"id":"2dc78814-9d77-555b-a1bb-ad202c8ec2d1","frontmatter":{"thumbnail":"https://s3-us-west-2.amazonaws.com/assets.blog.serverless.com/cloudforecast/thumbnail.png","authors":["FrancoisLagier"],"categories":["user-stories"],"date":"2019-08-07T00:00:00.000Z","title":"Serverless：初创企业的理想选择？（CloudForecast 案例分析）","description":"CloudForecast 是 2018 年成立的一家独立初创企业，本文将介绍他们决定选择 Serverless 的原因。","authorslink":["https://serverless.com/author/francoislagier/"],"translators":["Aceyclee"],"translatorslink":["zhihu.com/people/Aceyclee"],"tags":null,"keywords":null,"outdated":null},"wordCount":{"words":211,"sentences":29,"paragraphs":29},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-08-07-serverless-for-startups.md","fields":{"slug":"/blog/2019-08-07-serverless-for-startups/","keywords":["serverless","云函数","serverless","函数","Serverless","utm","Framework","blog","CloudForecast","cloudforecast"]}}},{"node":{"id":"97450b07-658b-5207-8216-1c7b9b51b115","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020114/1578988490344-v2-8b2cd2c5275aa2c5a3c5083a148a7a9f_1200x500.jpg","authors":["Anycodes"],"categories":["user-stories"],"date":"2019-09-01T00:00:00.000Z","title":"如何通过 Serverless 与自然语言处理，让搜索引擎「看」到你的博客","description":"Serverless 与自然语言处理结合的一个小应用","authorslink":["https://www.zhihu.com/people/liuyu-43-97"],"translators":null,"translatorslink":null,"tags":["个人博客","serverless"],"keywords":"Serverless 自然语言处理","outdated":null},"wordCount":{"words":106,"sentences":34,"paragraphs":34},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-09-01-search-engine-blog.md","fields":{"slug":"/blog/2019-09-01-search-engine-blog/","keywords":["serverless","云函数","keywords","serverlesscloud","summary"]}}},{"node":{"id":"ae4fd2f8-515c-5aec-b584-38427ef33f7e","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020114/1578989800047-part-00492-780.jpg","authors":["Anycodes"],"categories":["guides-and-tutorials","user-stories"],"date":"2019-09-16T00:00:00.000Z","title":"突破传统 OJ 瓶颈，「判题姬」接入云函数","description":"通过 Serverless 实现在线编程","authorslink":["https://www.zhihu.com/people/liuyu-43-97"],"translators":null,"translatorslink":null,"tags":["在线编程","云函数"],"keywords":"Serverless 在线编程,Serverless OJ","outdated":null},"wordCount":{"words":169,"sentences":30,"paragraphs":30},"fileAbsolutePath":"/opt/build/repo/content/blog/2019-09-16-online-Judge.md","fields":{"slug":"/blog/2019-09-16-online-Judge/","keywords":["python","serverless","云函数","代码","函数","serverless"]}}}],"totalCount":64}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"8cb2fb27-5998-546f-88c8-35458216d90d","previousBlogId":"8a1a4c70-1042-5f69-b2dd-6254d859e6a2","nextBlogId":"e3cbde67-2160-5b99-888c-06285ca68253","categories":["user-stories"]}}}