Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¹¦Äܼ´·þÎñ£¨FaaS£©½éÉÜ
 
·­Ò룺´Þæºö©
  4447  次浏览      32
 2020-1-7
 
±à¼­ÍƼö:
±¾ÎÄÖ±½Ó½éÉÜÎÞ·þÎñÆ÷¼ÆË㣬Ȼºó½éÉÜÔÚ֮ǰ500´ÎcommitÀïFaaSµÄ3´óÌØÐÔ£¬Ï£Íû¿ÉÒÔΪÄúµÄѧϰ´øÀ´°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚCloud Zone,ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

¹¦Äܼ´·þÎñÊÇÔÚÈÝÆ÷Ö®ÉϹ¹½¨ÎÞ·þÎñÆ÷¹¦ÄܵĿò¼Ü¡£ÔÚÈ¥Äê10Ô·ݿªÊ¼Õâ¸öÏîÄ¿£¬ÓÃÀ´ÀíÄîÂÛÖ¤£¬Àí½âÊÇ·ñ¿ÉÒÔÔÚDocker SwarmÉÏÔËÐÐAlexa skills»òÕßLambda¹¦ÄÜ¡£ÔÚÒ»¿ªÊ¼µÄһЩ³É¹¦Ö®ºó£¬ÔÚ12Ô·ݽ«µÚÒ»¸ö°æ±¾µÄGo´úÂë·¢²¼µ½GitHubÉÏ¡£

´ÓµÚÒ»´Îcommit¿ªÊ¼£¬FaaS³ÖÐøÍÆ½ø£¬ÔÚGitHubÉÏ»ñµÃÁË2500¶à¸östar£¬Í¬Ê±»¹³öÏÖÁËÒ»¸ö¿ª·¢Õߺͺڿ͵ÄСÐÍÉçÇø£¬ÎÒÃÇ»áÔÚ¾Û»áÖз¢±íÑݽ²£¬±àд×Ô¼ºµÄºÜcoolµÄ¹¦ÄÜ£¬²¢ÇÒ¹±Ï×´úÂë¡£ÎÒ×Ô¼ºµÄÒ»´óÊÕ»ñÊÇÔÚ4Ô·ÝAustin¾Ù°ìµÄDockerconÉÏ»ñµÃÁËMoby¡®s Cool Hacks keynote·Ö»á³¡µÄÒ»¸öϯλ¡£´ó¼ÒÏëÒª½«DockerÉè¼ÆÓÃÀ´Íê³ÉµÄÊÂÇéµÄ±ß½ç½øÒ»²½À©Õ¹¡£

ÎÞ·þÎñÆ÷ÊÇʲô£¿

¼Ü¹¹»¹ÔÚÑݽø

¡°ÎÞ·þÎñÆ÷¡±Õâ¸ö´Ê²¢²»ÊǺÜÇ¡µ±¡ª¡ªÎÒÃÇʵ¼ÊÌÖÂÛµÄÊÇʼþÇý¶¯ÏµÍ³µÄÒ»ÖÖȫмܹ¹Ä£Ê½¡£»ùÓÚ´Ë£¬ÎÞ·þÎñÆ÷¹¦Äܳ£³£±»ÓÃÀ´×÷Ϊ·þÎñ¼äµÄÁ¬½Ó£¬»òÕßÓÃÔÚʼþÇý¶¯µÄ¼Ü¹¹Àï¡£ÔÚ¹ýÈ¥£¬ÎÒÃdzÆÖ®Îª·þÎñ×ÜÏß¡£

ÎÞ·þÎñÆ÷¹¦ÄÜ

ÎÞ·þÎñÆ÷ÊÇÒ»¶ÎСÐ͵ģ¬ÎÞ¹ØÁªµÄ£¬²¢ÇÒ¿ÉÖØÓõĴúÂ룺

1.ËüÊǶÌÔݵÄ

2.Ëü²»ÊÇdaemon£¨³¤ÆÚÔËÐеģ©

3.Ëü²»·¢²¼TCP·þÎñ

4.ËüûÓÐ״̬

5.ÀûÓÃÒÑÓзþÎñ»òÕßµÚÈý·½×ÊÔ´

6.¼¸ÃëÄÚÍê³ÉÖ´ÐУ¨»ùÓÚAWSµÄLambda£©

ÎÒÃÇ»¹Ðè񻂿·Ö¿ªÎÞ·þÎñÆ÷²úÆ·ºÍIaaS¹©Ó¦ÉÌÒÔ¼°¿ªÔ´Èí¼þÏîÄ¿¡£

