Serverless for Java development

2017/12/25 java serverless docker yaml

Server Less 我的第一个简单的实例。

前言

Serverless 适用场景:

  • 1 运算密集 —— 如图片压缩、数据分析。因为使用 Serverless 方案同一秒里可以运行千上万个 Lambda,能轻易实现传统架构无法实现的超强处理能力,并且只在使用时收费。

  • 2 为其它服务提供编程支持 —— 例如,当 AWS DynamoDB 数据发生变化时,调用 AWS Lambda 生成 PDF 报表。再如,为 AWS API Gateway 提供自定义权限验证脚本。

  • 3 定时任务 —— 以往使用 cron 编写的定时任务可以改用 AWS Lambda 实现,很明显的好处是任务不执行的时候完全不收费。

  • 4 瘦容器 —— 因为 AWS Lambda 本身基于 Docker 容器实现,Lambda 方法跑在 Amazon Linux AMI 中,虽然官方支持的编程语言只有 NodeJS、Java、Python,但其实可以用 NodeJS 的 shim 运行大部分能在 Linux 下运行的程序。以至于有人用这个特性做了 LambCI 这种脑洞大开的 Serverless CI 服务。

  • 5 无人运维 —— Serverless 的核心优势就是不需要管理服务器,自伸缩的特性如果用传统方案解决会相对复杂很多。如果你需要一个服务为你跑好几年,期间完全不需要担心它的服务器运行情况,Serverless 会是最好的选择。

quick start [fnproject]

  • Docker ,fn cli ,nodejs

    • 用到以下两个工具 https://github.com/fnproject/fn 

    https://github.com/fnproject/ui

    • brew install fn # 安装fn command命令行

    • 执行fn start 启动 FN_Server

    • 请求

    • 请求实例

    • coder

    • yaml 配置

    • deploy hello

kubeless [整理中]

  • kubeless function1.yaml

  ---
apiVersion: k8s.io/v1
kind: Function
metadata:
  name: function1
spec:
  handler: hello.foobar
  image: registry.timeondata.com/firsh_demo/kubeless_runtime_python:2.7.1
  runtime: python2.7
  deps: |
    cowpy
  function: |
      import time
      import random
      from cowpy import cow
      def foobar():
        # NB: delay will be negative and sleep will raise an error
        # occasionally.  This is a feature for demoing errors.
        delay = random.normalvariate(0.3, 0.2)
        time.sleep(delay)
        msg = "hello world - with a %0.2fs artificial delay" % delay
        c = cow.get_cow()
        return c().milk(msg)
  • 启动
  ➜ python git:(master) ✗ kubectl create -f function1.yaml

  • 检查启动
 # 检查启动
 ➜  python git:(master) ✗ kubeless function ls
NAME     	NAMESPACE	HANDLER     	RUNTIME  	TYPE	TOPIC	DEPENDENCIES	STATUS
function1	default  	hello.foobar	python2.7	    	     	cowpy       	1/1 READY
  • 测试调用
    kubeless function call  function1 
  • 结果

➜  python git:(master) ✗ kubeless function call  function1
 _____________________________________________
< hello world - with a 0.42s artificial delay >
 ---------------------------------------------
     \   ^__^
      \  (oo)\_______
         (__)\       )\/\
           ||----w |
           ||     ||

转载请注明出处,本文采用 CC4.0 协议授权

Affiliate

Search

    Post Directory