• Stars
    star
    617
  • Rank 70,381 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

EasyFaaS是一个依赖轻、适配性强、资源占用少、无状态且高性能的函数计算服务引擎

EasyFaaS

License

简介

EasyFaaS是一个依赖轻、适配性强、资源占用少、无状态且高性能的函数计算服务引擎。它有以下几个特点:

  • 依赖轻:EasyFaaS只依赖Linux内核,不强制依赖Docker、Kubernetes等外部服务

  • 适配性强:EasyFaaS可以运行在多种系统环境,包括Docker、Kubernetes及裸机等

  • 资源占用少:模块少,服务系统模块占用更小

  • 无状态:每个EasyFaaS Pod本身无状态且内部自治

  • 高性能:调度链路更短,更小的系统开销和更优的性能

适用于:

  • 边缘计算-Edge

  • 物联网-IoT

  • CICD

  • 私有化

  • CDN

使用手册

快速开始

开发手册

质量测试

引擎测评

核心功能

easyfaas_func

  • 提供基于事件机制,按需弹性伸缩的计算能力。

  • 支持多种语言运行时,开发者只需使用适合的语言编写自定义函数,无需管理底层基础设施。

  • 负责用户容器的全生命周期管理。

  • 支持用户配置函数的容器资源容量,提供动态的容器容量调度。

  • 支持同步和异步两种调用模式,支持多种可扩展的事件触发器。

  • 支持可自定义的函数管理服务。

  • 支持自定义语言运行时。

  • 支持多种运行平台,包括Docker、Kubernetes及裸机等。

技术架构

架构图

faaster_arch EasyFaaS以单Pod为最小服务单位,每个Pod中包含3个容器,分别为controller、funclet和runner-runtime。其中runner-runtime仅为init容器,准备必要的资源后即退出。

模块说明

1. 核心组件

1.1 controller

负责流量调度及容器池状态管理。

  • 实现容器调度功能。
  • 支持配置函数级别的并发。
  • 支持容器状态管理,按策略调度容器状态。
  • 支持健康检查,可以根据runtime的状态决定cooldown/reborn。

1.2 funclet

负责管理用户工作容器,包括基础容器资源及函数运行资源。

  • 容器管理:实现容器的init/warmup/reset流程。
  • 网络管理:实现容器网络相关功能,合理管理网络资源。
  • 挂载管理:实现用户容器的动态挂载,并定期回收用户容器的挂载目录。
  • 进程管理:需妥善管理用户容器产生的子进程,处理异常退出的子进程。
  • 资源容量管理:实现用户工作容器的内存资源动态调整。

1.3 runner-runtime

runner负责管理用户函数运行时,runtime支持各开发语言运行时,目前该组件当前仅提供容器镜像。

2. 可插拔组件

2.1 httptrigger组件 核心功能:扩展函数触发方式,支持HTTP请求触发函数调用 HTTP触发器实现了将某个函数关联到一个 URL 上,它可以接收 HTTP 请求,根据 HTTP 方法、URL,找到匹配的函数将 HTTP 相关信息传入并执行函数,获取执行结果,将函数执行结果包装为 HTTP 返回响应。

2.2 stubs组件 核心功能: 提供本地函数代码存储服务

  • 存储用户函数到本地工作目录

  • 支持直接调用本地函数代码

贡献

issues贡献: 如在使用中遇到问题,请在 https://github.com/baidu/EasyFaaS/issues 新建 issues 反馈问题。

维护者

版本更新

  • 1.0.0 EasyFaaS第一版发布,具备常用的函数管控、容器管理和调度、事件机制等功能;

讨论

如果您有任何意见或问题都可以提issue到github或gitee,我们将及时为您解答。

如在使用中遇到问题,快速沟通,可微信扫描二维码,加入EasyFaaS技术交流群,添加下列管理员微信,并备注“EasyFaaS”,管理员邀您入群

More Repositories

1

amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
TypeScript
16,239
star
2

uid-generator

UniqueID generator
Java
5,329
star
3

san

A fast, portable, flexible JavaScript component framework
JavaScript
4,707
star
4

lac

百度NLP:分词,词性标注,命名实体识别,词重要性
C++
3,758
star
5

braft

An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
C++
3,499
star
6