Ò»·½Ã棬IaaS¹©Ó¦ÉÌÌṩÎÞ·þÎñÆ÷²úÆ·£¬±ÈÈçLambda£¬Google Cloud FunctionsÒÔ¼°Azure Functions¡£ÁíÒ»·½Ã棬ÓÐFaaSÕâÑùµÄ¿ò¼Ü£¬ÈñàÅÅÆ½Ì¨£¬±ÈÈçDocker Swarm»òÕßKubernetes×öÖØÁ¿µÄÊÂÇé¡£

IaaS¹©Ó¦ÉÌÌṩµÄÎÞ·þÎñÆ÷²úÆ·ÊÇÍêÈ«Êܿصģ¬Òò´ËËüÌṩÁ˸߶ȵıã½ÝÐԺͻùÓÚÃë/·ÖÖӵļƷѷ½°¸¡£ÁíÒ»ÃæÊÇ£¬Óû§ÐèÒª¸ú×Ù¹©Ó¦É̵ķ¢²¼ºÍÖ§³ÖÖÜÆÚ¡£¿ªÔ´µÄFaaSÏëÒªÌṩһЩ¶àÑùÐÔÒÔ¹©´ó¼ÒÑ¡Ôñ¡£

FaaSµÄ²îÒ컯ÔÚÄÄÀ

FaaS»ùÓÚÒµ½ç±ê×¼µÄCloud Native¼¼Êõ¹¹½¨£º

FaaSÏîÄ¿µÄ²îÒ컯ÔÚÓÚ£¬ÈÎÒâÁ÷³Ì¶¼¿ÉÒÔͨ¹ýwatchdog×é¼þºÍDockerÈÝÆ÷³ÉΪÎÞ·þÎñÆ÷µÄ¹¦ÄÜ¡£ÕâÒâζ×ÅÈçÏÂÈýµã£º

Óû§¿ÉÒÔÔËÐÐÈÎÒâÓïÑÔ±àдµÄ´úÂë

¿ÉÒÔÔËÐÐÈÎÒâʱ¼ä

¿ÉÒÔÔÚÈκεط½ÔËÐÐ

תÏòÎÞ·þÎñÆ÷»¯²¢²»Òâζ×ÅÓÃÁíÒ»ÖÖ±à³ÌÓïÑÔÖØÐ´´úÂë¡£Ö»Ðè¼ÌÐøÊ¹ÓÃÒµÎñºÍÍŶÓÐèÒªµÄ¶«Î÷¼´¿É¡£

ʾÀý£º±ÈÈ磬cat»òÕßsha512sum¿ÉÒÔ×÷ΪһÖÖ²»ÐèÒª±ä¸üµÄ¹¦ÄÜ£¬Í¨¹ýstdin/stdoutͨÐÅ¡£Windows¹¦ÄÜÒ²¿ÉÒÔͨ¹ýDocker CEÖ§³Ö¡£

ÕâÊÇFaaSºÍÆäËû¿ªÔ´ÎÞ·þÎñÆ÷¿ò¼ÜµÄÖ÷񻂿±ð£¬ËüÃÇÒÀÀµÓÚÿÖÖËùÖ§³ÖµÄÓïÑÔµÄÌØ¶¨ÔËÐÐʱ¡£

ÏÂÃæ½éÉÜDockerConÖ®ºóµÄÈý´óÖ÷ÒªÌØÐÔ£¬°üÀ¨CLIºÍ¹¦ÄÜÄ£°å£¬KubernetesÖ§³ÖÒÔ¼°Òì²½´¦Àí¡£

1. ȫеÄCLI

Ò×ÓÚ²¿Êð

ÎÒ¸øFaaSÏîÄ¿Ìí¼ÓÁËCLI£¬Èò¿Êð¹¦ÄܸüΪ¼òÒ׺ͽű¾»¯¡£ÔÚÕâ֮ǰ£¬Óû§¿ÉÒÔʹÓÃAPI GatewayµÄUI»òÕßcurl¡£CLIÈôó¼Ò¿ÉÒÔÔÚYAMLÎļþÀﶨÒ幦ÄÜ£¬Ëæºó²¿Êðµ½API GatewayÉÏ¡£

Finnian AndersonÔÚPractical Dev/dev.toÉÏдÁËһƪ½éÉÜFaaS CLIµÄºÜºÃµÄÎÄÕ¡£

Utility½Å±¾ºÍBrew

