它是 Servlerless 架构的后端支撑,是 Faas 的基础实践,可以将一个几行的代码段直接对外发布。
它特别适合简单业务,轻后台应用,在小需求开发的过程中可以让开发更注重逻辑而不是资源申请或者项目搭建。
它无需开发维护申请机器申请运行环境,并且可以实现自动缩放,按需分配
一个业务就是一个服务,一个项目就是一个服务,服务之间可以申请互相调用。
一个服务可以任意申请函数,服务内函数不重名,函数是一段代码,可以对数据进行增删改查
public List<User> userList(int page, int size) {
log.info("总共访问次数:" + seq.incr("userList"));
List<Long> userIds = db.table("contacts").page(page).size(size).all();
List<User> result = new ArrayList<User>();
for(Long userId : userIds)
result.add(umc.get(userId));
return result;
}
各项目可添加插件实现扩展功能,如 jdbc 插件等,添加的插件可以在函数中任意调用
这算是一个扩展点,有插件制度就可以具备无限的可能性
极端情况可以添加一个 war 包插件,这样就是一个部署平台了;添加一个 cron 插件就是定时任务调度平台
函数需要发布到网关才能对外提供服务,网关应该主要就是 web,有其它需求也可以添加支持
由于系统里对外提供服务的都是函数,所以根据函数是很容易反向生成在线文档的,是否对外发布或者是否要求注释格式可以待定
函数可以建任意版本,活动版本仅有一个,版本的流程包括线下线上,每个版本的开始状态为上个版本的结束状态,为了安全线上版本应该不允许修改,只允许建新版本替换
核心应该在混编中心,它需要按照配置中心,按版本找出函数代码,找出服务依赖,将依赖关系和函数代码生成源码文件后执行编译执行,最后返回执行结果,依赖关系在生成的源文件里应该就是个 import
的过程