dperf

dperf is a DPDK based 100Gbps network performance and load testing software.
C
3,273
star
7

bfs

The Baidu File System.
C++
2,845
star
8

openrasp

🔥Open source RASP solution
C++
2,709
star
9

Familia

A Toolkit for Industrial Topic Modeling
C++
2,632
star
10

AnyQ

FAQ-based Question Answering System
C++
2,566
star
11

sofa-pbrpc

A light-weight RPC implement of google protobuf RPC framework.
C++
2,121
star
12

tera

An Internet-Scale Database.
C++
1,880
star
13

Senta

Baidu's open-source Sentiment Analysis System.
Python
1,819
star
14

bfe-book

In-depth Understanding of BFE《深入理解BFE》(Book for BFE, a CNCF open source project. both in English and in Chinese)
1,212
star
15

bigflow

Baidu Bigflow is an interface that allows for writing distributed computing programs and provides lots of simple, flexible, powerful APIs. Using Bigflow, you can easily handle data of any scale. Bigflow processes 4P+ data inside Baidu and runs about 10k jobs every day.
C++
1,141
star
16

BaikalDB

BaikalDB, A Distributed HTAP Database.
C++
1,132
star
17

DuReader

Baseline Systems of DuReader Dataset
Python
1,108
star
18

DDParser

百度开源的依存句法分析系统
Python
955
star
19

starlight

Java implementation for Baidu RPC, multi-protocol & high performance RPC.
Java
945
star
20

CUP

CUP, common useful python-lib. (Currently, Most popular python lib in baidu). Python 开发底层库, 涵盖util、service(threadpool/generator/executor/cache等等)、logging、monitoring、增强型配置 等等库支持
Python
934
star
21

ICE-BA

C++
700
star
22

NoahV

An efficient front-end application framework based on vue.js
JavaScript
638
star
23

Jprotobuf-rpc-socket

Protobuf RPC是一种基于TCP协议的二进制RPC通信协议的Java实现
Java
516
star
24

bifromq

A MQTT broker implementation adopting serverless architecture
Java
514
star
25

Curve

An Integrated Experimental Platform for time series data anomaly detection.
JavaScript
514
star
26

fast_rgf

Multi-core implementation of Regularized Greedy Forest
C++
466
star
27

Dialogue

Python
444
star
28

Elasticsearch

Baidu Elasticsearch
Java
432
star
29

brcc

BRCC(better remote config center)是一个分布式配置中心,用于统一管理应用服务的配置信息,避免各类资源散落在各个项目中,简化资源配置的维护成本。作为一种轻量级的解决方案,部署简单,同时支持多环境、多版本、多角色的资源管理,可以在不改变应用源码的情况下无缝切换和实时生效配置信息。
Java
383
star
30

Cafe

A powerful test framework for Android
Java
370
star
31

mix-img

A fast mix image javascript tool libary
JavaScript
332
star
32

unit-dmkit

C++
328
star
33

galaxy

Galaxy is a cluster management system.
C++
326
star
34

information-extraction

Python
325
star
35

puck

Puck is a high-performance ANN search engine
Jupyter Notebook
304
star
36

knowledge-driven-dialogue

baseline system of knowledge driven dialogue competition
Python
271
star
37

CarbonGraph

A Swift dependency injection / lookup framework for iOS
Swift
252
star
38

unit-uskit

unit-uskit
C++
251
star
39

BIPlatform

JavaScript
219
star
40

dlock

An effective and reliable Distributed Lock
Java
216
star
41

ins

iNexus, coordinate large scale services
C++
213
star
42

boteye

C++
212
star
43

titan-dex

Java
201
star
44

m-git

MGit 是一款基于 Git 的多仓库管理工具,可以安全的、高效的管理多个 Git 仓库; 适合于在多个仓库中进行关联开发的项目,实现批量的版本管理功能,提高 Git 操作的效率,避免逐个执行 Git 命令带来的误操作风险。
Ruby
166
star
45

Rubik

An Android platform component management tool chain, based on Kotlin language.
Kotlin
154
star
46

common

Common library
C++
132
star
47

go-lib

Go
126
star
48

titan-hotfix

Java
125
star
49

wx2

小程序互转工具
JavaScript
124
star
50

iot-sdk-c

