{"id":13612965,"url":"https://github.com/baidu/EasyFaaS","last_synced_at":"2025-04-13T15:32:11.427Z","repository":{"id":46386636,"uuid":"355200354","full_name":"baidu/EasyFaaS","owner":"baidu","description":"EasyFaaS是一个依赖轻、适配性强、资源占用少、无状态且高性能的函数计算服务引擎","archived":false,"fork":false,"pushed_at":"2022-10-20T01:54:55.000Z","size":1293,"stargazers_count":620,"open_issues_count":8,"forks_count":67,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-04-04T22:07:16.178Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baidu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-06T13:33:45.000Z","updated_at":"2025-04-04T11:24:52.000Z","dependencies_parsed_at":"2022-08-28T18:01:08.046Z","dependency_job_id":null,"html_url":"https://github.com/baidu/EasyFaaS","commit_stats":null,"previous_names":["baidu/openless"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2FEasyFaaS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2FEasyFaaS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2FEasyFaaS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2FEasyFaaS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baidu","download_url":"https://codeload.github.com/baidu/EasyFaaS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248735835,"owners_count":21153481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T20:00:37.352Z","updated_at":"2025-04-13T15:32:10.344Z","avatar_url":"https://github.com/baidu.png","language":"Go","funding_links":[],"categories":["Go","Serverless Platforms"],"sub_categories":[],"readme":"# EasyFaaS\n[![License](https://img.shields.io/badge/Licence-Apache%202.0-blue.svg?style=flat-square)](http://www.apache.org/licenses/LICENSE-2.0.html)\n\n\n## 简介\n\nEasyFaaS是一个依赖轻、适配性强、资源占用少、无状态且高性能的函数计算服务引擎。它有以下几个特点：\n\n- **依赖轻**：EasyFaaS只依赖Linux内核，不强制依赖Docker、Kubernetes等外部服务\n\n- **适配性强**：EasyFaaS可以运行在多种系统环境，包括Docker、Kubernetes及裸机等\n\n- **资源占用少**：模块少，服务系统模块占用更小\n\n- **无状态**：每个EasyFaaS Pod本身无状态且内部自治\n\n- **高性能**：调度链路更短，更小的系统开销和更优的性能\n\n\n适用于：\n- 边缘计算-Edge\n\n- 物联网-IoT\n\n- CICD\n\n- 私有化\n\n- CDN\n\n\n## 使用手册\n[快速开始](./docs/quick_start.md)\n\n[开发手册](./docs/development.md)\n\n[质量测试](./docs/test.md)\n\n[引擎测评](docs/func-registry.md)\n\n\n\n\n## 核心功能\n![easyfaas_func](docs/imgs/easyfaas_function_diagram.JPG)\n\n- 提供基于事件机制，按需弹性伸缩的计算能力。\n\n- 支持多种语言运行时，开发者只需使用适合的语言编写自定义函数，无需管理底层基础设施。\n\n- 负责用户容器的全生命周期管理。\n\n- 支持用户配置函数的容器资源容量，提供动态的容器容量调度。\n\n- 支持同步和异步两种调用模式，支持多种可扩展的事件触发器。\n\n- 支持可自定义的函数管理服务。\n\n- 支持自定义语言运行时。 \n\n- 支持多种运行平台，包括Docker、Kubernetes及裸机等。\n\n\n## 技术架构\n\n### 架构图\n\n![faaster_arch](docs/imgs/openless_arch.JPG)\nEasyFaaS以单Pod为最小服务单位，每个Pod中包含3个容器，分别为controller、funclet和runner-runtime。其中runner-runtime仅为init容器，准备必要的资源后即退出。\n\n### 模块说明\n#### 1. 核心组件\n\n**1.1 controller**\n\n  负责流量调度及容器池状态管理。\n\n- 实现容器调度功能。\n- 支持配置函数级别的并发。\n- 支持容器状态管理，按策略调度容器状态。\n- 支持健康检查，可以根据runtime的状态决定cooldown/reborn。\n\n**1.2 funclet**\n\n   负责管理用户工作容器，包括基础容器资源及函数运行资源。\n\n- 容器管理：实现容器的init/warmup/reset流程。\n- 网络管理：实现容器网络相关功能，合理管理网络资源。\n- 挂载管理：实现用户容器的动态挂载，并定期回收用户容器的挂载目录。\n- 进程管理：需妥善管理用户容器产生的子进程，处理异常退出的子进程。\n- 资源容量管理：实现用户工作容器的内存资源动态调整。\n\n**1.3 runner-runtime**\n\n   runner负责管理用户函数运行时，runtime支持各开发语言运行时，目前该组件当前仅提供容器镜像。\n\n\n#### 2. 可插拔组件\n**2.1 httptrigger组件**\n   核心功能：扩展函数触发方式，支持HTTP请求触发函数调用\n   HTTP触发器实现了将某个函数关联到一个 URL 上，它可以接收 HTTP 请求，根据 HTTP 方法、URL，找到匹配的函数将 HTTP 相关信息传入并执行函数，获取执行结果，将函数执行结果包装为 HTTP 返回响应。\n\n**2.2 stubs组件**\n   核心功能： 提供本地函数代码存储服务\n\n- 存储用户函数到本地工作目录\n\n- 支持直接调用本地函数代码\n\n\n## 贡献\n\nissues贡献： 如在使用中遇到问题，请在 https://github.com/baidu/EasyFaaS/issues 新建 issues 反馈问题。\n\n\n\n## 维护者\n- [郑同学](https://github.com/elithnever)\n- [房同学](https://github.com/flyingfang)\n- [史同学](https://github.com/sns1988)\n\n\n## 版本更新\n- 1.0.0 EasyFaaS第一版发布，具备常用的函数管控、容器管理和调度、事件机制等功能；\n\n\n## 讨论\n\n如果您有任何意见或问题都可以提issue到github或gitee，我们将及时为您解答。\n\n如在使用中遇到问题，快速沟通，可微信扫描二维码，加入EasyFaaS技术交流群，添加下列管理员微信，并备注“EasyFaaS”，管理员邀您入群\n\n\u003cimg src=\"./docs/imgs/cn-assist.JPG\" width=\"200\" align=\"left\"\u003e\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaidu%2FEasyFaaS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaidu%2FEasyFaaS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaidu%2FEasyFaaS/lists"}