Óа²×°½Å±¾¿ÉÒÔÓã¬John McCabeÔÚbrewÉÏά»¤ÁËÏîÄ¿µÄrecipe¡£

$ brew install faas-cli

»òÕß

$ curl -sL https://cli.get-faas.com/ | sudo sh

Ä£°å

CLIµÄÄ£°åÊÇÄãΨһÐèÒªÓÃËùÑ¡µÄ±à³ÌÓïÑÔ±àдhandlerµÄµØ·½£¬CLI»áʹÓÃÄ£°å½«Æä´ò°ü³ÉDockerÈÝÆ÷¡ª¡ªFaaS»á´¦ÀíËùÐèµÄ²½Öè¡£

ÌṩÁËPythonºÍNode.jsµÄÄ£°å£¬µ«ÊÇÄã¿ÉÒÔÇáËÉ´´½¨×Ô¼ºµÄ¡£

CLIÖ§³ÖÈýÖÖ²Ù×÷£º

-action build£º´ÓÄ£°åÔÚ±¾µØ´´½¨Docker¾µÏñ

-action push£º½«Ä£°åÍÆË͵½Ö¸¶¨µÄregistry»òÕßHubÉÏ

-action deploy: ²¿ÊðFaaS¹¦ÄÜ¡£

Èç¹ûÓÐÒ»¸öµ¥½ÚµãµÄ¼¯Èº£¬ÄÇô²»ÐèÒªÍÆË;µÏñ¾Í¿ÉÒÔ²¿Êð¡£

YAML¸ñʽµÄCLIÅäÖÃÅäÖÃʾÀý£º

provider:
name: faas
gateway: http://localhost:8080
functions:
url_ping:
lang: python
handler: ./sample/url_ping
image: alexellis2/faas-urlping

Python¹¦ÄܵÄ×î¼ò½àµÄhandler£º

def handle(req):
print(req)

ͨ¹ýHTTPpingsURL»ñµÃ·µ»Ø´úÂëµÄʾÀý£º

import requests
def print_url(url):
try:
r = requests.get(url,timeout = 1)
print(url +" => " + str(r.status_code))
except:
print("Timed out trying to reach URL.")
def handle(req):
print_url(req)

Èç¹ûÐèÒªÌí¼Ó¶îÍâµÄpipÄ£¿é£¬ÄÇô³ýÁËÌṩhandler.pyÎļþÖ®Í⻹ÐèÒªÌṩrequirements.txtÎļþ¡£

$ faas-cli -action build -f ./sample.yml

Ö®ºó¿ÉÒÔÕÒµ½Ò»¸ö³ÆÎªalexellis2/faas-urlpingµÄDocker¾µÏñ£¬¿ÉÒÔʹÓÃ-action push½«ÆäÍÆË͵½DockerHubÉÏ£¬Ê¹ÓÃ-action deploy½«Æä²¿Êð¡£

2. KubernetesÖ§³Ö

×÷ΪһÃûDocker Captain£¬ÎÒÖ÷Òª¹Ø×¢ÓëѧϰºÍÐû´«Docker Swarm£¬µ«ÊÇÎÒÐèÒª³ÖÐø¹Ø×¢Kubernetes¡£ÎÒ´ÓÔÚLinuxºÍMacÉϴKubernetes¿ªÊ¼£¬²¢ÇÒдÁËÈýƪ½éÉÜÐÔÎÄÕ£¬ÔÚÉçÇøÒ²Ôì³ÉÁËÒ»¶¨µÄÓ°Ïì¡£

¼Ü¹¹KubernetesµÄÖ§³Ö

µ±ÎÒÀí½âÁËÈçºÎ½«Docker SwarmµÄÀíÄîÓ³Éäµ½KubernetesÖ®ºó£¬ÎÒ¾ÍÔÚ¼¸ÌìÖ®ÄÚʵÏÖÁ˼¼ÊõÔ­ÐÍ¡£ÎÒÑ¡ÔñÁË´´½¨Ò»¸öеÄ΢·þÎñdaemonºÍKubernetes½»»¥£¬¶ø²»ÊǸøÖ÷ÒªµÄFaaS´úÂë¼°ÒýÈë¶îÍâµÄÒÀÀµÌõ¼þ¡£

FaaSͨ¹ý±ê×¼µÄRESTful½Ó¿Ú½«µ÷Ó÷Óɵ½ÐµÄdaemonÉÏ£¬Íê³É¸÷ÖÖ²Ù×÷£¬±ÈÈ磺Deploy£¬List£¬Delete£¬InvokeºÍScale¡£