device sdk for baidu IoT Core service, in c. Including MQTT client
C
118
star
51

Youtube-8M

PaddlePaddle models for Youtube-8M Video Understanding Challenge
Python
114
star
52

ar-sdk

DuMix AR SDK for Developer
GLSL
105
star
53

broc

Python
101
star
54

ITEST

Web service interface test framework
97
star
55

ote-stack

OTE-Stack is an edge computing platform for 5G and AI
Go
96
star
56

GPT

Java
87
star
57

redis

Baidu Ksarch Redis - a production solution of redis cluster
87
star
58

san-devtools

Browser developer tools extension for debugging San.
TypeScript
82
star
59

terminator

Service Virtualization
Java
76
star
60

QCompute

QCompute is a Python-based quantum software development kit (SDK). It provides a full-stack programming experience for advanced users via hybrid quantum programming language features and a high-performance simulator.
Python
76
star
61

spring-cloud-baidu

69
star
62

iot-edge-sdk-for-iot-parser

C
64
star
63

shuttle

A fast computing framework based on Galaxy
C++
64
star
64

baidu-iot-samples

C
61
star
65

san-store

Application States Management for San
JavaScript
59
star
66

ARK

Development framework of intelligent operation
Python
57
star
67

san-update

Object immutable update utility for san solution
JavaScript
56
star
68

logcover

轻量级异常日志测试覆盖率度量工具
Python
56
star
69

palo

A fast MPP database for all modern analytics on big data. Powered by Apache Doris(Incubating)
50
star
70

speech-samples

百度语音示例
Java
48
star
71

ntripcaster

C
42
star
72

san-router

Official Router for San
JavaScript
38
star
73

Quanlse

Jupyter Notebook
38
star
74

san-ssr

San SSR framework and utils
TypeScript
37
star
75

dm-kit-php

PHP
36
star
76

boteye_sensor

C
35
star
77

ipipe-agent

Java
33
star
78

OASP

OASP (Online App Status Protocol)
Java
32
star
79

san-composition

JavaScript
30
star
80

duedge-recipes

DuEdge百度边缘网络计算样例代码
JavaScript
27
star
81

paddle-on-k8s-operator

Kubernetes operator for managing the lifecycle of PaddlePaddle job.
Go
24
star
82

baiducloud-sdk-go

Go SDK for Baidu Cloud
Go
23
star
83

san-website

JavaScript
21
star
84

du1906_esp

DUHOME AIOT platform based on du1906 and esp32
C
18
star
85

highflip

HIGHFLIP: An easy way to bridge different federal learning platforms
18
star
86

baiduads-sdk

Baidu Ads API SDK
Python
16
star
87

smartapp-openapi-java

百度智能小程序服务端 OpenAPI SDK for java,是基于小程序服务端 OpenAPI 封装的一套让开发者方便使用的 SDK, 它可以帮开发者减少理解和使用 OpenAPI 的成本, 减少开发者直接调用服务端接口不当而引起的错误, 避免在开发中走弯路。
Java
16
star
88

san-factory

JavaScript
15
star
89

ttm

C
14
star
90

cluster-api-provider-baiducloud

Kubernetes cluster-api for Baidu Cloud
Go
12
star
91

minions

Baidu 100G Chasiss Switch hardware spec
11
star
92

signet

签章系统
JavaScript
10
star
93

sgxray

SGXRay: a bounded verifier for Intel SGX enclaves
C
10
star
94

grafana-tsdb-datasource

JavaScript
9
star
95

iotcore-sdk-java

Java SDK for baidu IoT Core service
Java
8
star
96

iot

for all code about Internet of Things
8
star
97

smartapp-openapi-go

百度智能小程序服务端 OpenAPI SDK for go,是基于小程序服务端 OpenAPI 封装的一套让开发者方便使用的 SDK, 它可以帮开发者减少理解和使用 OpenAPI 的成本, 减少开发者直接调用服务端接口不当而引起的错误, 避免在开发中走弯路。
Go
8
star
98

bce-fpga-dev-kit

VHDL
6
star
99

duedge-cli

DuEdge Command Line
Python
6
star
100

brcc-go-sdk

golang sdk for BRCC (https://github.com/baidu/brcc)
Go
6
star