ÕâÑùµÄ·½°¸Òâζ×ÅUI£¬CLIºÍ×Ô¶¯À©Õ¹¶¼²»ÐèÒª¸Ä¶¯¾Í¿ÉÒÔʹÓá£ÐµÄ΢·þÎñÔÚÒ»¸öеÄGitHub repository£¬ÃûΪFaaS-netesµÄÏîÄ¿Àïά»¤¡£Äã¿ÉÒÔÔÚ60ÃëÄÚÔÚÄãµÄ¼¯ÈºÀïʹÓÃÆðÀ´¡£

KubernetesÖ§³ÖµÄÑÝʾ

ÔÚÕâ¸öÑÝʾÀÎÒ½«FaaS²¿Êðµ½Ò»¸ö¿Õ¼¯ÈºÀȻºó½éÉÜÈçºÎʹÓÃUI£¬Prometheus²¢ÇÒ´¥·¢×Ô¶¯À©Õ¹¡£

ÊÓÆµ

µ«ÊǵÈһϡ­¡­ÆäËûÈýÖÖ¿ò¼ÜÔÚKubernetesÉÏ¿ÉÒÔÓÃô£¿

KubernetesµÄÎÞ·þÎñÆ÷¿ò¼Ü´ó¸Å·ÖΪÁ½´óÀࡪ¡ªÒ»ÖÖ¶ÔÓÚÿÖÖËùÖ§³ÖµÄ±à³ÌÓïÑÔ¶¼ÐèÒªÒÀÀµÓÚÌØ¶¨µÄÔËÐÐʱ£¬Ò»ÖÖÏñFaaSÒ»Ñù£¬¿ÉÒÔÈÃÈÎÒâÈÝÆ÷³ÉΪ¹¦ÄÜ¡£

FaaS°ó¶¨µ½Docker SwarmºÍKubernetesµÄÔ­ÉúAPIÉÏ£¬Òâζ×ÅËüʹÓÃÄãÒѾ­Ê¹ÓõĵÚÒ»¼¶¶ÔÏóÀ´¹ÜÀíDeploymentºÍService¡£Ò²¾ÍÊÇ˵£¬ÕâÀïûʲô´úÂëÈ¥Àí½âÄãµÄÐÂÓ¦ÓóÌÐòµÄÂß¼­¡£

Ñ¡Ôñ¿ò¼ÜʱµÄÒ»¸ö¿¼ÂÇÊÇÊÇ·ñÏëÒª¹±Ï×ÌØÐÔ»òÕßfix¡£±ÈÈ磬OpenWhisk£¬ÊÇÓÃScala±àдµÄ£¬´ó²¿·ÖÆäËû¿ò¼ÜʹÓÃGolangдµÄ¡£

Funktion

Iron Functions

OpenWhisk

Kubeless

Fission

FaaS-netes

3. Òì²½´¦Àí

ÎÞ·þÎñÆ÷¹¦ÄܵÄÒ»´óÌØÕ÷ÊÇС¶ø¿ì£¬Í¨³£ÔÚ¼¸ÃëÖ®ÄÚ¾ÍÒì²½Íê³ÉÁË¡£ÏëÒªÒì²½´¦Àí¹¦ÄܵãÀíÓÉÊÇ£º

1.ËüÊÇÒ»¸öʼþ²¢ÇÒµ÷ÓÃÕß²»ÐèÒª½á¹û

2.ËüÐèÒªºÜ³¤Ê±¼äÖ´ÐлòÕß³õʼ»¯¡ª¡ª±ÈÈ磬TensorFlow/»úÆ÷ѧϰ

3.ÔÚÅúÁ¿jobÀïÏû·Ñ´óÁ¿ÇëÇó

4.ÏëÒªÏÞÖÆËÙ¶È

ÎÒͨ¹ý·Ö²¼Ê½¶ÓÁÐ×öÁ˸öÒì²½´¦ÀíµÄÔ­ÐÍ¡£ÊµÏÖʹÓõÄÊÇNATS StreamingÏîÄ¿£¬µ«ÊÇÎÞ·¨À©Õ¹Ê¹ÓÃKafka»òÕ߯äËû¿´ÉÏÈ¥Ïñ¶ÓÁеijéÏó·½Ê½¡£

³¢ÊÔÒì²½´úÂëµÄGist£º

Run through the FaaS/Async Gist

   
4447 ´Îä¯ÀÀ       32
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù