From ad5af7d7de6e47921598b2dff190ee13d4a80150 Mon Sep 17 00:00:00 2001 From: momo-jun Date: Tue, 7 Jun 2022 17:22:27 +0800 Subject: [PATCH 1/9] initial commit --- .../function-count-based-tumbling-window.png | Bin 0 -> 156363 bytes site2/docs/assets/function-data-window.png | Bin 0 -> 334827 bytes site2/docs/assets/function-instance.svg | 1 + site2/docs/assets/function-overview.svg | 1 + site2/docs/assets/function-sliding-window.png | Bin 0 -> 150032 bytes .../function-time-based-tumbling-window.png | Bin 0 -> 150774 bytes .../docs/assets/function-worker-workflow.svg | 1 + site2/docs/assets/function-workers-corun.svg | 1 + .../function-workers-separated-with-proxy.svg | 1 + .../assets/function-workers-separated.svg | 1 + .../assets/functions-worker-corun-proxy.png | Bin 12928 -> 0 bytes site2/docs/assets/functions-worker-corun.png | Bin 11286 -> 0 bytes .../functions-worker-separated-proxy.png | Bin 24788 -> 0 bytes .../assets/functions-worker-separated.png | Bin 21649 -> 0 bytes site2/docs/functions-concepts.md | 170 ++ site2/docs/functions-debug-cli.md | 212 +++ site2/docs/functions-debug-localrun.md | 68 + site2/docs/functions-debug-log-topic.md | 50 + site2/docs/functions-debug-stderr.md | 7 + site2/docs/functions-debug-unit-test.md | 71 + site2/docs/functions-debug.md | 539 +----- site2/docs/functions-deploy-arguments.md | 34 + .../functions-deploy-cluster-encryption.md | 28 + .../docs/functions-deploy-cluster-package.md | 26 + .../functions-deploy-cluster-parallelism.md | 51 + .../docs/functions-deploy-cluster-resource.md | 34 + site2/docs/functions-deploy-cluster.md | 38 + site2/docs/functions-deploy-localrun.md | 37 + site2/docs/functions-deploy-trigger.md | 76 + site2/docs/functions-deploy.md | 262 +-- .../docs/functions-develop-api-exended-sdk.md | 65 + .../functions-develop-api-language-native.md | 61 + site2/docs/functions-develop-api-sdk.md | 92 + site2/docs/functions-develop-api.md | 13 + .../functions-develop-context-admin-api.md | 53 + site2/docs/functions-develop-context-log.md | 193 ++ ...ns-develop-context-user-defined-configs.md | 162 ++ site2/docs/functions-develop-context.md | 30 + site2/docs/functions-develop-metrics.md | 95 + .../docs/functions-develop-schema-registry.md | 9 + site2/docs/functions-develop-security.md | 86 + site2/docs/functions-develop-serde.md | 160 ++ site2/docs/functions-develop-state-api.md | 294 +++ site2/docs/functions-develop-state-example.md | 64 + site2/docs/functions-develop-state-query.md | 22 + site2/docs/functions-develop-state.md | 15 + site2/docs/functions-develop-tutorial.md | 120 ++ site2/docs/functions-develop.md | 1679 +---------------- site2/docs/functions-overview.md | 224 +-- site2/docs/functions-package-go.md | 55 + site2/docs/functions-package-java.md | 111 ++ site2/docs/functions-package-python.md | 203 ++ site2/docs/functions-package.md | 494 +---- site2/docs/functions-runtime-java-options.md | 22 + site2/docs/functions-runtime-kubernetes.md | 125 ++ site2/docs/functions-runtime-process.md | 24 + site2/docs/functions-runtime-thread.md | 34 + site2/docs/functions-runtime.md | 406 +--- site2/docs/functions-worker-corun.md | 67 + .../functions-worker-for-geo-replication.md | 23 + site2/docs/functions-worker-run-separately.md | 250 +++ site2/docs/functions-worker-stateful.md | 76 + .../docs/functions-worker-troubleshooting.md | 45 + site2/docs/functions-worker.md | 409 +--- 64 files changed, 3581 insertions(+), 3909 deletions(-) create mode 100644 site2/docs/assets/function-count-based-tumbling-window.png create mode 100644 site2/docs/assets/function-data-window.png create mode 100644 site2/docs/assets/function-instance.svg create mode 100644 site2/docs/assets/function-overview.svg create mode 100644 site2/docs/assets/function-sliding-window.png create mode 100644 site2/docs/assets/function-time-based-tumbling-window.png create mode 100644 site2/docs/assets/function-worker-workflow.svg create mode 100644 site2/docs/assets/function-workers-corun.svg create mode 100644 site2/docs/assets/function-workers-separated-with-proxy.svg create mode 100644 site2/docs/assets/function-workers-separated.svg delete mode 100644 site2/docs/assets/functions-worker-corun-proxy.png delete mode 100644 site2/docs/assets/functions-worker-corun.png delete mode 100644 site2/docs/assets/functions-worker-separated-proxy.png delete mode 100644 site2/docs/assets/functions-worker-separated.png create mode 100644 site2/docs/functions-concepts.md create mode 100644 site2/docs/functions-debug-cli.md create mode 100644 site2/docs/functions-debug-localrun.md create mode 100644 site2/docs/functions-debug-log-topic.md create mode 100644 site2/docs/functions-debug-stderr.md create mode 100644 site2/docs/functions-debug-unit-test.md create mode 100644 site2/docs/functions-deploy-arguments.md create mode 100644 site2/docs/functions-deploy-cluster-encryption.md create mode 100644 site2/docs/functions-deploy-cluster-package.md create mode 100644 site2/docs/functions-deploy-cluster-parallelism.md create mode 100644 site2/docs/functions-deploy-cluster-resource.md create mode 100644 site2/docs/functions-deploy-cluster.md create mode 100644 site2/docs/functions-deploy-localrun.md create mode 100644 site2/docs/functions-deploy-trigger.md create mode 100644 site2/docs/functions-develop-api-exended-sdk.md create mode 100644 site2/docs/functions-develop-api-language-native.md create mode 100644 site2/docs/functions-develop-api-sdk.md create mode 100644 site2/docs/functions-develop-api.md create mode 100644 site2/docs/functions-develop-context-admin-api.md create mode 100644 site2/docs/functions-develop-context-log.md create mode 100644 site2/docs/functions-develop-context-user-defined-configs.md create mode 100644 site2/docs/functions-develop-context.md create mode 100644 site2/docs/functions-develop-metrics.md create mode 100644 site2/docs/functions-develop-schema-registry.md create mode 100644 site2/docs/functions-develop-security.md create mode 100644 site2/docs/functions-develop-serde.md create mode 100644 site2/docs/functions-develop-state-api.md create mode 100644 site2/docs/functions-develop-state-example.md create mode 100644 site2/docs/functions-develop-state-query.md create mode 100644 site2/docs/functions-develop-state.md create mode 100644 site2/docs/functions-develop-tutorial.md create mode 100644 site2/docs/functions-package-go.md create mode 100644 site2/docs/functions-package-java.md create mode 100644 site2/docs/functions-package-python.md create mode 100644 site2/docs/functions-runtime-java-options.md create mode 100644 site2/docs/functions-runtime-kubernetes.md create mode 100644 site2/docs/functions-runtime-process.md create mode 100644 site2/docs/functions-runtime-thread.md create mode 100644 site2/docs/functions-worker-corun.md create mode 100644 site2/docs/functions-worker-for-geo-replication.md create mode 100644 site2/docs/functions-worker-run-separately.md create mode 100644 site2/docs/functions-worker-stateful.md create mode 100644 site2/docs/functions-worker-troubleshooting.md diff --git a/site2/docs/assets/function-count-based-tumbling-window.png b/site2/docs/assets/function-count-based-tumbling-window.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ad6b613c5a8950f4a3c92f29d2859530f3e9b8 GIT binary patch literal 156363 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 dzEyj5XVP!1*MCHIIP0^zyX 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

LMDrYBSr6XlRVNJ?pK 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

F~)Qy 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

RmC_qL$i)6J2)MczKv? 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

;WL%%qPalah^^ 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

NsILr_=7Qj?2 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�?8rroj#FO;)?=Ui<8nvklUzxcI#r{Xue_dk%}LFx-{>Dt z81~%CFT49>KA1|Zgkjg7hvz*@YElu&iZ0&*e+ljCWgHHzn6ox-4to}=Q1&Iyqdbn4 zP@Vqj9^PSc@oV;>&^fcYsbhTiHOKSeQ_{l7L0Uk7G6Ba9(=6}KU5AH^3Cb_w(!VY@ zyg@kKWvz7r7d6$p`p#Q?Q?Gr}iOoyE)y0G^+9t9IgsSI(v#I4*A!Qf$@#$6qDH?fz zM|Tq)iv9eJd)SckWk+FFeK~@f@<4)jGfEZfBzI3Jj4;eET0n(TTk@`|a>9|!}$}_jwFvbqfk8oR^vx=F^ zGVxVgk)miW@V;;Yh-R_3EBAD0NXtuSqd@zz)G>}cYSos--z07~_#9^OynMPT=1xbz zAc&Lg@3S zFn-MxIBH(KoUO+R3@BT9ukpD~dcXO^Il<2maT@Z>lgDmi3zPg=w&~_0eax#VyTHF# z^2P^`xuP9hIZZ7;y~9pcX%C?mYd?BXg2Y_g0kU@!v}K-9q8-V1rPTG3g^~roHPR+% zl{zv1-E<@PhKbHXgK&-{Zr9#*+WGRgDW0?F@NX2?X2p^=s{xI68Sf8)P?LRUb2+-n zON_}Th6MU4nmw6LDD$E5d4IXlZqQ*5GZ&0>vv z#C>Wa(h@_Gf+UmnLrdr`YfDa4pu?z^gB}6%_64j>a5~=~m-1#Q2ftio)_FyM>fF|D zQR|xC3aI&q5pOAT-?;+qx-lNR{9+)+$p84x6Yo@b_PG#%zdiNZ;xbRXMea|=Ph?ogD(eV-XJZL5=H9C78 zGc2DFtI)Z{a@UjEK9?5P)T?Mc78n^cG0-2O0|bA{56xA>i;PxDN8cq9Qc$~0(M_T{ z-pORhHxHHYdk$}&muXPs&Dh;YBpK&Xxmbxy69;=F0etzw%zgJ4qa#PMQK=L`Fp6xV5?wWo?CSxl?216>?nR%U5c z9rm1hGp_;tGr{W3;ON`-N{b8m0(}2Fv*S*fN0NQ=-rahf%&M}2G+OW(P5d*ygsU`@ z%uh+5PHg;&ZM_+67@6||_g82IZ`2ne7goNdEuNHS9vqw=R-IOsjq)AfanlF?3H_jt z%?Ry8jbDcD5%Tz*mUA2oo5evRgMeO8pxNbu$2ja4)WF;{q4u$QjXmjirY-;HTmPc3 zj&Wi2GLzjiKtPUy#+;In#_oIQ+bv=YDhA4T(m*5Xe$w5W`Z-Vw>%-G&O-BiwcNAv30XrZt@-(Rd&S-|*CFnH!lzHqFk_U+a= zF4{|GJZI*segelH?!c`vF+(av%+o<9$F7rHsEO+XxaU<&qyZgDYtMN7Jjr(Ov;}im zEh-#K%7h6JS!8zqxp2;xE3U5~0>I3hc5T@i67_j!J^keeuZ6Hs{JbKJnh46JnuuX8 zFNDI)1jB51q3%?-U+2ujZ(^WbQKrRc;Yr~^9d<+D-`^XHGKhhKU1qPi+KA!rR`^33 z-^9rkCeWmCpK%d1e3(G9Dr!_RdyD|Prm3s15^K+W2}ErZl;}1&@)*tTY@2#m9O*Ap zf8~n4WLt-UDv!$DtX!OM!6Tl?CzmT_w~UXVSimw@V%3PXOAl#Dv0Hoj#vgY*^g-c; z;8S);6SDu=x()XQE_lwco}vF?GMMO6@^ORGT9c#CCXgyOyWit@EKKHhd#sXQA-%*qq%3S^` ze)nj8@UA}~0~JV03rVQ~`1%o>C-0K+{Q)-16`_Ie86zin$a?tb%wISNGB_9mD!`&Z ztcp0b%+?pPFW&GoEq%Q?o$h?P+)$crZF6-f^uNojo8Yi2?9XV1Rq{&eNS#-@kISRq zreG)K^~B1~jylElPC%Z%EZo+{sohtpzZ`$3#kcF=>64wfhF|#i>1LmLaw8mzj89

+@IPJ2^_sg+xYt6(^nD{?tyx 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%0D-dQ)sWq6?6iW%m3_ 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 \ No newline at end of file diff --git a/site2/docs/assets/function-workers-corun.svg b/site2/docs/assets/function-workers-corun.svg new file mode 100644 index 0000000000000..d11e15cdf8690 --- /dev/null +++ b/site2/docs/assets/function-workers-corun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site2/docs/assets/function-workers-separated-with-proxy.svg b/site2/docs/assets/function-workers-separated-with-proxy.svg new file mode 100644 index 0000000000000..627ba47643961 --- /dev/null +++ b/site2/docs/assets/function-workers-separated-with-proxy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site2/docs/assets/function-workers-separated.svg b/site2/docs/assets/function-workers-separated.svg new file mode 100644 index 0000000000000..d28df3bccaa41 --- /dev/null +++ b/site2/docs/assets/function-workers-separated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site2/docs/assets/functions-worker-corun-proxy.png b/site2/docs/assets/functions-worker-corun-proxy.png deleted file mode 100644 index 39429685f38909c95cdf5e8147444f6243981e19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12928 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 diff --git a/site2/docs/assets/functions-worker-corun.png b/site2/docs/assets/functions-worker-corun.png deleted file mode 100644 index 224d114fc48c6dad5911f62c45303c7c31a06ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11286 zcmb_?c|4oj)_)vr^-$EQc`Vw4nrjxK1Jd>s4OJZsEiH$}$e?&rZ7Tc{wv zG(QLg5w5(9m+Hvy9gy?ytNG-X59_;%w`&O8_6*dKJka@J z%0O~g)Xv+UwTAc1ckh9_UHvdle0%-Mj*I8(8X>1BRoyj z)%6am4{vdU7sea?w&(P3{}3I~dwq8-M(thX$;OEugQ_X)R#a%=JJ!NyE;wPqEh7Eo zetlYXidS)xH=3}Q-z($RCzz7LZVrfZq=irV-Y1=h!gn#ZF#9KY1&@160s|pOAbS_1 z?kVc;ndDVe*bj6)QomPv*J9K|;q9*3S9S~XZjasW`bp>Ry{PT69AMC~F^#+TUI24| zJQUs@>MeP!ep?pL_E7yjFRpCM`VZ8;zp!8H6=x?#l^8A7H6)l2X9doWc?CjVp#jf z?YQ4m7C*oPB#S4Y_YoVtDGUkiQw>4;Mqn5x(^KEgA3Y;Lx7*s#){dJhGFz>{eA<^) zx!%;s+8hh|xkH4X{s7H2KIXSIN?J7Ht~Ii_y%a6(=*reuBZ(`qHMw6I5{BVhaCtvs zhw)k%no)fOxR7(}_#v!^r9o^RUUtE5t82t!Rrbc(%TBj85nX9>E1p7xyh+W_1t&K^yf${*!g^b1^ zC%c~6-;AQ3Gp5Lj?93LSEm>!KNJAr%bZ=T%FBBl;%Xu1JTZ6xOij0hX$#|J)|9v9? zTPrp6R}&$jj0Xc65vu_akzd9yj1@fja$!~#l?+T}d+jc%rg`-2v0@uL7&RTr6eIIm zpFZK1`y~F}PZD(+u`b3$8ESb4=Nyrs&rtvbJ{0bw*O~Mxx|VvoK2t_d-JXEc-dr?m zmR?x=kZ2Hp{)dA_&ys%JOm~)&7R)1eKZuD8sN`v&$HE6ay`-o*>24-q+B-edQ{P1a z3w60&;2u(N<@`nFE9H(y$~RAztOigHCsN5GAuyI9-IpQ|cmLue=$P4=1~Dvw^D7r+ zN4!e!lUHjZ<<6_(^x|>EKtIvQfI(Z^%za zgO#8SADAV%S(8?cH*T3XBnw8fYjdx9*soPY4%Q?dMpwKB=Q&@+P*k`{sMvD=9(-T^ z{R;8sRvu4Es`3yuGtcoaURlk}#+ng$iXNOX7Tz0DajiS?Wf9H~nx=Gf_zV|3QVCJv zT1cNAPAD*cDV=M#80ech`+$@}rj)wMt8Mk#Bk#ZXWR-+d(q$SWeT5#ZbjpgAA1Dp#MzI*l2{ySXH7sA161w~3R~NZ!!=CRp zCn)qu7RumNjF}Bg`^-mN{pwI3j6D(p```yDJeW>`dsC(*-t=#%RW$Q+T$ z6=LgPOXv=%NM5;v-}la2Ml@0s&WT8u*FlSsnP>5SB)I(Rq$#A5N<-)3K$Pl3UzxZP zIk;)&J}Y?1Qbki}b+CzBslS`+7a6#P!20r>^RPV_c}{#P9pi?&=ydwYBjJ)hoyFeN z8VFoFNlUY#o2p~^(sK119C03~WG3=vpl6qD*(vA+=*xizt4k+{jF{lAnU{{r zG7gp-nt{K;174gAE12>Dr_Zy(qmg0ebrsRbbu4;Eg|?gKA*>$deU>@&1@e&fCF7N; zY?Rhb`SJGTx{zD>?h?$?>6vMT(7@xU8!wrWMT^tMsdi?LHVhN)zXUp*R#`NeaX8%icSkoaa<0rrw&+Uzc5f{;U>VqjR zd-TsjrJyK}L>()-LE~-*^QFVzW-j~%i<;{e3RYc1XH^3lmIP(LH4D*M~@c7xfeJZf-;b*_}vMcg;nR^-hILOc$Cqo5Zq~_nQYSelcneX{j?oe)hW~ zlcS2I#IM$|4ep;G1lv+4uWn55kf`>Y&+d}y0ml<@T1y6tL~8yt^5pZFzUPd`1|0eF zZn_6ir$xEZIpXJ(*R7P9Sz`iHMk!=Z*Y3ai?OeCyIJ&R6$V-<>th!2ho?7Lql&e35 zzA94yH;K#@r=VKP<2N$e6(8}w)1)(cmotlGI^(juwBGCtF*_&xh2SD=V4uY*pHJ3` zX5V8=QDLbz)+qziGMf)FRD;NU&ygAR-lC|XUQ9xTzsFD%?!{EvgMOGNJ&pB9uyClP z;t4%1o)gT>W-nk^eVLAsiR6SM(AT)+?L-AYv`++kuSrhHgyVqS`|8yU)pLXlXgW8} zVtv?4{YGG6_b@H00)n*E?3-9QEJ37FXlcM}ctYBpMZKk|G`P)-y>UR*iMp%N zZN-4{{NF`C6uuWL3|Zr5<6gO^s<|wF5I6n!f_CUZ2R&pvPu|7UYKfCWu8e*utrOpr zIDH7K;x9>vn%_`1Ou}9=Xc}>fRQeqQjmv5>qS>YrBI;P9)4v`+y(mF75B&n01?r>k zm?cWSzmFj3|Lj*pFVKkkbKCy-EQk87ck$R*Rf-@E-~R?TxYey?dg}K*_#ri#?Kg@V zj;`z9{Y0nk?siFZx(BGXK+CUR}_B7^IMp={X9`dw%A4(CVX^s{4i+x+NH>)GF=^wib~IAx5N3W}X7NL^ zpt8)-xfl;_6pp81{YzLm#R5ZB^rR2;L=E>Q9_H>^cs>!3^IP&l7b3XB1ck^F1^9rx zgjKwBr|CIX3#@l}6hdFu0^dQU^V2sHYZf{JTKOCd<5SOM7WJduJ>oOp=Q=OGKN0p# zx--D8)Y3~D`h*$%3v;k>HKfLl3Zo&FXXy!BNh<|%XtQ33QAEx4dRdRhB%t#AZ7WJv zBJgeJ63Y*`*pj>jCfnth-huBImTy@ML`=pkAF0Y{lVxf`-%#tyA*Cft#@;c_-OlGW;CN>oMr+^kMl~sQD&uY`bF&rI?195=m2AboK-j}yv#KtTjUgVW7P46$&lZVTGW11NqKO^1m$*w)zd5qYtpR;Lc+k$-* zeN*lc`3IAT(trjN*P`kYCFHRVBc@d|haK!c8Lzub(J*7A05PoNo*Efz@=L!W?RCPS zBD+N`XclmmjAdBEGiV43%1o9|ILq9^`BrLx9ijW z3a4Sl6g3wQJZIRJ(gK@mm$;8r+BY4iF zhYongCLWgg=2v@(@mD8U;W;()p974{W7;vW&NEX{L4L;*CF$$|!!)bl>ftM}F|0}6 zCWaVJ4t>@u3x-}@fKb0m?*`Cxfm>>kI_a}!cFHFup;bs1Ohoft532Li?~f5jCHJ4N zpxKr{W5bcU&3-#L84V+sr%CyLR=2>eSZ~dJ;(P+zZ7`sAajE^R=0$eFS#Xbrz%X{X zxBx+Z?LnX^wY1yBSr0UmMao@tDbA2S_xhODDZ-Ch{2w2^Sk}L8{?0FG^+L1N?&66r z9LF}>j$YeRh<4Jkb$qB?C9Xh%rx5(X?RRI_CPyQ&f)6-E!XxdU3UK*wt&ch7=C!Pf zE?C%^sse<+_IdJkUmzu>zl(paJR1wX@l{E|ul&lS)lrm+6#LuU8-`)iM6nGgSl*luAC^aB05V7SP`MEl>1Pn|}q+XS9oJJ*uAi%#+%yGBY7oxF>F zxh7%-ww32!BJiA-^0i*z1ldQ_v(W5j4J>lquw3=bnAvC5?o{@(@#(j|qUv-#G)lF2 zAMH97yYD&JZ~jEc(IbYVRhRR~kJ@+jXem5_;`$%ZdlpSP)lzDtCq%!T$Nlmbgcik- zJ@9Wun8m(Nvue^aEwy5nWvR(+j=f71q*R+(EuNEI&3%!%^9=*iygZ3yyn#HA9C&^3 zIQ~}=5u=<(!suVGOlH)3Dr@=6gF{Ak_rAmR>L&Skq&GQRWwX9@KMdN{{bwF|6&tGZ zK{r>WAYHi$8!1QCr!h*ilm(V-&V4>(oK#g7QrYxc5`U&;*V~!N2*Kn3?I#}UA*^!F z!*m;j(TC#+q4m!s$F{ocA{7n#bHxf6Chbm9>n0_pGhBRv5J2eaC9W-Pm|0z_sWL6$9awA6gOGQHx-Uy@&mqnY-_ zcQzUpGLCVcj0zU4J}+a+uVyZ;>s7j(ZZFX%ckaMnQX*WelfZc+cC(?wsWZ=^tVuOZ zjJ$6!1rkv79A|^#sB{e-Z3;RIeL4;voLo-bCJ=xaf7=#~v~;d|#;B!FBVB}Szm0&@ zQV8iC+B;<3`%O5POp=zd9(W>IoiJ0VN9MF8aiWNV)FGsZz; zpYNwBj~_9GtoJcW+W5lybnb2+l>Q$c<$vZ)_`MXjOG1Fk;T-v2(K7$DxPKy1wyShN z?lzS(m!$P?5kUVtP227`rizXJ1nlAHZI)=g;{Svi`Ughp58;5H{u55?Z%z7*N(1}^ zuxZlw02Ke7;EGS*9Mg{2G>U8v$^n?FfsyYu<=$hEzKHto+|x{I#rSHWwp-N}Q&?-8 zw~@%=a@=eyT&VM^6Kq<^Mr#(=5@5`X-(tRoMXqMFt-u9VgE#m(BY#%NMr0a8uVGf6 z*oCX`)0txT6(TlTz1)HWV^Q>i4C}zO`}W3A+{WOL5oCRi-)r(teH-6G<|DpwQnB2^ z(0A5rFf$lKZ6p9e7%$dE? zIczobLpVCwVr@oSOW^jjDDH+T_K~oVk;2svgAms^dW+N|PpPItLqvv^yMMEjJZAHq z&3msa??`5Md1p)!d$$s|Xrx@Tm@~$#V5k%geB8n zCr$^i*&>$>;@4c6>!|7o@K0wWOSu}ZxvUc~K*N580=8T$pX@0}OBPfloGL(1#S^EG zgr;|wiju)!baIqivnbuqy85s3rIBQE{n^v%Su!LyyOl5H^ z?ezJQQRRQU3hEaC>80!zBLgvgRAy;Oj4T^EhJ~9AEZUIghbI?a@Y7MR&S_TeHI1Fx zNGvgNIX+gUEU1i*F|GJQ?CwZYC$l;IuwLt@NG04vs}KPW3KvucY6aJ88pb zC_agf(Tvsuu=4FG$aLC-S2uH?LOwc$!zwbqd$T>S!jW2jxN+@)>tC{2kodPK&0WO6H&Q9768DC0PXC}#Ii z{DbmLZ#qVn=3klIZAWQ5VKVYABTSS!m5qhEVXl=TC!FpRr-M>Dq~=TwF3MP=ABVR= zmJDWNLVc{io9ve+JiA`W!%sfaftR%mB0i|WJhYn0=`?1PJOQ^9Px>qL!U~1n1g{yqk>Q>tU zICl&ZbGz8q*E@^wQ9tP#-{|d%G1DE(I+Uz9p{sIuA*?4AVFM^mP7b( z&PWF=6J?z`i~ZG+cBasN@X&Yvq|@$TRi5V}hTJ7M*J@*{0B&Z5NW$|n(Fd`nJM(=DmvtF;@SUU%Uj-nJdUa;SSj?SA<049H zmUAouGgSJGIFY@@lQv90-{v<6YhdLJJNPc>2dw*q0A46dh(=O&R=OBne8Vi_+D^U* zjk-cj^v&#hk04){$}eEn6!Q8-vxSE23Hagx)LElTH*S3E>tdTMjMNDEcbO)*upBAy z1YGADq3ZCt@5?oKK;esRX#hU3A?GD$l2-`+#v06YFS#1=?GWGRr6wyEcnQ9?Yq+2F z^Dj`Xk9-{SZyi_2N|CXZDj)eS`AHTlHz<^o_sz!P^MRu0e*ah_azHL$Yx8lDBly>~ zjnEfI=f0wZJm9qp1U%7|nrCz&2A*FeM;%7J4A9bZC^ga6_W`>D31}2eyW>cQ`cL$d zwj)+O8u^}L>XK7EfB8a}ORm?{3HXLl(F^Zfk0r5E)Y`cY#ifh!_=6e&7mb7DR7)ik zKk}89U1=aY79H-mmcD4cQz~4de)4sk;hL>OL#KOg>`IHebES32041L^vO?Gx>RZNa zqAM#SNcj$|P+)&_0XI4RZjkc_B{bF`lf2933YH>+@_XoqlR|Q%b7KKxOB2Y{mr}6m1|tQ@@M-;&3Fe_ z2&USmxv7m4uxZZ^&cY>?B}BOwc%$2~l-J$F5|iv#2=QaUiDZBh{hwbz{Zq0QB_Epx z7@X~?0(WEo?tRv_xH-T2z2n<=L%^jMFjL@mE72bK1H>Fk`Zn7SO3Vb(%R zR&fM=B`s?tQp%2I5g8DDjO#qM2ZT63-!4$A(lMd3Pn=8$>B0ov=Di!2m{YDf>huD! z3uLU5MB6!vqb=b2%am)W*+A1}xb8T%TmM+xT?yuGv}+^p5fNr1`1Pr3vVklxs%=*W*Au&-a)sy(ocR}1J<6->L_KohA=BSlG0bo z!I#Id)FpRrO{cghxxAWVlBE$0xP7^=+uqDeWFK{?TluJKtF^BEQdC5W~v_g#|^J5i<0RbJeE#l8&|o{XY*F%D#bvx%s?;KRGPgn zQ77Cm%sduTB>J3g9*unJpgEtc#BP23!&0N!+N5`2rFoK*D%Q?W73*al%^q6J7zz;L z2T6X2-h1q{Bui5@n{5*GOGK#dR)%!aIaMs<1PkV186=hmB{a5;^(YaCG99h43QHRs zzv9jVOmb$&NTqz>pgK$K?p}xJx(mA%tq);YEAh27?AW>he=qw5FVDt*^*X|2j$#GBurLC?SkaE*{bF)U^+nPTreAqIa z+2$CG?zoSEd(ce(eC|UJZp%%|s6|gE#!uQW-&)C;9$W!2I9*-}>fZ zVG!tYlnNV=CmyT|yktX9ca^2ypOFTEK24ld!`e_lpj-0Vr^fs$fQ$OTyl(x|-&^cV z`MtUgfc^_PIE0}KF9;M{DQAUjGIs-nR4oP{9oy)m0Ifx4ZfA@wR+d1Z+VShsQbFN1 zAdqZDv$`nxl`jZ{_?lUC#yB0%1FAiG=~~*oZMCvhj<2q#Za01SvxzO!BK|6tJH_x%@k{QaOmtPYHQAvBO#X$ z#P+@xp!eZZSdkH!wXar{E^Ij10uu7oRdk&j3j)ReZ0(QJnLl)@QYn@p$&srBE{V}r zA1p?9n*cjaT$z|J{>mxt%YAM41HlD#Aw$dxjX68Ad}lm_7o>yk+6cYav{bS!v&iq0*E-G#qI<>QU z35ehGgwg7oun_{v6{lHyUlmJzIqB)^`h_C?jRwT=ThB4fQcg`e{wand%?ym0VjR@g z#_~z3)u0z9cI6`hFqw`dOnB zFC#7;YD7A9RgK$NpR1T!CZ=Z>oHrv4;FtA=Hpq7XNrj*M=&A}N_E+us>dpBP2InaW zy)m^;66?HxJRAJ7E(C4jGbl>a9?=^Hm%Ly|xTjN@7Z(giL7=ziPZt_P%-4e`u^kj# z%hu*<24Cbi+Dtzw^g;`_iWRbAORgb|=gohNW>;%xZL+z{&{cLDJhU8MoFGuLb>AA8 zDKXkJLx|uz|R;fH2S{Bb;txz!CrQvpFp6&6Jfce7apyj(E!+MH)uiwxkO4wk;Nj$bA#kTkFp zTb0(gs81n_IrVL@=_f_ikwBb~G*$Z|rKs{*FRIJlZej@rlzY2CqdKuP`Vj7Ib+>wA zPVHt-X#|rM!DSXfrZ4$u@%L!7FywX^H?Fuj-wie~S})`y zi8Ov2SsQn%`GmYO4jY+Xvq>4|1&tzNX%bTa zv0J1mHAm!^P8aPoBR4@DQj;!1Q?y%<;{m;;CJxjglN}GG32fZcFr&((HiUKTa@~2L z=E-tc+J#IZ!1RVZR-f`~W*(y8gBhYLq);cz{b_c50-{;d2CWnFi(Y3)a$PycY#Bg|X!eO{_E*-U zf$NG6qGbQOfUaB7?1ztbE+#t|ti=xC!Fzr zu^o)k0{M3c|2VdqQ_r+|9^ZPrKTx_O&bzN!#_tf8S|W$TkAjFpW~>`t*WR3vaw@Oe0OX%zVIgMMQ@~hR;iGU>4_FiH~S0TZ!%iM!*ST z*f$`~#Xo*gflIp-Nq0)wj4-3GPR@-4X-BQhKM0Tn-Kv&QCI@6fFck>+WcPiN8IUN3 zj7S@!)U3$$d|{>Wt%>5*3nQ%Rkj1YO3j_WqegM_FO0=i=f|CMQY8Z_x{pCMM15$KJ z!2$1Xm*?M-cb@_blI+N@Tym)nE^=*X@w0AgH6`SZO2wp)J5w7HJbw#U(cp$c&u+KEtTkexHvTmy8dFb|38ZeC$Q>Sy{nJ#|}L<;V*l&^;~FEJ_ZtweW3_ zeb^Nb%+K46yO7~&_5B=q1&|q)GV?QFX_;@(IQ4@;It8-3?~Wrdy}o@*Ikg-sROvMP zd*ujn*J9VWiT3$GKaCihS5IgI8^C&?N8i8xlql0{fc{zqkP?FqL@PLTdlPZfG!wu{ z#c1XPb+O#P?GW&N?A+xsOuE*u`3!q?AT>#5*H*pzp^?MnIG3_-0d{JZ7dlA$Gem*q z5+&D*lUZ1E7?7m05w7Qqv&@3+wzC}&PW2KnvysQa`0X=havjI;K1m-0lDSU*VWbJc z3yj^hKx^%vxTJ42ajL(g?;_te z!EF!(@m;=j{u%^rghLSb(=9yUjWj)J2LxFrUp{~Kx_967z|}|Y{T>3#^4~s$2yWRB zkY#Y<_s!t}+B;9TdkuWpIeI_$@|h1@Uv+q{>hz0xzkDn)cy!O%gYBfbQ(Jbc>G!(O zbVRpU3C=${)vd^N*6+xN+2s-PT4mmwq?p^g_@U)&opGO1wmM){b;e_KB z>D{*4D_!8t7#-5N7)nhZn>7`FEaoN)8<~gP`Ha>cR_yomNHMscKCUgoRK=cGB)5 zHu+MD;_0Wjt>{RgUrJ~y17pX4H?el|-Vtx>>ximAKClsXwF*L>+cWM#h!y|5ASo!e zmIgt!wG*XGAKf)pt8#P^@d8Pp#Bnmri&uuoI(e{WK!52ai#~qT(c<$N<{ydQQ@NmE zZn)evxwM>zV)qs=^wf>E?sXMnbFr3gGe+)VR@)%^$yDT9Y`W2|=&D6aNUPJ*H)P`dN6m4rV*c-A=$dK?*-XqQFKc&e>ps-I{47=&1i zHOcEfWdqyS${KCMLKPtBVrikt0a^TInpRqp02H!-O&l=4=hu&8O}b#!Re^j>4^@@O zdll+F={jQ2wIOAV@~K<b^d4YhsgnnEyD z+EJvm1s7ED>F{aA!(~14b@{x|;vs2urd90sgsc-&)UnJjT+mB>Q%~E^plQ2JvWbYG z2n6jn<&Bq@cN*lW)vrd~t1&M@3=E2b_s1>!dk=X2v3dA;rq&w1A#)0*(${)PeEK8v2O!82^?-0{s0-h=(Y z+yWI{oXqdQXWf!kxx>cRls)-4yusV_s@%OrX~MCMfT+ydY8e{?o#;(Izfv!8W#fmoy9Yr?i@k5F7sew#HX{U~Q?&&2`Vg5s7aXqV zzx&N^@V+{~UX(DzOH|R_u6>0oI5sXxFmE;|29?mgpyB|z-nxmpr-Lx**&+-n9XJVB zOpADVo!7*71C-+ud90Dds|#7SUuadS%01}>4XaJv&(e)bIQcRl;JY0clyl?L`%Z(m zm`%aI?;<0tz09{P5wUnw_ZpLSs&g5`G`zLKM-y5m3pGP5x=eXj@jyPQfMJU*; zYkMxL=q^8`^ys>KwQ09U?}Vu$cppBPC23#crftj>9N?=w)={$YsLS5(m$;ySj-z+{ zkZ%4fvu#q_Af%ep%+ZiRZV-#9K6oA*+wWCP^%%4=UE zn(vPfT#%ELqE!5h6G~SKDms~3qSPe})gJ3O@C@54X#Y68R}iW#$Xczbbl6#Pfh+iH zM7V{IS7+6o*Lg1?$Zz4DPL?A#xeVvOtAdvsppdT8Lai@7OBZg1 za1<(GbYi2v&9S_buc2DV!#U;0hs{h7-logBAk*DO`dq<#3pW;wh`hkCg(@qzQ_wz^i<~dm@2fAU9UsKP3E4Eg@?F7 zf;u-OW2*ASdXWd>{mhB{)mGMZCR;i7dNT8R!VH3VJ!(57+)RlryqW-q4GvUIpM=g7 zq)Qqlm0(Ul!dGYB*}4b{fjHRS1KebuXQ?vY5VAZY_IaN7d|zxG&=v2KsVfqNO2`AU zknm*-w5ByT^zybdj}vH(;R@!Sa&UTab1T$dXpR1I`yvmt{e*5#7Z|IDL=nSPl@tRa z1~aFN>=`bg(NZyp`St2Cy}ewu!H6e{FbL{KS{p!0e^hMkro?(NqP9S_o{Dji7r2IN zJ9HvRJ(pN6N{1n6D$iMJxz1vFSyuHl~Xz%(bfDd^nc+})X+C&Lw5Idk`C(<5{ za=NWIkwbU#gq%Zg2IYbj;17PbtTXwa;Ss<6XZ&-24gcVOm}=$A@Qw%E;*lAc55cAy zjSI?T!u(F!MgLtpW{MNb8n-czv&Yj{I!Qaj!Gt-2p(Sz&ly1r!4Jdh0-njE;v*BN} z;gE~6Tol%buK#X?SnlYAR?YS})1QZYfat82{~ zze;BKOhMY1%)W(O*VX!~Sk}S$lmSmmZSh%INoN$`RMU`xx7wc>?;ngc(q9JEFYxtCq5`FvO>WAM}ZriU* zC^je@`HL)3I`?G!muH5qKcFgi$Zf~@?V0?yZi}78VuqqC%Z0j5Xj@bV(Xg67Thw1mZqJ%5FxFGaT(f^~1ZA0WqZr+J)8?2efkN@`w%ljr**?qEX zv(DmZ1$9*s)}oi|A@=x#b*auv{iS#c@SeH+tUPXB@^>yU(0`A^gOuj)ZH)X)-A{(Y z=bjMGD*mOzPfFrH_Woo~Y4UF(%T`57Z}wZH>8)-3uT^Pxc|OFTvYX5KySX1Pm_Hb5 zj9J<9U;6Q~Ujaug*m)}d4 zCd-=(t}oi2kk7ve{G8tr@1fC|2Mt-uSUtRYV{v7i|tC$z;o{Njd zWs1>idh+L|Y__;Ez zzcOPlKw&Hgtr0cMeP-w!+jOkYO*^`>mhSJTPmrj&IO2tt;(W$2vcJ^fkOJH;$)tpQ zbSHa}5|NX>wp5bv5l*=*`2febh+`cKq?QMbtxmA?n7kwHumija=Tn-08Xaft|KsJ# zj9t>Ut)v{EWV6D@Gxp6-`grMHyqX{?JbL|yd_Ut1a0EauJgLBrfUEuKX*%a#3{rHn z#R{*HDE+*p6<3j5SDpL3m8@4z{0o;d19m2ESZB9%m-1-&s41O8R}Bhs351~JQG{-9 z8w1xyn4pwSI_|)wivvo3Q|jL`FmBDqm;r-jO{OX&qUR` z3rl4ZxzHV}7Gty5ch(GTw9b$&{6 z9Qd=Jq2rt#%Jf~8zm_wxK7e?Ot{cI6XBmauK9=n@pKq2BtFQk=f`28uazbS=G?;m;XgO)RB%HD4Qdl~c7X3pVW#IHL> z8}28A|K{5d*=!pd^HSGS(e87qAZw^aKm6&u|HtD$Y$sLRm8H%fb4%Lr!$q+&jIVygnP z7gxcQ>iM}Fe!BkS>|ZQxY`5;B8Hu5Ld(g-&otWXpKU9?zKj1;4p~I8+ioUE!UpGyl zUxsQ_^|ghI8a`s|*%4&ab>;vIoj^fsuQzg+gI@29WK{MjYL!P z$b)O2-v}|B4M`N@PzrfMX=2?ZsYhs3yLvi~eKm-lov0t72^U!Fby;oe9AdG=aKap; zWitke8)YIrN(3`cTe6_9Z|N$IYenCy)ggxLw*B~JrVBYqe8uE z-hyQwNK!b{JoTeX9BsXY)XG1cX*+4bym zF#dd>ZSFGeodMFfr&7ZQt6v2@St@m3l;dxepd~gfthx_PI!+=w*p&3k7f@>2iEC_N zj=8?<;yIbk8<^OR;DdTNJ;I??)iqQ98K#pHmR)i7j;~DdHv%ITWr%2~6cWlF8%UY` zRc_zv(Sj8eN(|C*JW(i@>shkcBrZ(gphy)a#@0TwF{(KaBe&w;=2PPEYF0mF)tXGF zvLk|ioRt9?;6k(o7V*Hw0%T}~$pncY{Mb|56}}Od_v8i}1^CTg?}EGvYWNL;CAptc z;yI7#AdWhZ5*?$(a?VoDo?pHt8Eoj5x@}HP>2*!KzeJ;&>+1`^>@;xh>`Au{96p!q z^HP8Cs&77RYLY_q5&Jl731afk6+f3GRQe%sEl|>lfbrJj#wuBY#jNpPYZGJlvc{ed zHa@?q+;Q+kkZfy4J~K+E*|@HLL2D!{{=koaqNeA?>KDy##9UY`W?m>K5Ftw?NWgFqf)$9c-EfD>Qn3#qn9?)owq<^MVC$t=D z^Az(F4085t(6>F>jAT}$5X8m6@WyZYewy|u)67Wty*+i0Dz;|)4F9;_q|?S2c=-@F zGjC;Gm2^41kUUd=%26>lvFLkqUvH>^WuH9>lerdhgnIHRc0c^GuDsqo?xQX*lXARr z&SARWe<4+*Bwlhm^@4W9T;c?5kcLp0*qyEL^a?X+t-tisE7|laQCaxbvDJju>ZOu- zKPIJ2T?=SKx)nkUof}6EC5P&h@EV8M56BI{;gl|gOBd|1I!;dJnW1N#voGxNBoO4q zuf?P$3t@_51jXDuFQOhiM+!OCqkT!&YZ;1~qoFxI)Fh33`S4s^ z*JelJ^H{f%kJTBdwOd%{WoAX2hPm^JiEB*N4)~tjt;zlk=@CN_yOMq9mB)K8F&*)3 zZyH%d(o;fC8lf07LzNHryW=VWlxa_rP)$rYsX*SU^rLFJqE5a0kYheS#%7*G?0KYZ z>wwp9`B;&6imD?28slaTh-=JCc{$@AXIGGHlm$L>=RWtsxa}*HyiUGp)HZSdwz81q zTH829Y;%~Lku_aTov=cR=i?bm6KbqJpAU4Ue;n;wGrzW@c%+mgo>6l*S&%{Pp-~^$ zqCQQ2nE$@5RQ?`b5W*PGsJx2*ZRWaw7eB%0fcD$s7;N{CCAav7?5TQ1xSnb{9m=it zzdLk;-+}6b>Z)hS1nn3-u&`7Tpj+0*^VBEXkSR>hemu!=>y^r}38^j!eF@0tJS7w} zpSe&w8cxhU{E)@*{dTDQ_t~n0*-{FuK+oR9a+1UVo$ zPu8#Y@-vKnF}R#v@cO8Q0F5dq%?eXBV)ii#>xuT&78CI)^B-r?b(XHZ6Y}Nu-4jDG zeU_*6Udf^Z;}S2)!I~-6&9nM~U^9zwi6z*C9M?#%_+)^1Rk5EZ;T%XJGBCxo2_B== zMbZyJqr^oL(fDyRZu;K+Bq5#ro4e6= z$q^;M+fB3mYI766c;dBl+KZrLWM`tam-A?aE`pN9UD_HvQR0t?^Vdt?6(BT0CTkHL zV+bc^r{*=-Q(_tc)aXD)z)C$s;|7pFb3JQO9T-(MzfwplKg=JCadlQ%tTDb>-5~EU z$u^7;gm06Ef0(K=b#(T*BDF@(_MI$~=$L^Gpv7gvloxLt<>m2G6?hU-aGIUO4=HvP!1 zXB=aE*&oEB*W*_M=t8(<+HyxwnA%Qe&Cpt8j>XD&6;A@qg&ISf=46!?X+t?fYpn_F z>>!urJ`nb+p0B9hnitO5!?>WbCw?3G-p%vobryqVFu%jQvM_~8t6m!zA5WO7fKEu!>HYY~oe6wL&?T}HhFD!e*NGL$ z&9-LTWd*uBtxM$i_Tsg@Ws)bZ<0lGgwqIK?)4C3(l`)P+Y@e{P=wy3IH^&foGb%V6 z$N>f>W*ep8qZ)s2=~+LSSwpwv*)dMiJXu2ZcSP0)_!nq8qcW{y&FN*xXjwN`2{tTR zZMbz;w2g`=C#S;Q-$w|0a=j^j(~OLGsxyhQs@kbe^4FvK2`+Ud8QY8>K*(KfIdEZ8 z2kn!bVm;xM-E;mCvbM8UCP;(t%$Ny9$xe4Dul3X$bt>tpHbHvO%Xzrs3jJQ}Dj(Q8 zAlwm+iAR{Q3AFkm?QAPwYvip=d1oe)m8}-UzKUJFR>4U9KzjdLeS)lokeO!ylx$7J z!8Os`Mfg$vE$9l4w@GNNmR}w&3Sg4fxOCg0cM>E#D@do1qW~}R()T|P+{cwB& z`m60#ceD5k>a%(#va?opD2Q3@s3Eqwz^oAYb&O*VPie}cu`6nZD+IXx`>lRMd(s}&~l)ll<5_>^e7Ks#N>-i`6_@gQQJfCeNzMO`(i-W3>Zlg`e>=o zL7m3s>lU954qd-ncsr9U@l~SZU`^q-X+emCBKQ)V(&+D=3-`m|G$=Pf7AVl|O3H_K zW2JgBAf5A)VCH!5`wKKWPPA%;sI#2{)k{H=-aWZSBgAt@yIV{;GV>jMR~CfPXU!3wGM_qwItg$6q{^L9 z?(YJvi${Yn5^nWIRyam$dR=tO=%jP7h0yWiJ$0U6|J^hnxoLkmOqW;{}!rRE&XDXhOASUI$!WD}F- zHF$OCs)k{jdOkmc>E<9roS+E0h{3BOxMRE%>-((5-e7ihzmWwIwBOw|QOs|EPvoan z{sIN@_UHFn>3R~orrmGK?x&A@?qiia@DXn{ZX(Njl~Q&StsCVdF|{&6+&dhmw|D}(h zr@6Sf(6|>r9s@-US%3|AbX*X2YH^;|(TKMgvny@rJg{Vs&GA0^HO;lxz_WJC-*;E# z(z9dk%kZZHNTXl|F{ z2sras;E1>Xb?-3E&&;qSIZ9i+A-9o7g>JM8mUy| zFr*E%;ijl@wsmpqzi>4dP_$_-D4^8qkE@O(d(yTcnPg4C1yTJnS=0OT`9%3fn#X{I)vkecMADQ zOkT^*0z+BZLoe1+sfALbc*VJS9ZQn8EdN|?uwF>a0^4VsM zO1Ty9+JfVzSOhxb|A3VM90#ZUw~hInbAa-Bw-h@)*6Eb>-L%{3Uzs_8Wf<}HEZoZ+ zo!dp6gXj2U{luJ=5`Wczl+ea(;~?o!k;xi|Ah_5+usW#+WS$v*?n=+){dEyV%;9tY zz!w1m(vEsl?o^^Gm(nD(rkGQc_-cJ2QqFUr6KS^>c^+gu?!g`2n@q z5+ro9hBsHqJd^Q_HwX?iH8#kq=-2rui*%>nc98)o4_)+6jo~2gpD!n8GnPSwyv(IO zcZq7i@>7lr;$&HzZ+~Lz;9Q})vW?1+4WyY}SU4kI10P|~ZvFRE=DIa~aT=_)^1U70 zkqd+Gaj}2xzWxF!7R|S|@*&*&D~^ojnr@iC`HwLMPiA1w61t`VlqX-mPF~?H+=ZwHHijcd|1Y?yIM00-l znNkYyZ(hV6W0%)LlLO6Q8?}y|{0SX$juhgBD2z2(EIW5}xhZBa zWUfjn{vWdAP|CL*nVuMKyCw5)cyF7zilfAT2>*FVgMN&ZHB%l|GTKtnUPAr}^}t{M zP4Aj}@zm8XRLP1R!jms7zM1?9y9-_ao8kHQE{8#< z+3(7tKjD5I0;1i0+C9I2sHSmI{UQp+`Dh*x4KW2{BP_O9RQ5{t2scWaBwj z=Jq34(?VqUW*;EP$$9?*{y1kwMg5b#jBP6+{ELiM8`;f&Qu_7C#ge@VdveS4Obf&l z|1V4nzo}(|RFyAz+8N_xt`hoJCphVEa&oyJlt5q404F{tYacD}%B^$%+)?}+4(avR z7ynUojx2<`rg_ix-Zep4o2D3-h#?c>M$ zFXu;=P(iwN-@g1E+Za1WGt^<7i^hLqDM>;<&*?Zpl>2`U(tzjS9I}CvA5Pw|e!TY+ zH{+b~K+vy;I-soN7gOc5{RLDX0DDKxzs~9Y4~Ko6rdGZ~f5q}Y&j>lkfIrXX{u-Vm zpg+fd09x0F-}2YN69oM-6>#QgIaFV=(=qhJ%Tof+*XQ=jDdzrIFo)m|FTtTD=Xmn} z-Ouu=7C|mBDo8O-rM4&yhbN`=*~by{JvR&=6jeb~WVfyfZ4b-D za6!{~s7iZ8$^qZ+3UEkC!l!SyhZ^uj+Y;^OIbH6|nUyQp2+la1WCMUBABaMw` zykOjPO>O!NsSUY|6#|DUE2AA%al_Dzp z^g3c!Ggo~JEUpF6>H2G%PqNak=v(laIIho@^{imnN21tzAzKBrT;NsbV5)ldWPOSr6%^#nKm|5HiRbx zy?;g4+Jkr`cJ5Bc53YdQdk;ll+Xl&0qFPv1r1zzr)&^qFS)OX8is!LI*{?5)YRX&P z%(W+HOy1k$kma8o_D7VTX+}oT?B~c{!P3rrp8*%$nT@q=<2&MV+A|-Coq5#~)=|B5 z&{q<1bf)0rW^W_3wdl6rmp%jvZ3_*%B5w6AjNG6k9AYrRt%7S{%_V684%#YF zzFRyD3w|5bd8AhIUU(@wyz)r5uGx>4>M?A?1?g+B3$!%bS5f4TooPuzW3DO74mlSL z95>XqkrZ5VzD|;ZuH8k&)?hT`8!Mu;gP#;!jlpe+tw+vd5Jm< z-cpz#4}e9aR3tQfcq-dopo>yzPtr=eEH`O~Qn=6>hivTD+ZLz$U`4)MoglA)Tk$8y zu?9TQ)^UB4dNUhWalz*veYGZaKCL*3$hSg^H@+h`c+A(_!$sXfzw%tnkU)%!NfIV( z9|F{3I;x*Mb2=HUoKb5SDDX7fZACv*bL>-YmyX-Zw5x+Un(F%9l4D0(BTY|E?77r= zCEx~Z7Y*m)o3s=Ey#hP*wIEiPE)BrpzR4?5TYp6C&^}c5m|aE7P?QkljXf%s6wn&E z#Fa+$hG{1Wd1)hb#FBo%)51%xR?gCG>&RNLZG}G?hK_=aM!)cJi6cr%^2cRF4BdFe zFYZ8=V&@#aH1?d$o;%fd$qkYork&__Q`wZeoj*cbBMbU2r)~YAJ&zZEV65&ScB^w# z^P9tEx|Io9JkWTcpq=zW#{T^HDxw>6edY$eGR5XPvueI){%rL$_j09D;KZ>v_jDfp z7=1IcyUD}tO;EanM`y*g^32LnEXC!P1zMaa6)kf7p@Z%N(=k(q!r@uik~*jo`$kd_ zYkOx_iZSTcE1r!-o?G4E{CO#v{odY40(-kqx!U*4O_9j`$|tHnU-qo5Ay7) zuG#2>3M4(0-x)pPL!rELl7Hhv_go%x_D<=K3jM6xNTkH=m^P`vIp%JHkhkFzM~|7Y zQ1w}oK7|p+c?*hgtJc%Ei!pAuyWBA{7#UG&fltlvc&CR%*3MZk^DezkzGR`XIeMqQ zwO;0asQ-mRVZ!OwFF)>h4OE-Qu9W#yq1<~tT5{reK6*?b3nM6=#QB;$vWJKRcDh$m zq|;#OV2$JV1lKBwv`*(n;{F)|dBfo$it#P3T9eAHrR|5i4jHL?bZXj3n%?+ckR0Wk z<$3K}*(4)dAy|2rrDf2Lf^Mbc;-K$FxO zmR&ZX~BF542km61#rDBTW?H`o`!xHV>L1h_oK^R9DP7kZ36t9AEHXhW+F#ji1 z7%1bcoxBnm;eu$qs^XAZtho`Q*bL5Rq>r)f6jY$#5$%#|>|y1=%FMDvmFtje;I+=t zJC}Do9V^j##SLoYn$at3=oJdTV>zk2{w3hv8pbqvuo;D!?Fz_7#lnUgs?A}3!%u3M!5 z`L>%$#co8U5N?R_nbUmOI2(k-X3pau>yP3xnwLvp4coUut`dN|;LiOC8B&7sr@4ZE zvq{_rrDRv|+K^pANnRUZP)Q^{1A^R(0Oz3u&LsFbW7Ki@s1 zkB2q{*OhSQz1eo1$4yY!o`ejN3aFm#KL9U8M(TuZ3SN~=$j}kq4FwNel85c%2)F2} z+kq<%u20rqmH=9doS6l43&MevYYU7ywcAHHkBgic3P3!UanI`w4?iwy)p&7o=Ny_u&Fl#-^jiP&ca z$^4LS=g{4=pKz;}Uo;qvefBOWX!&a%2c;1D=LJ-- zT=ZPAqQ%H!DOsy?pF@}v>WNTmq-K-uNuxNf9vuu&1|Xv8ZV$Vi;}Y-i!mluLg?mHB zw9wWGwjzzEQ%ykiW6u+yrO@W5*-d0^!bEocyZh4_$wEF7Psj~{>MHS&D*H(((28N` znzcBbkM_K`>ZnFZ9=YKLUFEjr7sTxQ6Ke&1g_Mt{2G+7y2P=H~Ndo0VxGA6Q^KvfX zjg=@|!eO|#mb060$w$Y;vgn#Egi`97;pYUkp%vj#bX3C#qH$!A?%JR1n!MsYF(_HG zXpDH!4;x`4MF{hiK2?~hYG#o#jE^DbFqZ9;8j1euCWX8JrEKHKbGu!~KC@S+wzNL% z`I?q2L~NZh7xOujnlm#PMsdGQk}(%K3Wtvp>Q^;e&MsElJyR=_n-Lh7y(y(*y(`&5 z+rN!ie?}v%{`Lckg}FW1p_Sr4G@r76hJlK(@)J($)KrR}cTgI0O`njf*vjzOpXP}1 z!ryRXN7vJrzyZ<%yraa-vfm4&QeN659O1EAGR5zDa;d z%Za^l^p-O#hZIl+b>yZ zTGS|w?o2N;QJhk4D7BF&9Sh&472S)#v^=CR+2E2J*GS)g&};|*7(YQfEY*Y^25ME$H>iK0#LU|(#?^1SH$n`jtV);`Rb+ z>a`g;rMXXN%}ilFEVlbs$Zo4`e~#BTHQNRa2hS!E1CF+MJ1rB`ocl>lND4K9#P$wr zjjX_F&L|f4pEx0w=Xmwe4W!AZF?jzxI_)9LcMHKj86=hn;d!PSs)zJQUWK+wT8i7m z^Q~;@w)#C#Q@i~*0rpMsR9o^6hHsAz`W0*`lDq#Nxk(0z%3mhkbVixV+M}FKqpdsU zOOn+n2K15B(evArgp@Bj@D=raehQM+Ufq&Dox{P_{!zC$PU^1DT(9ClP=~vP+ui-G zk$u@OCe8#TtHT@AL#AvJ#%`Bmz7QXPH6RBtEMS%`6UV`@edgj-cBqAcHO~mLmh^GQ zdIZCtaew3%T5QrV=)n=JJK~;^8^>_hV$Oz<~*J{`@v+ z{4CD1zn@%pvO1rYLU+U7zQ-cXRaz8d@uPw?@NQxbA&ci#14bHTTT~Gs-2SeFmxr z)JlYFqr-`FJ!^iqc=N4wjMU1AabswU1D~V)qGl>yy`1%H^U_X3_u854C5#k!^F_B# zeNHQ&2o9y2&_~GWx!-W#?TS7%O3`gdT7##4AQU`xSUgenASOUJJ-^`tqN3b~#%xy; z4>hW2O(Eb3PMg{yIl|YML&027kn0kzS6RW83p%*Bg#$rAwU@*Fe$Naz(hw=p2Bn0) zcUw3N3Z?gdFFV1zzcnmD{h_u|e^2>Iy*t5iNl80e?agP9#SMOPh#1lpmaS>(H)^eS zMEcNIYRl`%!KWaG2A{*W=wZL>M7mbad?(wLUZn1)*5^kyk`!6 zTuWo8TuCgMfkBUl#YZffohrvD*Fl$hRThFRs(}fO}t2d6gMKd|m*o{vDezC|_Glh=W2%bx9mGG#7KCabi-YAx? z(qd_rf{&-65%*YeO)HiL=mZ~)SA@T-HlXJFsA`TL^AFg^gPkCD5OVBUUb+n4h`dEV zI=S?*n-D5}bHjB1VpQ=yf0;cQM4@XFi6#+7_i}Og4kU?50g;G)otP>qc zwPF6~W5H1D0HQl#JhQ(AL)v7)SaE9xAc8Tm-d>Th<&pYUj664$GifF~zg zgLAIXN6MO#Jrb^YNb6!;to!Cy!$y}T{F6P$`}4=VTu2Q8SJ7jY>Nm^P`CjCWmd#g0 z)%l&WX9wf~9d#8gNG?ZyMv3f}d5`(RUxh+_Iv_H3l>7TiO)_V{nC&<8`${F%$WDO7 zZxLO1C&AA$AFVv-oGj#~FN_Pktt>OY_zHAn22yWU2fW3&-Dpm&xNa{rkIkuP`5RVK zI_H?XlFb8{u(xW20&DLZ%+==Ba38{avJBJLNYs=m5B3S71%mkN?W7a3n^Xr3(XVoO z^^xk_-*1TF7HcNAl?U||-8tnrILj`M;IblSSyKEQP+eH8-Obx?ia;cz20BJY1JEK~ zb-pYj8yoZ~U;K*K1yM4^<12ktiF-2pcr>xOoK{M1&?1IrGcq3UqGzj-18^E3rQC(T zUNKJAGO8Qh*&3;4X9`0*43M>k9IFQ3VRmhfW4bhy=|&aUNW^l(;Au%;7q|Dm$H%G8~4=8zNg+5F;D2cp6+RGPq@A4H3Y<=P(BS#oqG7+bDIt8G8Ip_&qCG{BLckvaoD zFs%M4h~>!gCcy@b+7H0-$cJhuurwA#tA}GbKw)Z=t-4P0E5Oaa!puk)(Bi1>9{6i4 z3Q;Y2eyCR3{Fr-}+@qR-ml(MMHG+X5PG?p{`$jhq*9Y2J79L=C~_?8CiSLLflUa~MDqwNiI$yBpHqW@e1boSPJ8y~vRn1o3~l24MRkBl z{ir^!<#f=iRm(UF6SJAsxybZXe1Efanu1>I5*&16UP72hJau^m__jerOX|jjEv_~- z!m+ZPXtaO!jX=9e_D5v__<)dflwaU%rHHV48E${cD7J%vkQ5Z1zq0*m{mYd~0RhC` zatVSKWm}`o>ycFky$<%~`LmwUs{vDhAyZqT>0ERmn6~O;e7I z7=Ny_gu&7q;;enmd_KSXAXiwuc(1!&$zNS0+C>2mpRIOAkXB0aw(d^eNQ@(a4Po+I znU8+ecJVHc`jFVnLyFGJ3HrL>{&>Cu1A^m|67_~S2KfyQ9etr>vViuYbJ4F41)`OJF#dY5Op+icVDnjWcI@EBcM{k#f)^%_68bnh zQVD}rt_nfIQ8tpUNgZeWMFWHARM$0jqGlHWb~Kfa?WmuZj7F*i=6L}@libS}agDM;#Cvr}VJyNS+N76si7%3+#p$Nk_geZp`VQ7k$2lw` z>A?`Fz5k)@f*LoG9&2F~B<%qHaH@Z8pc5!yFt4F?_ z5C$hu8k61w3}MzSw6)+YOKTZyb4LKUQ0H;OelJOiDN?heTmBYlZBORMVz=l% z2pfeNjkwXTCA!i3ESqUhidl=SPFIa&)IEPg;a5H-{;>K#I$j8b5#cTtb!HVq_KkAk zj2Me(aB~h4erzLoN{84QR&t2O^U6qsdzCdhWi*0lh~x6@lyfaq+<2^hDDs#B*KBxt zqJoRi!P3xL-9`{0ZYd*n=z7&<7GjFORm=o5$_ef-7R}*2%9n>k0 z3NzGc(jxCSq339vJ~CgA0RuMJfHx7mq(ttmePkFv_Xqw z_Y*tz0HEmTzUlbfTGyb9VkbiuFJDF9A+|=kmE1xf)>zYIu}gchD)u6=9~}?ClNI5# zXK{TUKt(Mf6o_xbFB){ctmS6!$Vu|dln#9*@nZ6TsH5()-i4mIH;@lQAEM&si^ihJ{!$hSK|i z2|Y)8CWfA38(SN#E7v)oV!kL8CMO|a{bqgp0Ll@ouoH~3-KD!zzoL+rgsvOQSW2ug znR|UtjB%mv4v2g!toHI;vS#C094+lYo~bAdH%MD6sB^^L8Yz8}Jd-3e?=6!l1Aw3e zU{b~<2Q&=LPl1csLpbN}$>9wL%qJ0Gm&m7i zaU^hbRrceI?Fcrl+iv%#8rj)C7RFKRczvdKTI}2{TacySYt@a*TU?x17bvwze^98a zB6w&G0hBcuSb3NtYI6(o`(b)^Q2JwVvN3|R)nx<Es$r#lu!JpFy?mJiE4-Qo>t@y$Kba+EUo>kk~9iS-;V zk*Wgr9<^9NYPzptwd$Rd#dcu9sh5$)^kom=wVWpc*3p1}$M*Q^5~ZHMbn127k%$M%a2P3sM*U7w8=fF2fja3D~~ z@+wg3fntF9aNu2lz7Aij8DEK#zP7uB)IglkZ{4wjOM0~DmI0puS zhHKp8`%m-hJzl4E9mGuu&gE_>*gQV>)b;g|ir)2|juQ%dDE@A}A@Vu?`n9^cg`n-N zoUx&@XYrY85AII{0CHglw?nO7-3D)A&)S|1DY_(V1auJqk(^!yv#izA0Xgp%X~R2W z046Eu1J0#Z50J#J%b@lH=v%N#!Q2hFY zg3k)UT?kFLv(MRbphoDpc-_0GvynWq{*h}3XNeNtn1)*MfIs>H9mk)J z!yC$Ie(3@vhoy|O?;SwZfTM75#oTS|$r@&TzEFszUi`XnOpoCAS4V?pS6a%vhMDa! zcnm&EYwmasJ`di87plIx-Z=Usn7t;famrQnc~{etiFGKry9+I};ID%%5;)9Mx`q~q zr>;*Z_$Y{gJpzBsqgPzE17ZB%{87d(KjJ&L_88p+@@-IfAOLRaWN`MzyqTDJv9*5o zZY%rgJj_T>xcGz^#JNz+D>ISK$@Vz6gvp`SCjk-*K_S{1m_y?~JAk);wSUOs+!X-R z=Dhk@HE^n8FDN-!0~EkN>(vE+r@Q`&1MmKQP+l2DKn?`1|Ki|j5ahOU+=^ zkHgp2K*`ejuy!b=vh`wx|BqzVQ^jta>BHw(4H*T96Bn}H8-mEZ{M-(~=6 zwSb5|WC0P;fWoay>fa}`WqoM`Ot*o;4>p)A_~(B&=u=SS`;SpUZ8*5N@OK&gzhrRD z35alg<$fxkb;3MVG;nbtM`QW2qKwbM1amfStwhWY)r1QnlW-Vzw5(4;RK!mi7F(^X z;g*c9f)b@Qx{|BUo*>FH{%X)tFD_u2!Jc%Hu?kK!r*N*9S(y8&0F;jAG8AKOL7ZYE zaX(bAYAngJH91SzPBK0^3dygk^1bdjFdnoNy*AG(+~ItzPDZ?DP@zdDWOBt<5k5Y2 zC|PKTIi}&4SQBIGoY_>UzUsAwZ#zfLhR1ml+}g!9n^5{lmkKp%unM(0C0iAKep70y zU2=mace(t_Pm_TOn`U3)UR$X_n~CluJfX->a>}!x`Z;%D8H}~H#-G;GAj6YjKNp8f z;7PJ?@fUQOXo|eAFsD-@I%@mK2XnEn@vyqqvP)(3y`+F@obcq@wdWSp%7DQKr&r4t z<)>u!w3D6&H8$Y{d=j7kDXod&(=#4V!GI{A+MWjz^m)qILD?N`9YLMsM@-n{6L;YU z+44ki-Rz(upVXN3gpK$_Ko09lc{3wnGj4K9f=1vhgJBcS`)FdrJK)gIpsnE{c%>8h ze4ZTyvV50)ZNlc4K643e@r@-@%;JvPLQ}zKLC4f>tN+ki_Vp=KxA=PG0<&g;nyuc6 zo8*b+Ok03y)Ph+GGl?8?VlP6O^?e@_{_aH%r+I=yXgGf*qlo|^(%u?rRnzk_h30PhC!J$rZAt6IvzIrxT_cRPA8QUT^u2O#wj_9tFP(948C#}NDtKQuW4Kq?D60$ zSmsG!u2u4Q2Mk5yxm(VTNg6Wf=9@|>S(roY(6k^Q?yn2Np+&+MI9jCC{9&RpBo+I? zhN$(3$ui@6P(e6Hv^kAGd1d^*g9;tzr2mHV*^8ju#2Dlg-rVAKOEz5?e&;y%f+xr< zgy0WT)17hYlkW-e+n@R2ZuP*stc@J4eZ)*CtbHcxWf#e}u5E`mC-~G7J$R}nd*}z# zF?u0&1$jmb&eJal6)q()uQ(!cU#kyofnhlK5%|jy)2^_6Ozm;gAe%aTHV1^ep%ejK?I)+ z9;nE7eluk0SVL4YYW&6K3g+$vdIaAE_tHU5bf)oX4m~vh zU7I!5LqK(}xcG%zJWm(31!zYVfGMZ1fCW>4pQrM?w6`?r*XaQ9qFLiV0pk%HS5rlC z9Uq{QU~p4NSrRfpl#n zqow@^N&bwD0e0IR917t;d1@%+JcN5gyE^Xq^$VLy1AdWjnf{-eg5ftIN!v|Q{zOVT zF+qWtK)wP8% z#5x!u2=Nc21C0Mm7Z>)l!R>6v-6#MECU)vbR{c%9B^d|j)*JLww6of1nE^iTp_a< z7)t3Tmfy{ci4B?(?X>gA9wlFtA+{&56D6Rdz~+@}?-ASt@j1pLJI}!KVpd6%jqYJfZ#c zc#aIQ+SF|_TNnuLrt9Us5D0pfm?$P$cWwTdYK*{Ly=q~+aGv6Va;b;!3 zy}Ue(HWnDpgUsW1R#wDTyi+rM(0-?dsr95>^2NY&%`vB05g6S&EUHA9ZsYqqgSMKs zu5ON{KaZkbhEDdlGlkK^gKQo2Wb96d|#DhNj0fV<-g)KY1&+PK9}Q_dj>V{$)Es^sC?(Kjyvm>@)~wePA) zspzQEmoL{?p8|^a*%Z2psB=go%v5}S@#SJi+jyh9@i7$&a6AK!u8X-e&Y=iFp1{S3 zwpUuWy_H?2?OIR^UA^+)qx4X%tL~jA1W97`fkNH>InRX>1C6Wa<|XE~d@S1M^$yjy zTdH2iF!KTFgzV9;uYU)VCFe;V*Gd=svK)x$dYd?>y-jFRYgl8|HXwpgF~r!1RH08b zCATCEaF@z#`rqe?nG)%Koiow|pU!g~A3~M&)7GUuVtmi*H|{Np%tWl08N#nh;OS)p zrCW4>dehds6YVVztMoj+-M*#LGKU!?pULn`sXT?tST7%67EvMhaw@nA*A_J#jC=;2 zEDxwtqI$i0KJt!#{7S!k(+cvY|DzW&rL{!K5CmPAoORbCbKww#vxu3{#VYxmEU4CC z_u{h^Mw1SjUI6#h=^#ZFa-oAO^lX0bsciUj5{mG%CiCx?Sg$LLb6DX0wu9*G*&%c;pX{_JJ zUmIzr5i0wCGA;UIq6<( zn|EViwk2?IKQL;^xqX-y0=La}R0UUB4~o&Q$3JC7kP`@Lc$p;ra{q}K2xs&l2v9dzX24DFgc+K!6(l2i7{vVf!NZVn(3(JAuJ~o?;Nd$SB)!O zcrXQsU_vfr`>?S_g0P?0bm4Dft0X$zTRn5f_ll^U(6*g?^sJktxy;Qb@=kWOQrE#w zO%EJ`=+%*V3A3u(lLXGgh5ckcU{rX&>7WW!EWt?nOg)YKiRy=Nk9XH`b&FBg4S>a` zTQoqQ+yPa@jai?*NsF%7au4>@G$UzTr}wb6w-=PXxf1!v?~8fl9H<{ zj#zbtAYOG1F!2dk)m#�CaXATeZJp@sKEHJ;}!N^=YOiw$%Sh{X0nnE8-=-pqP>F zs`OTD23qL9ZjYggo*FAR6ZlPe_vh=FxHZ?cxIs9(?O0GkuYIwh&mF=J;*$V=e+@6H zZN0P*PoKd1m=A*Y5@2Go6%_Gh3!H6T>5)YIu3t0Y=qhX?Yr(72sW@5Q$#hU3P`%G0 z{1V2&R~!P5Ov30@V!Yx((0VV2ec@!Bv$0yB>{T=WfVJ@4)+J4Z(XH~Q0hsj;E~}Xm zGh2S>^JMRF|K|C{5w-gh?l1KEgxB}3yb(qO*Vbc=5N+~yETtre*t)L__QIr+_q{NvJ-GcN{?mb%3`NfxN~%}vM8m3g>X=U0z17HHpz0myIuR^+QcSredFpB&B8 zMUF5>IQK~eH=I`?_>arV=?g9UxqynQmNA{v+P3h*X-e&`KsSQ!{vnLIQDE8GFz+}0 zK0f5qo*(~^7NJR;bW(TNX?YtyU5M-MD z)XI41WIyw27LtRE^SXLcTn81VrAl}0tjWyX*RxXd!rW$}{qhCQk|BLj)d0#bVyA_F z;NYYJ2I;ro?Tp}g2hlGT6a9RH+=Z>eW}WW>3K$+f!22U#618>){oRb5oD1e%YV?%G zA#frmV7D#GOB!=oEt*0EH6CvxC8pDz;xqf%X-etfmF!gyh(AkRZRC#7jInsVItPcq z3n@>0d`Ls_)!HO#-a@&B1RItX2_U?QrB!iGQ8{^plqjx);>mB>=%T%UyQ}Q&Wm01* z4lxoQUzRYkfKz%LaLiQJK>{#m)5|Pma7WhiL-|^_9&I=C#Vjb|s~iV6s##b7;bW1M zu!8B4Fk0kUxX$5Knq{lklUIA8Qzo+r2}4*5M1V$0C2KD$;=Crb$!xu}O$Y6p6Gf8e zm#nTf05a+>(az$RzAfchBuDbG-=CA{S>%x(vUF_Vqe zbsOn?E(*GqCa0(7G-RTz_E@azAQRRD8_z%b6{ELq=7aBT&A`u$Kx-s>znc6J5V`Wc z-ww|`vL@LidOw%%?RCh)CT8Wn?q!~4s z5q*ZEsNitBmBcg=-q%z+Mj0ep)z*}Ujx5Sn@v3-eb+X8eRygEU-904TBD-9>D^`2> zJ(&3Y1SO_07CUC0RF$UeJm~+4Khm6lokAh-TNQ^^-9OO^>I)#Yj1GpVVgpThOU=a| ziCgz#aPl1+@6oB2?v>a-0?tiS2E(=ctScaG2&t|rb(dGFM}B;0y;%6O6M1LoM!>1C zFrv0(7u5F0@ei#W%#+V^cG}5S719JO6aJIRoOyhB%bJAphd z+%(Do{##{IL-%QeCa#UxWg}idIAEH`2Gen#BB*O-TTc0i4Jv`AlH=+7j_-~4dKRA$ zGB)oH+^zx>LyFg>49n;!)7IFOEGch(lnQ3(C*53gokWcvl diff --git a/site2/docs/assets/functions-worker-separated.png b/site2/docs/assets/functions-worker-separated.png deleted file mode 100644 index b710c34ce1a9adff08f737d2334244db013b020e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21649 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 Hyzc%RQDn(; diff --git a/site2/docs/functions-concepts.md b/site2/docs/functions-concepts.md new file mode 100644 index 0000000000000..8a46127825012 --- /dev/null +++ b/site2/docs/functions-concepts.md @@ -0,0 +1,170 @@ +--- +id: functions-concepts +title: Pulsar Functions concepts +sidebar_label: "Concepts" +--- + + +## Fully Qualified Function Name + +Each function has a Fully Qualified Function Name (FQFN) with a specified tenant, namespace, and function name. With FQFN, you can create multiple functions in different namespaces with the same function name. + +An FQFN looks like this: + +```text + +tenant/namespace/name + +``` + +## Function instance + +Function instance is the core element of the function execution framework, consisting of the following elements: +* A collection of consumers consuming messages from different input topics. +* An executor that invokes the function. +* A producer that sends the result of a function to an output topic. + +The following figure illustrates the internal workflow of a function instance. + +![Function instance](/assets/function-instance.svg) + +A function can have multiple instances, and each instance executes one copy of a function. You can specify the number of instances in the configuration file. + +The consumers inside a function instance use FQFN as subscriber names to enable load balancing between multiple instances based on subscription types. The subscription type can be specified at the function level. + +Each function has a separate state store with FQFN. You can specify a state interface to persist intermediate results in the BookKeeper. Other users can query the state of the function and extract these results. + + +## Function worker + +Function worker is a logic component to monitor, orchestrate, and execute individual function in [cluster-mode](functions-deploy.md#depoy-a-function-in-cluster-mode) deployment of Pulsar Functions. + +Within function workers, each [function instance](#function-instance) can be executed as a thread or process, depending on the selected configurations. Alternatively, if a Kubernetes cluster is available, functions can be spawned as StatefulSets within Kubernetes. See [Set up function workers](functions-worker.md) for more details. + +The following figure illustrates the internal architecture and workflow of function workers. + +![Function worker workflow](/assets/function-worker-workflow.svg) + +Function workers form a cluster of worker nodes and the workflow is described as follows. +1. User sends a request to the REST server to execute a function instance. +2. The REST server responds to the request and passes the request to the function metadata manager. +3. The function metadata manager writes the request updates to the function metadata topic. It also keeps track of all the metadata-related messages and uses the function metadata topic to persist the state updates of functions. +4. The function metadata manager reads updates from the function metadata topic and triggers the schedule manager to compute an assignment. +5. The schedule manager writes the assignment updates to the assignment topic. +6. The function runtime manager listens to the assignment topic, reads the assignment updates, and updates its internal state that contains a global view of all assignments for all workers. If the update changes the assignment on a worker, the function runtime manager materializes the new assignment by starting or stopping the execution of function instances. +7. The membership manager requests the coordination topic to elect a lead worker. All workers subscribe to the coordination topic in a failover subscription, but the active worker becomes the leader and performs the assignment, guaranteeing only one active consumer for this topic. +8. The membership manager reads updates from the coordination topic. + + +## Function runtime + +A [function instance](#function-instance) is invoked inside a runtime, and a number of instances can run in parallel. Pulsar supports three types of function runtime with different costs and isolation guarantees to maximize deployment flexibility. You can use one of them to run functions based on your needs. See [Configure function runtime](functions-runtime.md) for more details. + +The following table outlines the three types of function runtime. + +| Type | Description | +|--------|-----------------| +| Thread runtime | Each instance runs as a thread.

Since the code for thread mode is written in Java, it is only applicable to Java instances**. When a function runs in thread mode, it runs on the same Java virtual machine (JVM) with a function worker. | +| Process runtime | Each instance runs as a process.

When a function runs in process mode, it runs on the same machine that the function worker runs.| +| Kubernetes runtime | Function is submitted as Kubernetes StatefulSet by workers and each function instance runs as a pod. Pulsar supports adding labels to the Kubernetes StatefulSets and services while launching functions, which facilitates selecting the target Kubernetes objects. | + + +## Processing guarantees and subscription types + +Pulsar provides three different messaging delivery semantics that you can apply to a function. + +| Delivery semantics | Description | Adopted subscription type | +|--------------------|-------------|---------------------------| +| **At-most-once** delivery | Each message sent to a function is processed at its best effort. There’s no guarantee that the message will be processed or not. | Shared | +| **At-least-once** delivery (default) | Each message sent to the function can be processed more than once (in case of a processing failure or redelivery).

If you create a function without specifying the `--processing-guarantees` flag, the function provides `at-least-once` delivery guarantee. | Shared | +| **Effectively-once** delivery | Each message sent to the function can be processed more than once but it has only one output. Duplicated messages are ignored.

`Effectively once` is achieved on top of `at-least-once` processing and guaranteed server-side deduplication. This means a state update can happen twice, but the same state update is only applied once, the other duplicated state update is discarded on the server-side. | Failover | + +:::tip + +* By default, Pulsar Functions provide `at-least-once` delivery guarantees. If you create a function without supplying a value for the `--processingGuarantees` flag, the function provides `at-least-once` guarantees. +* The `Exclusive` subscription type is **not** available in Pulsar Functions because: + * If there is only one instance, `exclusive` equals `failover`. + * If there are multiple instances, `exclusive` may crash and restart when functions restart. In this case, `exclusive` does not equal `failover`. Because when the master consumer disconnects, all non-acknowledged and subsequent messages are delivered to the next consumer in line. +* To change the subscription type from `shared` to `key_shared`, you can use the `—retain-key-ordering` option in [`pulsar-admin`](/tools/pulsar-admin/). + +::: + +You can set the processing guarantees for a function when you create the function. The following command creates a function with effectively-once guarantees applied. + +```bash + +bin/pulsar-admin functions create \ + --name my-effectively-once-function \ + --processing-guarantees EFFECTIVELY_ONCE \ + # Other function configs + +``` + +You can change the processing guarantees applied to a function using the `update` command. + +```bash + +bin/pulsar-admin functions update \ + --processing-guarantees ATMOST_ONCE \ + # Other function configs + +``` + +## Function message types + +Pulsar Functions take byte arrays as inputs and spit out byte arrays as output. You can write typed functions and bind messages to types by using either of the following ways: +* [Schema Registry](functions-develop-schema-registry.md) +* [SerDe](functions-develop-serde.md) + + +## Window function + +:::note + +Currently, window function is only available in Java. + +::: + +Window function is a function that performs computation across a data window, that is, a finite subset of the event stream. As illustrated below, the stream is split into “buckets” where functions can be applied. + +![A window of data within an event stream](/assets/function-data-window.png) + +The definition of a data window for a function involves two policies: +* Eviction policy: Controls the amount of data collected in a window. +* Trigger policy: Controls when a function is triggered and executed to process all of the data collected in a window based on eviction policy. + +Both trigger policy and eviction policy are driven by either time or count. + +:::tip + +Both processing time and event time are supported. + * Processing time is defined based on the wall time when the function instance builds and processes a window. The judging of window completeness is straightforward and you don’t have to worry about data arrival disorder. + * Event time is defined based on the timestamps that come with the event record. It guarantees event time correctness but also offers more data buffering and a limited completeness guarantee. + +::: + +### Types of window + +Based on whether two adjacent windows can share common events or not, windows can be divided into the following two types: +* [Tumbling window](#tumbling-window) +* [Sliding window](#sliding-window) + +#### Tumbling window + +Tumbling window assigns elements to a window of a specified time length or count. The eviction policy for tumbling windows is always based on the window being full. So you only need to specify the trigger policy, either count-based or time-based. + +In a tumbling window with a count-based trigger policy, as illustrated in the following example, the trigger policy is set to 2. Each function is triggered and executed when two items are in the window, regardless of the time. + +![A tumbling window with a count-based trigger policy](/assets/function-count-based-tumbling-window.png) + +In contrast, as illustrated in the following example, the window length of the tumbling window is 10 seconds, which means the function is triggered when the 10-second time interval has elapsed, regardless of how many events are in the window. + +![A tumbling window with a time-based trigger policy](/assets/function-time-based-tumbling-window.png) + +#### Sliding window + +The sliding window method defines a fixed window length by setting the eviction policy to limit the amount of data retained for processing and setting the trigger policy with a sliding interval. If the sliding interval is smaller than the window length, there is data overlapping, which means the data simultaneously falling into adjacent windows is used for computation more than once. + +As illustrated in the following example, the window length is 2 seconds, which means that any data older than 2 seconds will be evicted and not used in the computation. The sliding interval is configured to be 1 second, which means that function is executed every second to process the data within the entire window length. + +![Sliding window with an overlap](/assets/function-sliding-window.png) \ No newline at end of file diff --git a/site2/docs/functions-debug-cli.md b/site2/docs/functions-debug-cli.md new file mode 100644 index 0000000000000..c0db546592192 --- /dev/null +++ b/site2/docs/functions-debug-cli.md @@ -0,0 +1,212 @@ +--- +id: functions-debug-cli +title: Debug with Functions CLI +sidebar_label: "Debug with Functions CLI" +--- + +With [Pulsar Functions CLI](/tools/pulsar-admin/), you can debug Pulsar Functions with the following subcommands: +* `get` +* `status` +* `stats` +* `list` +* `trigger` + +## `get` + +To get information about a function, you can specify `--fqfn` as follows. + +```bash + + ./bin/pulsar-admin functions get public/default/ExclamationFunctio6 + +``` + +Alternatively, you can specify `--name`, `--namespace` and `--tenant` as follows. + +```bash + + ./bin/pulsar-admin functions get \ + --tenant public \ + --namespace default \ + --name ExclamationFunctio6 + +``` + +As shown below, the `get` command shows input, output, runtime, and other information about the `_ExclamationFunctio6_` function. + +```json + +{ + "tenant": "public", + "namespace": "default", + "name": "ExclamationFunctio6", + "className": "org.example.test.ExclamationFunction", + "inputSpecs": { + "persistent://public/default/my-topic-1": { + "isRegexPattern": false + } + }, + "output": "persistent://public/default/test-1", + "processingGuarantees": "ATLEAST_ONCE", + "retainOrdering": false, + "userConfig": {}, + "runtime": "JAVA", + "autoAck": true, + "parallelism": 1 +} + +``` + +## `list` + +To list all Pulsar Functions running under a specific tenant and namespace: + +```bash + +bin/pulsar-admin functions list \ + --tenant public \ + --namespace default + +``` + +As shown below, the `list` command returns three functions running under the `public` tenant and the `default` namespace. + +```text + +ExclamationFunctio1 +ExclamationFunctio2 +ExclamationFunctio3 + +``` + +## `status` + +To check the current status of a function: + +```bash + + ./bin/pulsar-admin functions status \ + --tenant public \ + --namespace default \ + --name ExclamationFunctio6 \ + +``` + +As shown below, the `status` command shows the number of instances, running instances, the instance running under the `_ExclamationFunctio6_` function, received messages, successfully processed messages, system exceptions, the average latency and so on. + +```json + +{ + "numInstances" : 1, + "numRunning" : 1, + "instances" : [ { + "instanceId" : 0, + "status" : { + "running" : true, + "error" : "", + "numRestarts" : 0, + "numReceived" : 1, + "numSuccessfullyProcessed" : 1, + "numUserExceptions" : 0, + "latestUserExceptions" : [ ], + "numSystemExceptions" : 0, + "latestSystemExceptions" : [ ], + "averageLatency" : 0.8385, + "lastInvocationTime" : 1557734137987, + "workerId" : "c-standalone-fw-23ccc88ef29b-8080" + } + } ] +} + +``` + +## `stats` + +To get the current stats of a function: + +```bash + +bin/pulsar-admin functions stats \ + --tenant public \ + --namespace default \ + --name ExclamationFunctio6 \ + +``` + +The output is shown as follows: + +```json + +{ + "receivedTotal" : 1, + "processedSuccessfullyTotal" : 1, + "systemExceptionsTotal" : 0, + "userExceptionsTotal" : 0, + "avgProcessLatency" : 0.8385, + "1min" : { + "receivedTotal" : 0, + "processedSuccessfullyTotal" : 0, + "systemExceptionsTotal" : 0, + "userExceptionsTotal" : 0, + "avgProcessLatency" : null + }, + "lastInvocation" : 1557734137987, + "instances" : [ { + "instanceId" : 0, + "metrics" : { + "receivedTotal" : 1, + "processedSuccessfullyTotal" : 1, + "systemExceptionsTotal" : 0, + "userExceptionsTotal" : 0, + "avgProcessLatency" : 0.8385, + "1min" : { + "receivedTotal" : 0, + "processedSuccessfullyTotal" : 0, + "systemExceptionsTotal" : 0, + "userExceptionsTotal" : 0, + "avgProcessLatency" : null + }, + "lastInvocation" : 1557734137987, + "userMetrics" : { } + } + } ] +} + +``` + +## `trigger` + +To trigger a specified function with a supplied value: + +```bash + + ./bin/pulsar-admin functions trigger \ + --tenant public \ + --namespace default \ + --name ExclamationFunctio6 \ + --topic persistent://public/default/my-topic-1 \ + --trigger-value "hello pulsar functions" + +``` + +This command simulates the execution process of a function and verifies it. As shown below, the `trigger` command returns the following result: + +```text + +This is my function! + +``` + +:::note + +When using the `--topic` option, you must specify the [entire topic name](getting-started-pulsar.md#topic-names). Otherwise, the following error occurs. + + ```text + + Function in trigger function has unidentified topic + + Reason: Function in trigger function has unidentified topic + + ``` + +::: diff --git a/site2/docs/functions-debug-localrun.md b/site2/docs/functions-debug-localrun.md new file mode 100644 index 0000000000000..5d218fec81802 --- /dev/null +++ b/site2/docs/functions-debug-localrun.md @@ -0,0 +1,68 @@ +--- +id: functions-debug-localrun +title: Debug with localrun mode +sidebar_label: "Debug with localrun mode" +--- + +In localrun mode, a function consumes and produces actual data to a Pulsar cluster, and mirrors how the function actually runs in a Pulsar cluster. This provides a way to test your function and allow you to launch a function instance on your local machine as a thread for easy debugging. + +:::note + +Debugging with localrun mode is only available for Java functions in Pulsar 2.4.0 or later versions. + +::: + +Before using localrun mode, you need to add the following dependency. + +```xml + + + org.apache.pulsar + pulsar-functions-local-runner + ${pulsar.version} + + +``` + +For example, you can run your function in the following manner. + +```java + +FunctionConfig functionConfig = new FunctionConfig(); +functionConfig.setName(functionName); +functionConfig.setInputs(Collections.singleton(sourceTopic)); +functionConfig.setClassName(ExclamationFunction.class.getName()); +functionConfig.setRuntime(FunctionConfig.Runtime.JAVA); +functionConfig.setOutput(sinkTopic); + +LocalRunner localRunner = LocalRunner.builder().functionConfig(functionConfig).build(); +localRunner.start(true); + +``` + +You can debug functions using an IDE. Set breakpoints and manually step through a function to debug with real data. + +The following code example shows how to run a function in localrun mode. + +```java + +public class ExclamationFunction implements Function { + + @Override + public String process(String s, Context context) throws Exception { + return s + "!"; + } + +public static void main(String[] args) throws Exception { + FunctionConfig functionConfig = new FunctionConfig(); + functionConfig.setName("exclamation"); + functionConfig.setInputs(Collections.singleton("input")); + functionConfig.setClassName(ExclamationFunction.class.getName()); + functionConfig.setRuntime(FunctionConfig.Runtime.JAVA); + functionConfig.setOutput("output"); + + LocalRunner localRunner = LocalRunner.builder().functionConfig(functionConfig).build(); + localRunner.start(false); +} + +``` diff --git a/site2/docs/functions-debug-log-topic.md b/site2/docs/functions-debug-log-topic.md new file mode 100644 index 0000000000000..8434a0a5cabfc --- /dev/null +++ b/site2/docs/functions-debug-log-topic.md @@ -0,0 +1,50 @@ +--- +id: functions-debug-log-topic +title: Debug with logic topic +sidebar_label: "Debug with logic topic" +--- + +When using Pulsar Functions, you can generate logs predefined in functions to a specified log topic and configure consumers to consume messages from the log topic. + +For example, the following function logs either a WARNING-level or INFO-level log based on whether the incoming string contains the word `danger` or not. + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; +import org.slf4j.Logger; + +public class LoggingFunction implements Function { + @Override + public void apply(String input, Context context) { + Logger LOG = context.getLogger(); + String messageId = new String(context.getMessageId()); + + if (input.contains("danger")) { + LOG.warn("A warning was received in message {}", messageId); + } else { + LOG.info("Message {} received\nContent: {}", messageId, input); + } + + return null; + } +} + +``` + +As shown in the example, you can get the logger via `context.getLogger()` and assign the logger to the `LOG` variable of `slf4j`, so you can define your desired logs in a function using the `LOG` variable. + +Meanwhile, you need to specify the topic that the logs can be produced to. The following is an example. + +```bash + +bin/pulsar-admin functions create \ + --log-topic persistent://public/default/logging-function-logs \ + # Other function configs + +``` + +The message published to a log topic contains several properties: +- `loglevel`: the level of the log message. +- `fqn`: the fully qualified function name that pushes this log message. +- `instance`: the ID of the function instance that pushes this log message. diff --git a/site2/docs/functions-debug-stderr.md b/site2/docs/functions-debug-stderr.md new file mode 100644 index 0000000000000..a5659ad2b211a --- /dev/null +++ b/site2/docs/functions-debug-stderr.md @@ -0,0 +1,7 @@ +--- +id: functions-debug-stderr +title: Debug with captured stderr +sidebar_label: "Debug with captured stderr" +--- + +To debug why a function fails to start, you can find function startup information and captured stderr output in the `logs/functions////-.log` file. diff --git a/site2/docs/functions-debug-unit-test.md b/site2/docs/functions-debug-unit-test.md new file mode 100644 index 0000000000000..c6a6afebea0f1 --- /dev/null +++ b/site2/docs/functions-debug-unit-test.md @@ -0,0 +1,71 @@ +--- +id: functions-debug-unit-test +title: Debug with unit test +sidebar_label: "Debug with unit test" +--- + + +Like any function with inputs and outputs, you can test Pulsar Functions in a similar way as you test any other function. + +:::note + +Pulsar uses TestNG for testing. + +::: + +For example, if you have the following function written through the language-native interface for Java: + +```java + +import java.util.function.Function; + +public class JavaNativeExclamationFunction implements Function { + @Override + public String apply(String input) { + return String.format("%s!", input); + } +} + +``` + +You can write a simple unit test to test the function. + +```java + +@Test +public void testJavaNativeExclamationFunction() { + JavaNativeExclamationFunction exclamation = new JavaNativeExclamationFunction(); + String output = exclamation.apply("foo"); + Assert.assertEquals(output, "foo!"); +} + +``` + +The following example is written through the Java SDK. + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; + +public class ExclamationFunction implements Function { + @Override + public String process(String input, Context context) { + return String.format("%s!", input); + } +} + +``` + +You can write a unit test to test this function and mock the `Context` parameter as follows. + +```java + +@Test +public void testExclamationFunction() { + ExclamationFunction exclamation = new ExclamationFunction(); + String output = exclamation.process("foo", mock(Context.class)); + Assert.assertEquals(output, "foo!"); +} + +``` diff --git a/site2/docs/functions-debug.md b/site2/docs/functions-debug.md index 6e80b1a60d646..cc74131c34885 100644 --- a/site2/docs/functions-debug.md +++ b/site2/docs/functions-debug.md @@ -1,537 +1,12 @@ --- id: functions-debug title: Debug Pulsar Functions -sidebar_label: "How-to: Debug" +sidebar_label: "Debug Pulsar Functions" --- -You can use the following methods to debug Pulsar Functions: - -* [Captured stderr](functions-debug.md#captured-stderr) -* [Use unit test](functions-debug.md#use-unit-test) -* [Debug with localrun mode](functions-debug.md#debug-with-localrun-mode) -* [Use log topic](functions-debug.md#use-log-topic) -* [Use Functions CLI](functions-debug.md#use-functions-cli) - -## Captured stderr - -Function startup information and captured stderr output is written to `logs/functions////-.log` - -This is useful for debugging why a function fails to start. - -## Use unit test - -A Pulsar Function is a function with inputs and outputs, you can test a Pulsar Function in a similar way as you test any function. - -For example, if you have the following Pulsar Function: - -```java - -import java.util.function.Function; - -public class JavaNativeExclamationFunction implements Function { - @Override - public String apply(String input) { - return String.format("%s!", input); - } -} - -``` - -You can write a simple unit test to test Pulsar Function. - -:::tip - -Pulsar uses testng for testing. - -::: - -```java - -@Test -public void testJavaNativeExclamationFunction() { - JavaNativeExclamationFunction exclamation = new JavaNativeExclamationFunction(); - String output = exclamation.apply("foo"); - Assert.assertEquals(output, "foo!"); -} - -``` - -The following Pulsar Function implements the `org.apache.pulsar.functions.api.Function` interface. - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; - -public class ExclamationFunction implements Function { - @Override - public String process(String input, Context context) { - return String.format("%s!", input); - } -} - -``` - -In this situation, you can write a unit test for this function as well. Remember to mock the `Context` parameter. The following is an example. - -:::tip - -Pulsar uses testng for testing. - -::: - -```java - -@Test -public void testExclamationFunction() { - ExclamationFunction exclamation = new ExclamationFunction(); - String output = exclamation.process("foo", mock(Context.class)); - Assert.assertEquals(output, "foo!"); -} - -``` - -## Debug with localrun mode -When you run a Pulsar Function in localrun mode, it launches an instance of the Function on your local machine as a thread. - -In this mode, a Pulsar Function consumes and produces actual data to a Pulsar cluster, and mirrors how the function actually runs in a Pulsar cluster. - -:::note - -Currently, debugging with localrun mode is only supported by Pulsar Functions written in Java. You need Pulsar version 2.4.0 or later to do the following. Even though localrun is available in versions earlier than Pulsar 2.4.0, you cannot debug with localrun mode programmatically or run Functions as threads. - -::: - -You can launch your function in the following manner. - -```java - -FunctionConfig functionConfig = new FunctionConfig(); -functionConfig.setName(functionName); -functionConfig.setInputs(Collections.singleton(sourceTopic)); -functionConfig.setClassName(ExclamationFunction.class.getName()); -functionConfig.setRuntime(FunctionConfig.Runtime.JAVA); -functionConfig.setOutput(sinkTopic); - -LocalRunner localRunner = LocalRunner.builder().functionConfig(functionConfig).build(); -localRunner.start(true); - -``` - -So you can debug functions using an IDE easily. Set breakpoints and manually step through a function to debug with real data. - -The following example illustrates how to programmatically launch a function in localrun mode. - -```java - -public class ExclamationFunction implements Function { - - @Override - public String process(String s, Context context) throws Exception { - return s + "!"; - } - -public static void main(String[] args) throws Exception { - FunctionConfig functionConfig = new FunctionConfig(); - functionConfig.setName("exclamation"); - functionConfig.setInputs(Collections.singleton("input")); - functionConfig.setClassName(ExclamationFunction.class.getName()); - functionConfig.setRuntime(FunctionConfig.Runtime.JAVA); - functionConfig.setOutput("output"); - - LocalRunner localRunner = LocalRunner.builder().functionConfig(functionConfig).build(); - localRunner.start(false); -} - -``` - -To use localrun mode programmatically, add the following dependency. - -```xml - - - org.apache.pulsar - pulsar-functions-local-runner - ${pulsar.version} - - -``` - -For complete code samples, see [here](https://github.com/jerrypeng/pulsar-functions-demos/tree/master/debugging). - -:::note - -Debugging with localrun mode for Pulsar Functions written in other languages will be supported soon. - -::: - -## Use log topic - -In Pulsar Functions, you can generate log information defined in functions to a specified log topic. You can configure consumers to consume messages from a specified log topic to check the log information. - -![Pulsar Functions core programming model](/assets/pulsar-functions-overview.png) - -**Example** - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; -import org.slf4j.Logger; - -public class LoggingFunction implements Function { - @Override - public void apply(String input, Context context) { - Logger LOG = context.getLogger(); - String messageId = new String(context.getMessageId()); - - if (input.contains("danger")) { - LOG.warn("A warning was received in message {}", messageId); - } else { - LOG.info("Message {} received\nContent: {}", messageId, input); - } - - return null; - } -} - -``` - -As shown in the example above, you can get the logger via `context.getLogger()` and assign the logger to the `LOG` variable of `slf4j`, so you can define your desired log information in a function using the `LOG` variable. Meanwhile, you need to specify the topic to which the log information is produced. - -**Example** - -```bash - -$ bin/pulsar-admin functions create \ - --log-topic persistent://public/default/logging-function-logs \ - # Other function configs - -``` - -The message published to log topic contains several properties for better reasoning: -- `loglevel` -- the level of the log message. -- `fqn` -- fully qualified function name pushes this log message. -- `instance` -- the ID of the function instance pushes this log message. - -## Use Functions CLI - -With [Pulsar Functions CLI](/tools/pulsar-admin/), you can debug Pulsar Functions with the following subcommands: - -* `get` -* `status` -* `stats` -* `list` -* `trigger` - -:::tip - -For complete commands of **Pulsar Functions CLI**, see [here](/tools/pulsar-admin/)。 - -::: - -### `get` - -Get information about a Pulsar Function. - -**Usage** - -```bash - -$ pulsar-admin functions get options - -``` - -**Options** - -|Flag|Description -|---|--- -|`--fqfn`|The Fully Qualified Function Name (FQFN) of a Pulsar Function. -|`--name`|The name of a Pulsar Function. -|`--namespace`|The namespace of a Pulsar Function. -|`--tenant`|The tenant of a Pulsar Function. - -:::tip - -`--fqfn` consists of `--name`, `--namespace` and `--tenant`, so you can specify either `--fqfn` or `--name`, `--namespace` and `--tenant`. - -::: - -**Example** - -You can specify `--fqfn` to get information about a Pulsar Function. - -```bash - -$ ./bin/pulsar-admin functions get public/default/ExclamationFunctio6 - -``` - -Optionally, you can specify `--name`, `--namespace` and `--tenant` to get information about a Pulsar Function. - -```bash - -$ ./bin/pulsar-admin functions get \ - --tenant public \ - --namespace default \ - --name ExclamationFunctio6 - -``` - -As shown below, the `get` command shows input, output, runtime, and other information about the _ExclamationFunctio6_ function. - -```json - -{ - "tenant": "public", - "namespace": "default", - "name": "ExclamationFunctio6", - "className": "org.example.test.ExclamationFunction", - "inputSpecs": { - "persistent://public/default/my-topic-1": { - "isRegexPattern": false - } - }, - "output": "persistent://public/default/test-1", - "processingGuarantees": "ATLEAST_ONCE", - "retainOrdering": false, - "userConfig": {}, - "runtime": "JAVA", - "autoAck": true, - "parallelism": 1 -} - -``` - -### `status` - -Check the current status of a Pulsar Function. - -**Usage** - -```bash - -$ pulsar-admin functions status options - -``` - -**Options** - -|Flag|Description -|---|--- -|`--fqfn`|The Fully Qualified Function Name (FQFN) of a Pulsar Function. -|`--instance-id`|The instance ID of a Pulsar Function
If the `--instance-id` is not specified, it gets the IDs of all instances.
-|`--name`|The name of a Pulsar Function. -|`--namespace`|The namespace of a Pulsar Function. -|`--tenant`|The tenant of a Pulsar Function. - -**Example** - -```bash - -$ ./bin/pulsar-admin functions status \ - --tenant public \ - --namespace default \ - --name ExclamationFunctio6 \ - -``` - -As shown below, the `status` command shows the number of instances, running instances, the instance running under the _ExclamationFunctio6_ function, received messages, successfully processed messages, system exceptions, the average latency and so on. - -```json - -{ - "numInstances" : 1, - "numRunning" : 1, - "instances" : [ { - "instanceId" : 0, - "status" : { - "running" : true, - "error" : "", - "numRestarts" : 0, - "numReceived" : 1, - "numSuccessfullyProcessed" : 1, - "numUserExceptions" : 0, - "latestUserExceptions" : [ ], - "numSystemExceptions" : 0, - "latestSystemExceptions" : [ ], - "averageLatency" : 0.8385, - "lastInvocationTime" : 1557734137987, - "workerId" : "c-standalone-fw-23ccc88ef29b-8080" - } - } ] -} - -``` - -### `stats` - -Get the current stats of a Pulsar Function. - -**Usage** - -```bash - -$ pulsar-admin functions stats options - -``` - -**Options** - -|Flag|Description -|---|--- -|`--fqfn`|The Fully Qualified Function Name (FQFN) of a Pulsar Function. -|`--instance-id`|The instance ID of a Pulsar Function.
If the `--instance-id` is not specified, it gets the IDs of all instances.
-|`--name`|The name of a Pulsar Function. -|`--namespace`|The namespace of a Pulsar Function. -|`--tenant`|The tenant of a Pulsar Function. - -**Example** - -```bash - -$ ./bin/pulsar-admin functions stats \ - --tenant public \ - --namespace default \ - --name ExclamationFunctio6 \ - -``` - -The output is shown as follows: - -```json - -{ - "receivedTotal" : 1, - "processedSuccessfullyTotal" : 1, - "systemExceptionsTotal" : 0, - "userExceptionsTotal" : 0, - "avgProcessLatency" : 0.8385, - "1min" : { - "receivedTotal" : 0, - "processedSuccessfullyTotal" : 0, - "systemExceptionsTotal" : 0, - "userExceptionsTotal" : 0, - "avgProcessLatency" : null - }, - "lastInvocation" : 1557734137987, - "instances" : [ { - "instanceId" : 0, - "metrics" : { - "receivedTotal" : 1, - "processedSuccessfullyTotal" : 1, - "systemExceptionsTotal" : 0, - "userExceptionsTotal" : 0, - "avgProcessLatency" : 0.8385, - "1min" : { - "receivedTotal" : 0, - "processedSuccessfullyTotal" : 0, - "systemExceptionsTotal" : 0, - "userExceptionsTotal" : 0, - "avgProcessLatency" : null - }, - "lastInvocation" : 1557734137987, - "userMetrics" : { } - } - } ] -} - -``` - -### `list` - -List all Pulsar Functions running under a specific tenant and namespace. - -**Usage** - -```bash - -$ pulsar-admin functions list options - -``` - -**Options** - -|Flag|Description -|---|--- -|`--namespace`|The namespace of a Pulsar Function. -|`--tenant`|The tenant of a Pulsar Function. - -**Example** - -```bash - -$ ./bin/pulsar-admin functions list \ - --tenant public \ - --namespace default - -``` - -As shown below, the `list` command returns three functions running under the _public_ tenant and the _default_ namespace. - -```text - -ExclamationFunctio1 -ExclamationFunctio2 -ExclamationFunctio3 - -``` - -### `trigger` - -Trigger a specified Pulsar Function with a supplied value. This command simulates the execution process of a Pulsar Function and verifies it. - -**Usage** - -```bash - -$ pulsar-admin functions trigger options - -``` - -**Options** - -|Flag|Description -|---|--- -|`--fqfn`|The Fully Qualified Function Name (FQFN) of a Pulsar Function. -|`--name`|The name of a Pulsar Function. -|`--namespace`|The namespace of a Pulsar Function. -|`--tenant`|The tenant of a Pulsar Function. -|`--topic`|The topic name that a Pulsar Function consumes from. -|`--trigger-file`|The path to a file that contains the data to trigger a Pulsar Function. -|`--trigger-value`|The value to trigger a Pulsar Function. - -**Example** - -```bash - -$ ./bin/pulsar-admin functions trigger \ - --tenant public \ - --namespace default \ - --name ExclamationFunctio6 \ - --topic persistent://public/default/my-topic-1 \ - --trigger-value "hello pulsar functions" - -``` - -As shown below, the `trigger` command returns the following result: - -```text - -This is my function! - -``` - -:::note - -You must specify the [entire topic name](getting-started-pulsar.md#topic-names) when using the `--topic` option. Otherwise, the following error occurs. - -```text - -Function in trigger function has unidentified topic -Reason: Function in trigger function has unidentified topic - -``` - -::: - +You can use the following methods to debug functions: +* [Debug with captured stderr](functions-debug-stderr) +* [Debug with unit test](functions-debug-unit-test) +* [Debug with localrun mode](functions-debug-localrun) +* [Debug with log topic](functions-debug-log-topic) +* [Debug with Functions CLI](functions-debug-cli) \ No newline at end of file diff --git a/site2/docs/functions-deploy-arguments.md b/site2/docs/functions-deploy-arguments.md new file mode 100644 index 0000000000000..9329cf7908d4f --- /dev/null +++ b/site2/docs/functions-deploy-arguments.md @@ -0,0 +1,34 @@ +--- +id: functions-deploy-arguments +title: Default arguments of CLI +sidebar_label: "Default arguments of CLI" +--- + +You can use function-related commands in the [`pulsar-admin`](/tools/pulsar-admin/) CLI to deploy functions. Pulsar provides a variety of commands, such as: +* `create` command for deploying functions in [cluster mode](functions-deploy-cluster.md) +* `trigger` command for [triggering](functions-deploy-trigger.md) functions + +The following table lists the parameters required in CLI and their default values. + +| Parameter | Default value| +|----------|----------------| +| Function name | N/A
You can specify any value for the function name (except org, library, or similar class names). +Tenant | N/A
The value is derived from the name of the input topics. For example, if the input topic form is `persistent://marketing/{namespace}/{topicName}`, the tenant name is `marketing`.| +| Namespace | N/A
The value is derived from the input topic name. If the input topic form is `persistent://marketing/asia/{topicName}`, the namespace is `asia`.| +| Output topic | `{input topic}-{function name}-output`. For example, if an input topic name of a function is `incoming` and the function name is `exclamation`, the output topic name is `incoming-exclamation-output`.| +| [Processing guarantees](functions-concepts.md#processing-guarantees-and-subscription-types) | `ATLEAST_ONCE` | +| Pulsar service URL | `pulsar://localhost:6650`| + + +Take the `create` command for example. The following function has default values for the function name (`MyFunction`), tenant (`public`), namespace (`default`), subscription type (`SHARED`), processing guarantees (`ATLEAST_ONCE`), and Pulsar service URL (`pulsar://localhost:6650`). + +```bash + +bin/pulsar-admin functions create \ + --jar my-pulsar-functions.jar \ + --classname org.example.MyFunction \ + --inputs my-function-input-topic1,my-function-input-topic2 + +``` + + diff --git a/site2/docs/functions-deploy-cluster-encryption.md b/site2/docs/functions-deploy-cluster-encryption.md new file mode 100644 index 0000000000000..ecf843fec996d --- /dev/null +++ b/site2/docs/functions-deploy-cluster-encryption.md @@ -0,0 +1,28 @@ +--- +id: functions-deploy-cluster-encryption +title: Enable end-to-end-encryption +sidebar_label: "Enable end-to-end-encryption" +--- + +To perform end-to-end [encryption](security-encryption.md), you can specify `--producer-config` and `--input-specs` in the [`pulsar-admin`](/tools/pulsar-admin/) CLI with the public and private key pair configured by the application. Only the consumers with a valid key can decrypt the encrypted messages. + +The encryption/decryption relevant configuration [`CryptoConfig`](functions-cli.md) is included in both `ProducerConfig` and `inputSpecs`. The specific configurable fields about `CryptoConfig` are as follows: + +```text + +public class CryptoConfig { + private String cryptoKeyReaderClassName; + private Map cryptoKeyReaderConfig; + + private String[] encryptionKeys; + private ProducerCryptoFailureAction producerCryptoFailureAction; + + private ConsumerCryptoFailureAction consumerCryptoFailureAction; +} + +``` + +- `producerCryptoFailureAction` defines the action that a producer takes if it fails to encrypt the data. Available options are `FAIL` or `SEND`. +- `consumerCryptoFailureAction` defines the action that a consumer takes if it fails to decrypt the recieved data. Available options are `FAIL`, `DISCARD`, or `CONSUME`. + +For more information about these options, refer to [producer configurations](client-libraries-java.md#configure-producer.md) and [consumer configurations](client-libraries-java.md#configure-consumer). diff --git a/site2/docs/functions-deploy-cluster-package.md b/site2/docs/functions-deploy-cluster-package.md new file mode 100644 index 0000000000000..97ca754f016be --- /dev/null +++ b/site2/docs/functions-deploy-cluster-package.md @@ -0,0 +1,26 @@ +--- +id: functions-deploy-cluster-package +title: Enable package management service +sidebar_label: "Enable package management service" +--- + +[Package management service](admin-api-packages) enables both version management and simplified upgrade/rollback processes for functions, sinks, and sources. When using the same function, sink, and source in different namespaces, you can upload them to a common package management system. + +With the package management service enabled, you can [upload your function package](admin-api-packages.md#upload-a-package) to the service and get the [package URL](admin-api-packages.md#package-url). Thus you can create the function by setting `--jar`, `--py`, or `--go` to the package URL with the [`pulsar-admin`](/tools/pulsar-admin/) CLI. + +By default, the package management service is disabled. To enable it in your cluster, set the properties in the `conf/broker.conf` file as follows. + +```conf + +enablePackagesManagement=true +packagesManagementStorageProvider=org.apache.pulsar.packages.management.storage.bookkeeper.BookKeeperPackagesStorageProvider +packagesReplicas=1 +packagesManagementLedgerRootPath=/ledgers + +``` + +:::tip + +To ensure high availability in a production deployment (a cluster with multiple brokers), set `packagesReplicas` to equal the number of bookies. The default value `1` is only for one-node cluster deployment. + +::: diff --git a/site2/docs/functions-deploy-cluster-parallelism.md b/site2/docs/functions-deploy-cluster-parallelism.md new file mode 100644 index 0000000000000..f0b1fce19891f --- /dev/null +++ b/site2/docs/functions-deploy-cluster-parallelism.md @@ -0,0 +1,51 @@ +--- +id: functions-deploy-cluster-parallelism +title: Enable parallel processing +sidebar_label: "Enable parallel processing" +--- + +In cluster mode, you can specify the **parallelism** (the number of instances to run) to enable parallel processing for a function. + +**Example1** + +Specify the `--parallelism` flag of the `create` command when deploying a function. + +```bash + +bin/pulsar-admin functions create \ + --parallelism 3 \ + # Other function info + +``` + +:::tip + +For an existing function, you can adjust the parallelism by using the `update` command. + +::: + + +**Example2** + +**Specify the `parallelism` parameter when deploying a function configuration through YAML. + +```yaml + +# function-config.yaml +parallelism: 3 +inputs: +- persistent://public/default/input-1 +output: persistent://public/default/output-1 +# other parameters + +``` + +For an existing function, you can adjust the parallelism by using the `update` command as follows. + +```bash + +bin/pulsar-admin functions update \ + --function-config-file function-config.yaml + +``` + diff --git a/site2/docs/functions-deploy-cluster-resource.md b/site2/docs/functions-deploy-cluster-resource.md new file mode 100644 index 0000000000000..0c55066b15132 --- /dev/null +++ b/site2/docs/functions-deploy-cluster-resource.md @@ -0,0 +1,34 @@ +--- +id: functions-deploy-cluster-resource +title: Allocate resources to function instance +sidebar_label: "Allocate resources to function instance" +--- + +When running functions in cluster mode, you can specify the resources that can be allocated to each function instance. + +The following table outlines the resources that can be allocated to function instances. + +| Resource | Specified as | Supported runtime | +|------------|---------------------|-------------------| +| CPU | The number of cores | Kubernetes | +| RAM | The number of bytes | Kubernetes | +| Disk space | The number of bytes | Kubernetes | + +For example, the following command allocates 8 cores, 8GB of RAM, and 10GB of disk space to a function. + +```bash + +bin/pulsar-admin functions create \ + --jar target/my-functions.jar \ + --classname org.example.functions.MyFunction \ + --cpu 8 \ + --ram 8589934592 \ + --disk 10737418240 + +``` + +:::note + +The resources allocated to a given function are applied to each instance of the function. For example, if you apply 8GB of RAM to a function with a [parallelism](functions-deploy-cluster-parallelism.md) of 5, you are applying 40GB of RAM for the function in total. + +::: diff --git a/site2/docs/functions-deploy-cluster.md b/site2/docs/functions-deploy-cluster.md new file mode 100644 index 0000000000000..b7476cc31d97b --- /dev/null +++ b/site2/docs/functions-deploy-cluster.md @@ -0,0 +1,38 @@ +--- +id: functions-deploy-cluster +title: Deploy a function in cluster mode +sidebar_label: "Deploy a function in cluster mode" +--- + +Deploying a function in cluster mode uploads the function to a function worker, which means the function is scheduled by the worker. + +To deploy a function in cluster mode, use the `create` command. + +```bash + +bin/pulsar-admin functions create \ + --py myfunc.py \ + --classname myfunc.SomeFunction \ + --inputs persistent://public/default/input-1 \ + --output persistent://public/default/output-1 + +``` + +To update a function running in cluster mode, you can use the `update` command. + +```bash + +bin/pulsar-admin functions update \ + --py myfunc.py \ + --classname myfunc.SomeFunction \ + --inputs persistent://public/default/new-input-topic \ + --output persistent://public/default/new-output-topic + +``` + +**More options** +* [Allocate resources to function instance](functions-deploy-cluster-resource.md) +* [Enable parallel processing](functions-deploy-cluster-parallelism.md) +* [Enable end-to-end encryption](functions-deploy-cluster-encryption.md) +* [Enable package management service](functions-deploy-cluster-package.md) + diff --git a/site2/docs/functions-deploy-localrun.md b/site2/docs/functions-deploy-localrun.md new file mode 100644 index 0000000000000..7ba87867af421 --- /dev/null +++ b/site2/docs/functions-deploy-localrun.md @@ -0,0 +1,37 @@ +--- +id: functions-deploy-localrun +title: Deploy a function in localrun mode +sidebar_label: "Deploy a function in localrun mode" +--- + +When you deploy a function in localrun mode, it runs on the machine where you enter the commands – on your laptop, for example, or in an [AWS EC2](https://aws.amazon.com/ec2/) instance. + +You can use the `localrun` command to run a single instance of a function. To run multiple instances, you can use the `localrun` command multiple times. + +The following is an example of how to use the `localrun` command. + +```bash + +bin/pulsar-admin functions localrun \ + --py myfunc.py \ + --classname myfunc.SomeFunction \ + --inputs persistent://public/default/input-1 \ + --output persistent://public/default/output-1 + +``` + +:::note + +In localrun mode, Java functions use thread runtime; Python and Go functions use process runtime. + +::: + +By default, the function connects with a Pulsar cluster running on the same machine via a local broker service URL. If you want to connect it to a non-local Pulsar cluster, you can specify a different broker service URL using the `--brokerServiceUrl` flag. + +```bash + +bin/pulsar-admin functions localrun \ + --broker-service-url pulsar://my-cluster-host:6650 \ + # Other function parameters + +``` diff --git a/site2/docs/functions-deploy-trigger.md b/site2/docs/functions-deploy-trigger.md new file mode 100644 index 0000000000000..790f528986315 --- /dev/null +++ b/site2/docs/functions-deploy-trigger.md @@ -0,0 +1,76 @@ +--- +id: functions-deploy-trigger +title: Trigger a function +sidebar_label: "Trigger a function" +--- + +Triggering a function means that you invoke a function by producing a message to one of the input topics via the CLI. You can use the `trigger` command to trigger a function at any time. + +:::tip + +With the [`pulsar-admin`](/tools/pulsar-admin/) CLI, you can send messages to functions without using the [`pulsar-client`](reference-cli-tools.md#pulsar-client) tool or a language-specific client library. + +::: + +To learn how to trigger a function, you can start with a Python function that returns a simple string based on the input as follows. + +```python + +# myfunc.py +def process(input): + return "This function has been triggered with a value of {0}".format(input) + +``` + +1. Run the function in cluster mode. + + ```bash + + bin/pulsar-admin functions create \ + --tenant public \ + --namespace default \ + --name myfunc \ + --py myfunc.py \ + --classname myfunc \ + --inputs persistent://public/default/in \ + --output persistent://public/default/out + + ``` + +2. Assign a consumer to listen on the output topic for messages from the `myfunc` function with the [`pulsar-client consume`](reference-cli-tools.md#consume) command. + + ```bash + + bin/pulsar-client consume persistent://public/default/out \ + --subscription-name my-subscription \ + --num-messages 0 # Listen indefinitely + + ``` + +3. Trigger the function. + + ```bash + + bin/pulsar-admin functions trigger \ + --tenant public \ + --namespace default \ + --name myfunc I am running a few minutes late; my previous meeting is running over. + --trigger-value "hello world" + + ``` + + :::tip + + In the `trigger` command, topic info is not required. You only need to specify basic information about the function, such as tenant, namespace, and function name. + + ::: + +The consumer listening on the output topic produces something as follows in the log. + +```text + +----- got message ----- +This function has been triggered with a value of hello world + +``` + diff --git a/site2/docs/functions-deploy.md b/site2/docs/functions-deploy.md index 66895225d84c6..fad97900be8c0 100644 --- a/site2/docs/functions-deploy.md +++ b/site2/docs/functions-deploy.md @@ -1,261 +1,21 @@ --- id: functions-deploy title: Deploy Pulsar Functions -sidebar_label: "How-to: Deploy" +sidebar_label: "Deploy Pulsar Functions" --- -## Requirements +Pulsar provides two modes to deploy a function: +* [cluster mode (for production)](functions-deploy-cluster.md) - you can submit a function to a Pulsar cluster and the cluster will take charge of running the function. +* [localrun mode](functions-deploy-localrun.md) - you can determine where a function runs, for example, on your local machine. -To deploy and manage Pulsar Functions, you need to have a Pulsar cluster running. There are several options for this: +## Prerequisites -* You can run a [standalone cluster](getting-started-standalone) locally on your own machine. -* You can deploy a Pulsar cluster on [Kubernetes](deploy-kubernetes.md), [Amazon Web Services](deploy-aws.md), [bare metal](deploy-bare-metal), DC/OS, and more. +Before deploying a function, you need to have a Pulsar cluster running first. You have the following options: +* Run a [standalone cluster](getting-started-standalone.md) locally on your own machine. +* Run a Pulsar cluster on [Kubernetes](deploy-kubernetes.md), [Amazon Web Services](deploy-aws.md), [bare metal](deploy-bare-metal.md), and so on. -If you run a non-[standalone](reference-terminology.md#standalone) cluster, you need to obtain the service URL for the cluster. How you obtain the service URL depends on how you deploy your Pulsar cluster. +:::note -If you want to deploy and trigger Python user-defined functions, you need to install [the pulsar python client](/docs/en/client-libraries-python/) on all the machines running [functions workers](functions-worker). +If you want to deploy user-defined functions in Python, you need to install the [python client](client-libraries-python.md) on all the machines running [function workers](functions-concepts.md#function-worker). -## Command-line interface - -Pulsar Functions are deployed and managed using the [`pulsar-admin functions`](/tools/pulsar-admin/) interface, which contains commands such as [`create`](/tools/pulsar-admin/) for deploying functions in [cluster mode](#cluster-mode), [`trigger`](/tools/pulsar-admin/) for [triggering](#triggering-pulsar-functions) functions, [`list`](/tools/pulsar-admin/) for listing deployed functions. - -To learn more commands, refer to [`pulsar-admin functions`](/tools/pulsar-admin/). - -### Default arguments - -When managing Pulsar Functions, you need to specify a variety of information about functions, including tenant, namespace, input and output topics, and so on. However, some parameters have default values if you do not specify values for them. The following table lists the default values. - -Parameter | Default -:---------|:------- -Function name | You can specify any value for the class name (except org, library, or similar class names). For example, when you specify the flag `--classname org.example.MyFunction`, the function name is `MyFunction`. -Tenant | Derived from names of the input topics. If the input topics are under the `marketing` tenant, which means the topic names have the form `persistent://marketing/{namespace}/{topicName}`, the tenant is `marketing`. -Namespace | Derived from names of the input topics. If the input topics are under the `asia` namespace under the `marketing` tenant, which means the topic names have the form `persistent://marketing/asia/{topicName}`, then the namespace is `asia`. -Output topic | `{input topic}-{function name}-output`. For example, if an input topic name of a function is `incoming`, and the function name is `exclamation`, then the name of the output topic is `incoming-exclamation-output`. -Subscription type | For `at-least-once` and `at-most-once` [processing guarantees](functions-overview.md#processing-guarantees), the [`SHARED`](concepts-messaging.md#shared) mode is applied by default; for `effectively-once` guarantees, the [`FAILOVER`](concepts-messaging.md#failover) mode is applied. -Processing guarantees | [`ATLEAST_ONCE`](functions-overview.md#processing-guarantees) -Pulsar service URL | `pulsar://localhost:6650` - -### Example of default arguments - -Take the `create` command as an example. - -```bash - -$ bin/pulsar-admin functions create \ - --jar my-pulsar-functions.jar \ - --classname org.example.MyFunction \ - --inputs my-function-input-topic1,my-function-input-topic2 - -``` - -The function has default values for the function name (`MyFunction`), tenant (`public`), namespace (`default`), subscription type (`SHARED`), processing guarantees (`ATLEAST_ONCE`), and Pulsar service URL (`pulsar://localhost:6650`). - -## Local run mode - -If you run a Pulsar Function in **local run** mode, it runs on the machine from which you enter the commands (on your laptop, an [AWS EC2](https://aws.amazon.com/ec2/) instance, and so on). The following is a [`localrun`](/tools/pulsar-admin/) command example. - -```bash - -$ bin/pulsar-admin functions localrun \ - --py myfunc.py \ - --classname myfunc.SomeFunction \ - --inputs persistent://public/default/input-1 \ - --output persistent://public/default/output-1 - -``` - -By default, the function connects to a Pulsar cluster running on the same machine, via a local [broker](reference-terminology.md#broker) service URL of `pulsar://localhost:6650`. If you use local run mode to run a function but connect it to a non-local Pulsar cluster, you can specify a different broker URL using the `--brokerServiceUrl` flag. The following is an example. - -```bash - -$ bin/pulsar-admin functions localrun \ - --broker-service-url pulsar://my-cluster-host:6650 \ - # Other function parameters - -``` - -## Cluster mode - -When you run a Pulsar Function in **cluster** mode, the function code is uploaded to a Pulsar broker and runs *alongside the broker* rather than in your [local environment](#local-run-mode). You can run a function in cluster mode using the [`create`](/tools/pulsar-admin/) command. - -```bash - -$ bin/pulsar-admin functions create \ - --py myfunc.py \ - --classname myfunc.SomeFunction \ - --inputs persistent://public/default/input-1 \ - --output persistent://public/default/output-1 - -``` - -### Update functions in cluster mode - -You can use the [`update`](/tools/pulsar-admin/) command to update a Pulsar Function running in cluster mode. The following command updates the function created in the [cluster mode](#cluster-mode) section. - -```bash - -$ bin/pulsar-admin functions update \ - --py myfunc.py \ - --classname myfunc.SomeFunction \ - --inputs persistent://public/default/new-input-topic \ - --output persistent://public/default/new-output-topic - -``` - -### Parallelism - -Pulsar Functions run as processes or threads, which are called **instances**. When you run a Pulsar Function, it runs as a single instance by default. With one localrun command, you can only run a single instance of a function. If you want to run multiple instances, you can use localrun command multiple times. - -When you create a function, you can specify the *parallelism* of a function (the number of instances to run). You can set the parallelism factor using the `--parallelism` flag of the [`create`](r/tools/pulsar-admin/) command. - -```bash - -$ bin/pulsar-admin functions create \ - --parallelism 3 \ - # Other function info - -``` - -You can adjust the parallelism of an already created function using the [`update`](/tools/pulsar-admin/) interface. - -```bash - -$ bin/pulsar-admin functions update \ - --parallelism 5 \ - # Other function - -``` - -If you specify a function configuration via YAML, use the `parallelism` parameter. The following is a config file example. - -```yaml - -# function-config.yaml -parallelism: 3 -inputs: -- persistent://public/default/input-1 -output: persistent://public/default/output-1 -# other parameters - -``` - -The following is corresponding update command. - -```bash - -$ bin/pulsar-admin functions update \ - --function-config-file function-config.yaml - -``` - -### Function instance resources - -When you run Pulsar Functions in [cluster mode](#cluster-mode), you can specify the resources that are assigned to each function [instance](#parallelism). - -Resource | Specified as | Runtimes -:--------|:----------------|:-------- -CPU | The number of cores | Kubernetes -RAM | The number of bytes | Process, Docker -Disk space | The number of bytes | Docker - -The following function creation command allocates 8 cores, 8 GB of RAM, and 10 GB of disk space to a function. - -```bash - -$ bin/pulsar-admin functions create \ - --jar target/my-functions.jar \ - --classname org.example.functions.MyFunction \ - --cpu 8 \ - --ram 8589934592 \ - --disk 10737418240 - -``` - -> #### Resources are *per instance* -> The resources that you apply to a given Pulsar Function are applied to each instance of the function. For example, if you apply 8 GB of RAM to a function with a parallelism of 5, you are applying 40 GB of RAM for the function in total. Make sure that you take the parallelism (the number of instances) factor into your resource calculations. - -### Use Package management service - -Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system. - -To use [Package management service](admin-api-packages), ensure that the package management service has been enabled in your cluster by setting the following properties in `broker.conf`. - -> Note: Package management service is not enabled by default. - -```yaml - -enablePackagesManagement=true -packagesManagementStorageProvider=org.apache.pulsar.packages.management.storage.bookkeeper.BookKeeperPackagesStorageProvider -packagesReplicas=1 -packagesManagementLedgerRootPath=/ledgers - -``` - -With Package management service enabled, you can upload your function packages by [upload a package](admin-api-packages.md#upload-a-package) to the service and get the [package URL](admin-api-packages.md#package-url). - -When you have a ready to use package URL, you can create the function with package URL by setting `--jar`, `--py`, or `--go` to the package URL with `pulsar-admin functions create`. - -## Trigger Pulsar Functions - -If a Pulsar Function is running in [cluster mode](#cluster-mode), you can **trigger** it at any time using the command line. Triggering a function means that you send a message with a specific value to the function and get the function output (if any) via the command line. - -> Triggering a function is to invoke a function by producing a message on one of the input topics. With the [`pulsar-admin functions trigger`](/tools/pulsar-admin/) command, you can send messages to functions without using the [`pulsar-client`](reference-cli-tools.md#pulsar-client) tool or a language-specific client library. - -To learn how to trigger a function, you can start with Python function that returns a simple string based on the input. - -```python - -# myfunc.py -def process(input): - return "This function has been triggered with a value of {0}".format(input) - -``` - -You can run the function in [local run mode](functions-deploy.md#local-run-mode). - -```bash - -$ bin/pulsar-admin functions create \ - --tenant public \ - --namespace default \ - --name myfunc \ - --py myfunc.py \ - --classname myfunc \ - --inputs persistent://public/default/in \ - --output persistent://public/default/out - -``` - -Then assign a consumer to listen on the output topic for messages from the `myfunc` function with the [`pulsar-client consume`](reference-cli-tools.md#consume) command. - -```bash - -$ bin/pulsar-client consume persistent://public/default/out \ - --subscription-name my-subscription - --num-messages 0 # Listen indefinitely - -``` - -And then you can trigger the function. - -```bash - -$ bin/pulsar-admin functions trigger \ - --tenant public \ - --namespace default \ - --name myfunc \ - --trigger-value "hello world" - -``` - -The consumer listening on the output topic produces something as follows in the log. - -``` - ------ got message ----- -This function has been triggered with a value of hello world - -``` - -> #### Topic info is not required -> In the `trigger` command, you only need to specify basic information about the function (tenant, namespace, and name). To trigger the function, you do not need to know the function input topics. +::: diff --git a/site2/docs/functions-develop-api-exended-sdk.md b/site2/docs/functions-develop-api-exended-sdk.md new file mode 100644 index 0000000000000..fdd36077466c6 --- /dev/null +++ b/site2/docs/functions-develop-api-exended-sdk.md @@ -0,0 +1,65 @@ +--- +id: functions-develop-api-exended-sdk +title: Use extended SDK for Java +sidebar_label: "Use extended SDK for Java" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +This extended Pulsar Functions SDK provides two additional interfaces to initialize and release external resources. +- By using the `initialize` interface, you can initialize external resources which only need one-time initialization when the function instance starts. +- By using the `close` interface, you can close the referenced external resources when the function instance closes. + +:::note + +The extended Pulsar Functions SDK for Java is only available in Pulsar 2.10.0 or later versions. Before using it, you need to [set up function workers](functions-worker.md) in Pulsar 2.10.0 or later versions. + +::: + +The following example uses the extended interface of Pulsar Functions SDK for Java to initialize RedisClient when the function instance starts and release it when the function instance closes. + +````mdx-code-block + + + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; +import io.lettuce.core.RedisClient; + +public class InitializableFunction implements Function { + private RedisClient redisClient; + + private void initRedisClient(Map connectInfo) { + redisClient = RedisClient.create(connectInfo.get("redisURI")); + } + + @Override + public void initialize(Context context) { + Map connectInfo = context.getUserConfigMap(); + redisClient = initRedisClient(connectInfo); + } + + @Override + public String process(String input, Context context) { + String value = client.get(key); + return String.format("%s-%s", input, value); + } + + @Override + public void close() { + redisClient.close(); + } +} + +``` + + + +```` diff --git a/site2/docs/functions-develop-api-language-native.md b/site2/docs/functions-develop-api-language-native.md new file mode 100644 index 0000000000000..11eb98e39f675 --- /dev/null +++ b/site2/docs/functions-develop-api-language-native.md @@ -0,0 +1,61 @@ +--- +id: functions-develop-api-language-native +title: Use language-native interface for Java/Python +sidebar_label: "Use language-native interface" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +The language-native interface provides a simple and clean approach to write Java/Python functions, by adding an exclamation point to all incoming strings and publishing the output string to a topic. It has no external dependencies. + +The following examples are language-native functions. + +````mdx-code-block + + + +To use a piece of Java code as a “language-native” function, you need to implement the `java.util.Function` interface. You can include any sort of complex logic inside the `apply` method to provide more processing capabilities. + +```java + +import java.util.function.Function; + +public class JavaNativeExclamationFunction implements Function { + @Override + public String apply(String input) { + return String.format("%s!", input); + } +} + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/JavaNativeExclamationFunction.java). + + + + +To use a piece of Python code as a “language-native” function, you must have a method named `process` as follows. It appends an exclamation point to any string value it receives. + +```python + +def process(input): + return "{}!".format(input) + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/native_exclamation_function.py). + +:::note + +Write Pulsar Functions in Python 3. To make sure your functions can run, you need to have Python 3 installed for functions workers and set Python 3 as the default interpreter. + +::: + + + +```` diff --git a/site2/docs/functions-develop-api-sdk.md b/site2/docs/functions-develop-api-sdk.md new file mode 100644 index 0000000000000..eeab77e6c8b10 --- /dev/null +++ b/site2/docs/functions-develop-api-sdk.md @@ -0,0 +1,92 @@ +--- +id: functions-develop-api-sdk +title: Use SDK for Java/Python/Go +sidebar_label: "Use SDK for Java/Python/Go" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +The implementation of Pulsar Functions SDK specifies a functional interface that includes the [context](functions-develop-context) object as a parameter. + +The following examples use Pulsar Functions SDK for different languages. + +````mdx-code-block + + + +When developing a function using the Java SDK, you need to implement the `org.apache.pulsar.functions.api.Function` interface. It specifies only one method that you need to implement called `process`. + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; + +public class ExclamationFunction implements Function { + @Override + public String process(String input, Context context) { + return String.format("%s!", input); + } +} + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/ExclamationFunction.java). + + + + +To develop a function using the Python SDK, you need to add the pulsar client dependency to your Python installation. + +```python + +from pulsar import Function + +class ExclamationFunction(Function): + def __init__(self): + pass + + def process(self, input, context): + return input + '!' + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/exclamation_function.py). + + + + +To develop a function using the Go SDK, you need to add the pulsar client dependency to your Go installation and provide the name of the function to the `pf.Start()` method inside the `main()` method. This registers the function with the Pulsar Functions framework and ensures that the specified function can be invoked when a new message arrives. + +```go + +package main + +import ( + "context" + "fmt" + + "github.com/apache/pulsar/pulsar-function-go/pf" +) + +func HandleRequest(ctx context.Context, in []byte) error{ + fmt.Println(string(in) + "!") + return nil +} + +func main() { + pf.Start(HandleRequest) +} + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/77cf09eafa4f1626a53a1fe2e65dd25f377c1127/pulsar-function-go/examples/inputFunc/inputFunc.go#L20-L36). + + + +```` + diff --git a/site2/docs/functions-develop-api.md b/site2/docs/functions-develop-api.md new file mode 100644 index 0000000000000..318421084b584 --- /dev/null +++ b/site2/docs/functions-develop-api.md @@ -0,0 +1,13 @@ +--- +id: functions-develop-api +title: Use APIs +sidebar_label: "Use APIs" +--- + +The following table outlines the APIs that you can use to develop Pulsar Functions in Java, Python, and Go. + +| Interface | Description | Use case| +|---------|------------|---------| +| [Language-native interface for Java/Python](functions-develop-api-language-native) | No Pulsar-specific libraries or special dependencies required (only core libraries). | Functions that do not require access to the [context](functions-develop-context).| +| [Pulsar Functions SDK for Java/Python/Go](functions-develop-api-sdk) | Pulsar-specific libraries that provide a range of functionality not available in the language-native interfaces, such as state management or user configuration. | Functions that require access to the [context](functions-develop-context).| +| [Extended Pulsar Functions SDK for Java](functions-develop-api-exended-sdk) | An extension to Pulsar-specific libraries, providing the initialization and close interfaces in Java. | Functions that require initializing and releasing external resources.| \ No newline at end of file diff --git a/site2/docs/functions-develop-context-admin-api.md b/site2/docs/functions-develop-context-admin-api.md new file mode 100644 index 0000000000000..3c58a3b206141 --- /dev/null +++ b/site2/docs/functions-develop-context-admin-api.md @@ -0,0 +1,53 @@ +--- +id: functions-develop-context-admin-api +title: Call Pulsar admin APIs +sidebar_label: "Call Pulsar admin APIs" +--- + +Pulsar Functions that use the Java SDK have access to the Pulsar admin client, which allows the Pulsar admin client to manage API calls to your Pulsar clusters. + +Below is an example of how to use the Pulsar admin client exposed from the function `context`. + +```java + +import org.apache.pulsar.client.admin.PulsarAdmin; +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; + +/** + * In this particular example, for every input message, + * the function resets the cursor of the current function's subscription to a + * specified timestamp. + */ +public class CursorManagementFunction implements Function { + + @Override + public String process(String input, Context context) throws Exception { + PulsarAdmin adminClient = context.getPulsarAdmin(); + if (adminClient != null) { + String topic = context.getCurrentRecord().getTopicName().isPresent() ? + context.getCurrentRecord().getTopicName().get() : null; + String subName = context.getTenant() + "/" + context.getNamespace() + "/" + context.getFunctionName(); + if (topic != null) { + // 1578188166 below is a random-pick timestamp + adminClient.topics().resetCursor(topic, subName, 1578188166); + return "reset cursor successfully"; + } + } + return null; + } +} + +``` + +To enable your function to get access to the Pulsar admin client, you need to set `exposeAdminClientEnabled=true` in the `conf/functions_worker.yml` file. To test whether it is enabled or not, you can use the command `pulsar-admin functions localrun` with the flag `--web-service-url` as follows. + +```bash + +bin/pulsar-admin functions localrun \ + --jar my-functions.jar \ + --classname my.package.CursorManagementFunction \ + --web-service-url http://pulsar-web-service:8080 \ + # Other function configs + +``` diff --git a/site2/docs/functions-develop-context-log.md b/site2/docs/functions-develop-context-log.md new file mode 100644 index 0000000000000..fa85811a7f4a6 --- /dev/null +++ b/site2/docs/functions-develop-context-log.md @@ -0,0 +1,193 @@ +--- +id: functions-develop-context-log +title: Produce function logs +sidebar_label: "Produce function logs" +--- + +## Produce logs for Java functions + +Pulsar Functions that use the Java SDK have access to an [SLF4j `Logger`](https://www.slf4j.org/api/org/apache/log4j/Logger.html) object. The logger object can be used to produce logs at a specified log level. + +For example, the following function logs either a `WARNING`- or `INFO`-level log based on whether the incoming string contains the word `danger`. + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; +import org.slf4j.Logger; + +public class LoggingFunction implements Function { + @Override + public void apply(String input, Context context) { + Logger LOG = context.getLogger(); + String messageId = new String(context.getMessageId()); + + if (input.contains("danger")) { + LOG.warn("A warning was received in message {}", messageId); + } else { + LOG.info("Message {} received\nContent: {}", messageId, input); + } + + return null; + } +} + +``` + +To enable your function to produce logs, you need to specify a log topic when creating or running the function. The following is an example. + +```bash + +bin/pulsar-admin functions create \ + --jar my-functions.jar \ + --classname my.package.LoggingFunction \ + --log-topic persistent://public/default/logging-function-logs \ + # Other function configs + +``` + +You can access all the logs produced by `LoggingFunction` via the `persistent://public/default/logging-function-logs` topic. + +### Customize log levels for Java functions + +By default, the log level for Java functions is `info`. If you want to customize the log level of your Java functions, for example, change it to `debug`, you can update the [`functions_log4j2.xml`](https://github.com/apache/pulsar/blob/master/conf/functions_log4j2.xml) file. + +:::tip + +The `functions_log4j2.xml` file is under your Pulsar configuration directory, for example, `/etc/pulsar/` on bare-metal, or `/pulsar/conf` on Kubernetes. + +::: + +1. Set the value of `property`. + + ```xml + + + pulsar.log.level + debug + + + ``` + +2. Apply the log level to places where they are referenced. In the following example, `debug` applies to all function logs. + + ```xml + + + ${sys:pulsar.log.level} + + ${sys:pulsar.log.appender} + ${sys:pulsar.log.level} + + + + ``` + + To be more selective, you can apply different log levels to different classes or modules. For example: + + ```xml + + + com.example.module + info + false + + ${sys:pulsar.log.appender} + + + + ``` + + To apply a more verbose log level to a class in the module, you can reference the following example: + + ```xml + + + com.example.module.className + debug + false + + Console + + + + ``` + + * `additivity` indicates whether log messages will be duplicated if multiple `` entries overlap. Disabling additivity (`false`) prevents duplication of log messages when one or more `` entries contain classes or modules that overlap. + * `AppenderRef` allows you to output the log to a target specified in the definition of the `Appender` section. For example: + + ```xml + + + Console + SYSTEM_OUT + + %d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n + + + + ``` + +## Produce logs for Python functions + +Pulsar Functions that use the Python SDK have access to a logger object. The logger object can be used to produce logs at a specified log level. + +For example, the following function logs either a `WARNING`- or `INFO`-level log based on whether the incoming string contains the word `danger`. + +```python + +from pulsar import Function + +class LoggingFunction(Function): + def process(self, input, context): + logger = context.get_logger() + msg_id = context.get_message_id() + if 'danger' in input: + logger.warn("A warning was received in message {0}".format(context.get_message_id())) + else: + logger.info("Message {0} received\nContent: {1}".format(msg_id, input)) + +``` + +To enable your function to produce logs, you need to specify a log topic when creating or running the function. The following is an example. + +```bash + +bin/pulsar-admin functions create \ + --py logging_function.py \ + --classname logging_function.LoggingFunction \ + --log-topic logging-function-logs \ + # Other function configs + +``` + +All logs produced by `LoggingFunction` can be accessed via the `logging-function-logs` topic. Additionally, you can specify the function log levels through `context.get_logger().setLevel(level)`. For more information, refer to [Logging facility for Python](https://docs.python.org/3/library/logging.html#logging.Logger.setLevel) . + +## Produce logs for Go functions + +When you use `logTopic` related functionalities in Go functions, you can import `github.com/apache/pulsar/pulsar-function-go/logutil` rather than using the `getLogger()` context object. + +The following function shows different log levels based on the function input. + +```go +import ( + "context" + + "github.com/apache/pulsar/pulsar-function-go/pf" + + log "github.com/apache/pulsar/pulsar-function-go/logutil" +) + +func loggerFunc(ctx context.Context, input []byte) { + if len(input) <= 100 { + log.Infof("This input has a length of: %d", len(input)) + } else { + log.Warnf("This input is getting too long! It has {%d} characters", len(input)) + } +} + +func main() { + pf.Start(loggerFunc) +} + +``` diff --git a/site2/docs/functions-develop-context-user-defined-configs.md b/site2/docs/functions-develop-context-user-defined-configs.md new file mode 100644 index 0000000000000..a4f9a95b2f237 --- /dev/null +++ b/site2/docs/functions-develop-context-user-defined-configs.md @@ -0,0 +1,162 @@ +--- +id: functions-develop-context-user-defined-configs +title: Pass user-defined configurations +sidebar_label: "Pass user-defined configurations" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +When you run or update functions created via SDK, you can pass arbitrary key/value pairs to them by using CLI with the `--user-config` flag. Key/value pairs must be specified as JSON. + +````mdx-code-block + + + +:::note + +For all key/value pairs passed to Java functions, both keys and values are `string`. To set the value to be a different type, you need to deserialize it from the `string` type. + +::: + +The context object of Java SDK enables you to access key/value pairs provided to Pulsar Functions via CLI (as JSON). The following example passes a key/value pair. + +```bash + +bin/pulsar-admin functions create \ + # Other function configs + --user-config '{"word-of-the-day":"verdure"}' + +``` + +To access that value in a Java function: + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; +import org.slf4j.Logger; + +import java.util.Optional; + +public class UserConfigFunction implements Function { + @Override + public void apply(String input, Context context) { + Logger LOG = context.getLogger(); + Optional wotd = context.getUserConfigValue("word-of-the-day"); + if (wotd.isPresent()) { + LOG.info("The word of the day is {}", wotd); + } else { + LOG.warn("No word of the day provided"); + } + return null; + } +} + +``` + +The `UserConfigFunction` function logs the string `"The word of the day is verdure"` every time the function is invoked. The `word-of-the-day` config can be changed only when the function is updated with a new value via the CLI. + +You can also access the entire user config map or set a default value in case no value is present. + +```java + +// Get the whole config map +Map allConfigs = context.getUserConfigMap(); + +// Get value or resort to default +String wotd = context.getUserConfigValueOrDefault("word-of-the-day", "perspicacious"); + +``` + + + + +In a Python function, you can access the configuration value like this. + +```python + +from pulsar import Function + +class WordFilter(Function): + def process(self, context, input): + forbidden_word = context.user_config()["forbidden-word"] + + # Don't publish the message if it contains the user-supplied + # forbidden word + if forbidden_word in input: + pass + # Otherwise publish the message + else: + return input + +``` + +The [`Context`](functions-develop-context) object of Python SDK enables you to access key/value pairs provided to functions via the command line (as JSON). The following example passes a key/value pair. + +```bash + +bin/pulsar-admin functions create \ + # Other function configs \ + --user-config '{"word-of-the-day":"verdure"}' + +``` + +To access that value in a Python function: + +```python + +from pulsar import Function + +class UserConfigFunction(Function): + def process(self, input, context): + logger = context.get_logger() + wotd = context.get_user_config_value('word-of-the-day') + if wotd is None: + logger.warn('No word of the day provided') + else: + logger.info("The word of the day is {0}".format(wotd)) + +``` + + + + +The context object of Go SDK enables you to access key/value pairs provided to functions via the command line (as JSON). The following example passes a key/value pair. + +```bash + +bin/pulsar-admin functions create \ + --go path/to/go/binary + --user-config '{"word-of-the-day":"lackadaisical"}' + +``` + +To access that value in a Go function: + +```go + +func contextFunc(ctx context.Context) { + fc, ok := pf.FromContext(ctx) + if !ok { + logutil.Fatal("Function context is not defined") + } + + wotd := fc.GetUserConfValue("word-of-the-day") + + if wotd == nil { + logutil.Warn("The word of the day is empty") + } else { + logutil.Infof("The word of the day is %s", wotd.(string)) + } +} + +``` + + + +```` diff --git a/site2/docs/functions-develop-context.md b/site2/docs/functions-develop-context.md new file mode 100644 index 0000000000000..6fe36e663b817 --- /dev/null +++ b/site2/docs/functions-develop-context.md @@ -0,0 +1,30 @@ +--- +id: functions-develop-context +title: Use context object +sidebar_label: "Use context object" +--- + +Java, Python, and Go SDKs provide access to a **context object** that can be used by a function. This context object provides a wide variety of information and functionality to the function including: +* The name and ID of a function. +* The message ID of a message. Each message is automatically assigned with an ID. +* The key, event time, properties, and partition key of a message. +* The name of the topic that a message is sent to. +* The names of all input topics as well as the output topic associated with the function. +* The name of the class used for [SerDe](#functions-develop-serde). +* The tenant and namespace associated with the function. +* The ID of the function instance running the function. +* The version of the function. +* The [logger object](functions-develop-context-logs) used by the function, which is used to create log messages. +* Access to arbitrary [user configuration](functions-develop-context-user-defined-configs) values supplied via the CLI. +* An interface for recording [metrics](functions-develop-metrics). +* An interface for storing and retrieving state in [state storage](#functions-develop-state). +* A function to publish new messages onto arbitrary topics. +* A function to acknowledge the message being processed (if auto-ack is disabled). +* (Java) get Pulsar admin client. + +:::tip + +For more information about code examples, refer to [Java](https://github.com/apache/pulsar/blob/master/pulsar-functions/api-java/src/main/java/org/apache/pulsar/functions/api/BaseContext.java), [Python](https://github.com/apache/pulsar/blob/master/pulsar-functions/instance/src/main/python/contextimpl.py) and [Go](https://github.com/apache/pulsar/blob/master/pulsar-function-go/pf/context.go). + +::: + diff --git a/site2/docs/functions-develop-metrics.md b/site2/docs/functions-develop-metrics.md new file mode 100644 index 0000000000000..ead229693e480 --- /dev/null +++ b/site2/docs/functions-develop-metrics.md @@ -0,0 +1,95 @@ +--- +id: functions-develop-metrics +title: Use metrics to monitor functions +sidebar_label: "Use metrics to monitor functions" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +To ensure that running functions are healthy at any time, you can configure functions to publish arbitrary metrics to the `metrics` interface that can be queried. + +:::note + +Using the language-native interface for Java or Python is **not** able to publish metrics and stats to Pulsar. + +::: + +You can use both built-in metrics and customized metrics to monitor functions. +- Use the built-in [function metrics](reference-metrics.md#pulsar-functions). + Pulsar Functions expose the metrics that can be collected and used for monitoring the health of Java, Python, and Go functions. You can check the metrics by following the [monitoring](deploy-monitoring.md/#function-and-connector-stats) guide. +- Set your customized metrics. + In addition to the built-in metrics, Pulsar allows you to customize metrics for Java and Python functions. Function workers collect user-defined metrics to Prometheus automatically and you can check them in Grafana. + +Here is an example of how to customize metrics for Java, Python and Go functions by using the [`Context object`](functions-develop-context) on a per-key basis. For example, you can set a metric for the `process-count` key and set another one for the `elevens-count` key every time the function processes a message. + + +````mdx-code-block + + + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; + +public class MetricRecorderFunction implements Function { + @Override + public void apply(Integer input, Context context) { + // Records the metric 1 every time a message arrives + context.recordMetric("hit-count", 1); + + // Records the metric only if the arriving number equals 11 + if (input == 11) { + context.recordMetric("elevens-count", 1); + } + + return null; + } +} + +``` + + + + +```python + +from pulsar import Function + +class MetricRecorderFunction(Function): + def process(self, input, context): + context.record_metric('hit-count', 1) + + if input == 11: + context.record_metric('elevens-count', 1) + +``` + + + + +```go + +func metricRecorderFunction(ctx context.Context, in []byte) error { + inputstr := string(in) + fctx, ok := pf.FromContext(ctx) + if !ok { + return errors.New("get Go Functions Context error") + } + fctx.RecordMetric("hit-count", 1) + if inputstr == "eleven" { + fctx.RecordMetric("elevens-count", 1) + } + return nil +} + +``` + + + +```` diff --git a/site2/docs/functions-develop-schema-registry.md b/site2/docs/functions-develop-schema-registry.md new file mode 100644 index 0000000000000..dab0505c11340 --- /dev/null +++ b/site2/docs/functions-develop-schema-registry.md @@ -0,0 +1,9 @@ +--- +id: functions-develop-schema-registry +title: Use schema registry +sidebar_label: "Use schema registry" +--- + +Pulsar has a built-in schema registry and is bundled with popular schema types, such as Avro, JSON and Protobuf. Pulsar Functions can leverage the existing schema information from input topics and derive the input type. The schema registry applies to output topics as well. + +For more details, refer to [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/AutoSchemaFunction.java). diff --git a/site2/docs/functions-develop-security.md b/site2/docs/functions-develop-security.md new file mode 100644 index 0000000000000..adc358c4336c5 --- /dev/null +++ b/site2/docs/functions-develop-security.md @@ -0,0 +1,86 @@ +--- +id: functions-develop-security +title: Enable security on functions +sidebar_label: "Enable security on functions" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +**Prerequisites** + +If you want to enable security on functions, you need to [enable security settings](functions-worker.md#enable-security-settings) on function workers first. + + +To use the secret APIs from the context, you need to set `secretsProviderConfiguratorClassName` and `secretsProviderConfiguratorConfig` for function workers. + +The `org.apache.pulsar.functions.secretsproviderconfigurator.SecretsProviderConfigurator` interface is used by function workers to choose the `SecretProvider` class name (if any) and its associated configurations at the time of starting the function instances. + +Pulsar Functions provided two types of `SecretsProviderConfigurator` implementation and can be used as the value of `secretsProviderConfiguratorClassName` directly: +`org.apache.pulsar.functions.secretsproviderconfigurator.DefaultSecretsProviderConfigurator`: This is a barebones version of a secrets provider which wires in `ClearTextSecretsProvider` to the function instances. +`org.apache.pulsar.functions.secretsproviderconfigurator.KubernetesSecretsProviderConfigurator`: This is used by default for running in Kubernetes and it uses kubernetes built-in secrets and bind them as environment variables (via `EnvironmentBasedSecretsProvider`) within the function container to ensure that the secrets are available to the function at runtime. + +You can also implemet your own `SecretsProviderConfigurator` if you want to use different `SecretsProvider` for function instances. + +The `org.apache.pulsar.functions.secretsprovider.SecretsProvider` interface is used by the function instances/containers to actually fetch the secrets. The implementation that `SecretsProvider` uses is determined by `SecretsProviderConfigurator`. + +Currently, only Java and Python runtime support `SecretsProvider`. The Java and Python Runtime have the following two providers: +- ClearTextSecretsProvider (default for `DefaultSecretsProviderConfigurator`) +- EnvironmentBasedSecretsProvider (default for `KubernetesSecretsProviderConfigurator`​​) + +Once `SecretsProviderConfigurator` is set, you can get the secret using the [`Context`](functions-develop-context) object as follows. + +````mdx-code-block + + + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; +import org.slf4j.Logger; + +public class GetSecretValueFunction implements Function { + + @Override + public Void process(String input, Context context) throws Exception { + Logger LOG = context.getLogger(); + String secretValue = context.getSecret(input); + + if (!secretValue.isEmpty()) { + LOG.info("The secret {} has value {}", intput, secretValue); + } else { + LOG.warn("No secret with key {}", input); + } + + return null; + } +} + +``` + + + + +```python + +from pulsar import Function + +class GetSecretValueFunction(Function): + def process(self, input, context): + logger = context.get_logger() + secret_value = context.get_secret(input) + if secret_provider is None: + logger.warn('No secret with key {0} '.format(input)) + else: + logger.info("The secret {0} has value {1}".format(input, secret_value)) + +``` + + + +```` diff --git a/site2/docs/functions-develop-serde.md b/site2/docs/functions-develop-serde.md new file mode 100644 index 0000000000000..dd48a3f7272eb --- /dev/null +++ b/site2/docs/functions-develop-serde.md @@ -0,0 +1,160 @@ +--- +id: functions-develop-serde +title: Use SerDe +sidebar_label: "Use SerDe" +--- + +Pulsar Functions use SerDe (**Ser**ialization and **De**serialization) when publishing data to or consuming data from Pulsar topics. How SerDe works by default depends on the language you use (Java or Python) for a particular function. In both languages, however, you can write custom SerDe logic for more complex, application-specific types. + +## Use SerDe for Java functions + +The following basic Java types are built-in and supported by default for Java functions: `string`, `double`, `integer`, `float`, `long`, `short`, and `byte`. + +To customize Java types, you need to implement the following interface. + +```java + +public interface SerDe { + T deserialize(byte[] input); + byte[] serialize(T input); +} + +``` + +SerDe works in the following ways for Java functions. +- If the input and output topics have a schema, Pulsar Functions use the schema for SerDe. +- If the input or output topics do not exist, Pulsar Functions adopt the following rules to determine SerDe: + - If the schema type is specified, Pulsar Functions use the specified schema type. + - If SerDe is specified, Pulsar Functions use the specified SerDe, and the schema type for input and output topics is `byte`. + - If neither the schema type nor SerDe is specified, Pulsar Functions use the built-in SerDe. For non-primitive schema types, the built-in SerDe serializes and deserializes objects in the `JSON` format. + +For example, imagine that you're writing a function that processes tweet objects. You can refer to the following example of the `Tweet` class in Java. + +```java + +public class Tweet { + private String username; + private String tweetContent; + + public Tweet(String username, String tweetContent) { + this.username = username; + this.tweetContent = tweetContent; + } + + // Standard setters and getters +} + +``` + +To pass `Tweet` objects directly between functions, you need to provide a custom SerDe class. In the example below, `Tweet` objects are basically strings, and username and tweet content are separated by `|`. + +```java + +package com.example.serde; + +import org.apache.pulsar.functions.api.SerDe; + +import java.util.regex.Pattern; + +public class TweetSerde implements SerDe { + public Tweet deserialize(byte[] input) { + String s = new String(input); + String[] fields = s.split(Pattern.quote("|")); + return new Tweet(fields[0], fields[1]); + } + + public byte[] serialize(Tweet input) { + return "%s|%s".format(input.getUsername(), input.getTweetContent()).getBytes(); + } +} + +``` + +To apply a customized SerDe to a particular function, you need to: +* Package the `Tweet` and `TweetSerde` classes into a JAR. +* Specify a path to the JAR and SerDe class name when deploying the function. + +The following is an example of using the `create` command to deploy a function by applying a customized SerDe. + +```bash + + bin/pulsar-admin functions create \ + --jar /path/to/your.jar \ + --output-serde-classname com.example.serde.TweetSerde \ + # Other function attributes + +``` + +:::note + +Custom SerDe classes must be packaged with your function JARs. + +::: + +## Use SerDe for Python functions + +In Python, the default SerDe is an identity, meaning that the type is serialized as whatever type the function returns. + +For example, you can specify the SerDe as follows when deploying a function in [cluster mode](functions-deploy-cluster.md). + +```bash + +bin/pulsar-admin functions create \ + --tenant public \ + --namespace default \ + --name my_function \ + --py my_function.py \ + --classname my_function.MyFunction \ + --custom-serde-inputs '{"input-topic-1":"Serde1","input-topic-2":"Serde2"}' \ + --output-serde-classname Serde3 \ + --output output-topic-1 + +``` + +This case contains two input topics: `input-topic-1` and `input-topic-2`, each of which is mapped to a different SerDe class (the mapping must be specified as a JSON string). The output topic `output-topic-1` uses the `Serde3` class for SerDe. + +:::note + +All function related logic, including processing and SerDe classes, must be contained within a single Python file. + +::: + +The table outlines three SerDe options for Python functions. + +| SerDe option | Description | Use case| +| ------------|-----------|-----------| +| `IdentitySerde` (default) | Use the [`IdentitySerde`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L70), which leaves the data unchanged. Creating or running a function without explicitly specifying SerDe means that this option is used. | When you work with simple types like strings, booleans, integers.| +| `PickleSerDe` | Use the [`PickleSerDe`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L62), which uses Python [`pickle`](https://docs.python.org/3/library/pickle.html) for SerDe. | When you work with complex, application-specific types and are comfortable with the "best-effort" approach of `pickle`.| +| `Custom SerDe` | Create a custom SerDe class by implementing the baseline [`SerDe`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L50) class, which has just two methods:
* [`serialize`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L53) for converting the object into bytes.
* [`deserialize`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L58) for converting bytes into an object of the required application-specific type. | When you require explicit control over SerDe, potentially for performance or data compatibility purposes.| + +For example, imagine that you are writing a function that processes tweet objects. You can refer to the following example of the `Tweet` class in Python. + +```python + +class Tweet(object): + def __init__(self, username, tweet_content): + self.username = username + self.tweet_content = tweet_content + +``` + +To use this class in Pulsar Functions, you have two options: +* Specify `PickleSerDe`, which applies the `pickle` library for SerDe. +* Create your own SerDe class. The following is an example. + +```python + +from pulsar import SerDe + +class TweetSerDe(SerDe): + + def serialize(self, input): + return bytes("{0}|{1}".format(input.username, input.tweet_content)) + + def deserialize(self, input_bytes): + tweet_components = str(input_bytes).split('|') + return Tweet(tweet_components[0], tweet_componentsp[1]) + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/custom_object_function.py). diff --git a/site2/docs/functions-develop-state-api.md b/site2/docs/functions-develop-state-api.md new file mode 100644 index 0000000000000..c212acafb9d80 --- /dev/null +++ b/site2/docs/functions-develop-state-api.md @@ -0,0 +1,294 @@ +--- +id: functions-develop-state-api +title: Call state APIs +sidebar_label: "Call state APIs" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +Pulsar Functions expose APIs for mutating and accessing `state`. These APIs are available in the [Context](functions-develop-context.md) object when you use [Java/Python SDK](functions-develop-api-sdk.md) to develop functions. + +The following table outlines the states that can be accessed within Java and Python functions. + +| State-related API | API for Java | Python | +|-----------------------------------------|----------------------------------------|----------------| +| [Increment counter](#increment-counter) | `incrCounter`
`incrCounterAsync` | `incr_counter` | +| [Retrieve counter](#retrieve-counter) | `getCounter`
`getCounterAsync` | `get_counter` | +| [Update state](#update-state) | `putState`
`putStateAsync` | `put_state` | +| [Retrieve state](#retrieve-state) | `getState`
`getStateAsync` | `get_state` | +| [Delete state](#delete-state) | `deleteState` | `del_counter` | + + +## Increment counter + +You can use `incrCounter` to increment the counter of a given `key` by the given `amount`. +If the `key` does not exist, a new key is created. + +````mdx-code-block + + + +```java + + /** + * Increment the builtin distributed counter referred by key + * @param key The name of the key + * @param amount The amount to be incremented + */ + void incrCounter(String key, long amount); + +``` + + + + +```python + + def incr_counter(self, key, amount): + """incr the counter of a given key in the managed state""" + +``` + + + +```` + +To asynchronously increment the counter, you can use `incrCounterAsync`. + +````mdx-code-block + + + +```java + + /** + * Increment the builtin distributed counter referred by key + * but dont wait for the completion of the increment operation + * + * @param key The name of the key + * @param amount The amount to be incremented + */ + CompletableFuture incrCounterAsync(String key, long amount); + +``` + + + +```` + +## Retrieve counter + +You can use `getCounter` to retrieve the counter of a given `key` mutated by `incrCounter`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the counter value for the key. + * + * @param key name of the key + * @return the amount of the counter value for this key + */ + long getCounter(String key); + +``` + + + + +```python + + def get_counter(self, key): + """get the counter of a given key in the managed state""" + +``` + + + +```` + +To asynchronously retrieve the counter mutated by `incrCounterAsync`, you can use `getCounterAsync`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the counter value for the key, but don't wait + * for the operation to be completed + * + * @param key name of the key + * @return the amount of the counter value for this key + */ + CompletableFuture getCounterAsync(String key); + +``` + + + +```` + +## Update state + +Besides the `counter` API, Pulsar also exposes a general key/value API for functions to store and update the state of a given `key`. + +````mdx-code-block + + + +```java + + /** + * Update the state value for the key. + * + * @param key name of the key + * @param value state value of the key + */ + void putState(String key, ByteBuffer value); + +``` + + + + +```python + + def put_state(self, key, value): + """update the value of a given key in the managed state""" + +``` + + + +```` + +To asynchronously update the state of a given `key`, you can use `putStateAsync`. + +````mdx-code-block + + + +```java + + /** + * Update the state value for the key, but don't wait for the operation to be completed + * + * @param key name of the key + * @param value state value of the key + */ + CompletableFuture putStateAsync(String key, ByteBuffer value); + +``` + + + +```` + +## Retrieve state + +You can use `getState` to retrieve the state of a given `key`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the state value for the key. + * + * @param key name of the key + * @return the state value for the key. + */ + ByteBuffer getState(String key); + +``` + + + + +```python + + def get_state(self, key): + """get the value of a given key in the managed state""" + +``` + + + +```` + +To asynchronously retrieve the state of a given `key`, you can use `getStateAsync`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the state value for the key, but don't wait for the operation to be completed + * + * @param key name of the key + * @return the state value for the key. + */ + CompletableFuture getStateAsync(String key); + +``` + + + +```` + +## Delete state + +:::note + +Both counters and binary values share the same keyspace, so this API deletes either type. + +::: + +````mdx-code-block + + + +```java + + /** + * Delete the state value for the key. + * + * @param key name of the key + */ + void deleteState(String key); + +``` + + + +```` diff --git a/site2/docs/functions-develop-state-example.md b/site2/docs/functions-develop-state-example.md new file mode 100644 index 0000000000000..316aace666670 --- /dev/null +++ b/site2/docs/functions-develop-state-example.md @@ -0,0 +1,64 @@ +--- +id: functions-develop-state-example +title: Example +sidebar_label: "Example" +--- + +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + +The example of `WordCountFunction` demonstrates how `state` is stored within Pulsar Functions. + +````mdx-code-block + + + + +The logic of {@inject: github:`WordCountFunction`:/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/WordCountFunction.java} is simple and straightforward: + +1. The function splits the received `String` into multiple words using regex `\\.`. +2. For each `word`, the function increments `counter` by 1 via `incrCounter(key, amount)`. + + ```java + + import org.apache.pulsar.functions.api.Context; + import org.apache.pulsar.functions.api.Function; + + import java.util.Arrays; + + public class WordCountFunction implements Function { + @Override + public Void process(String input, Context context) throws Exception { + Arrays.asList(input.split("\\.")).forEach(word -> context.incrCounter(word, 1)); + return null; + } + } + + ``` + + + + +The logic of this `WordCount` function is simple and straightforward: + +1. The function first splits the received string into multiple words. +2. For each `word`, the function increments `counter` by 1 via `incr_counter(key, amount)`. + + ```python + + from pulsar import Function + + class WordCount(Function): + def process(self, item, context): + for word in item.split(): + context.incr_counter(word, 1) + + ``` + + + +```` diff --git a/site2/docs/functions-develop-state-query.md b/site2/docs/functions-develop-state-query.md new file mode 100644 index 0000000000000..f9a5bf2b61a99 --- /dev/null +++ b/site2/docs/functions-develop-state-query.md @@ -0,0 +1,22 @@ +--- +id: functions-develop-state-query +title: Query state via CLI +sidebar_label: "Query state via CLI" +--- + +Besides using the [State APIs](functions-develop-state-api.md) to store the state of functions in Pulsar's state storage and retrieve it back from the storage, you can use CLI commands to query the state of functions. + +```bash + +bin/pulsar-admin functions querystate \ + --tenant \ + --namespace \ + --name \ + --state-storage-url \ + --key \ + [---watch] + +``` + +If `--watch` is specified, the CLI tool keeps running to get the latest value of the provided `state-key`. + diff --git a/site2/docs/functions-develop-state.md b/site2/docs/functions-develop-state.md new file mode 100644 index 0000000000000..76a2f16718fda --- /dev/null +++ b/site2/docs/functions-develop-state.md @@ -0,0 +1,15 @@ +--- +id: functions-develop-state +title: Configure state storage +sidebar_label: "Configure state storage" +--- + +Pulsar Functions use [Apache BookKeeper](https://bookkeeper.apache.org) as a state storage interface. Pulsar integrates with BookKeeper [table service](https://docs.google.com/document/d/155xAwWv5IdOitHh1NVMEwCMGgB28M3FyMiQSxEpjE-Y/edit#heading=h.56rbh52koe3f) to store state for functions. For example, a `WordCount` function can store the state of its counters into BookKeeper table service via [State APIs](functions-develop-state-api). + +States are key-value pairs, where a key is a string and its value is arbitrary binary data - counters are stored as 64-bit big-endian binary values. Keys are scoped to an individual function, and shared between instances of that function. + +:::note + +State storage is **not** available for Go functions. + +::: diff --git a/site2/docs/functions-develop-tutorial.md b/site2/docs/functions-develop-tutorial.md new file mode 100644 index 0000000000000..8592db40a4d21 --- /dev/null +++ b/site2/docs/functions-develop-tutorial.md @@ -0,0 +1,120 @@ +--- +id: functions-develop-tutorial +title: Tutorials +sidebar_label: "Tutorials" +--- + +## Write a function for word count + +:::note + +The following example is a stateful function. By default, the state of a function is disabled. See [Enable stateful functions](functions-worker-stateful.md) for more instructions. + +::: + +1. Write the function in Java using the [SDK for Java](functions-develop-api-sdk.md). + + ```java + + package org.example.functions; + + import org.apache.pulsar.functions.api.Context; + import org.apache.pulsar.functions.api.Function; + + import java.util.Arrays; + + public class WordCountFunction implements Function { + // This function is invoked every time a message is published to the input topic + @Override + public Void process(String input, Context context) throws Exception { + Arrays.asList(input.split(" ")).forEach(word -> { + String counterKey = word.toLowerCase(); + context.incrCounter(counterKey, 1); + }); + return null; + } + } + + ``` + +2. Bundle and build the JAR file, and then deploy it in your Pulsar cluster using the `pulsar-admin` command. + + ```bash + + bin/pulsar-admin functions create \ + --jar target/my-jar-with-dependencies.jar \ + --classname org.example.functions.WordCountFunction \ + --tenant public \ + --namespace default \ + --name word-count \ + --inputs persistent://public/default/sentences \ + --output persistent://public/default/count + ``` + +## Write a function for content-based routing + +1. Write the function in Python using the [SDK for Python](functions-develop-api-sdk.md). + + ```python + + from pulsar import Function + + class RoutingFunction(Function): + def __init__(self): + self.fruits_topic = "persistent://public/default/fruits" + self.vegetables_topic = "persistent://public/default/vegetables" + + def is_fruit(item): + return item in [b"apple", b"orange", b"pear", b"other fruits..."] + + def is_vegetable(item): + return item in [b"carrot", b"lettuce", b"radish", b"other vegetables..."] + + def process(self, item, context): + if self.is_fruit(item): + context.publish(self.fruits_topic, item) + elif self.is_vegetable(item): + context.publish(self.vegetables_topic, item) + else: + warning = "The item {0} is neither a fruit nor a vegetable".format(item) + context.get_logger().warn(warning) + + ``` + +2. Suppose this code is stored in `~/router.py`, then you can deploy it in your Pulsar cluster using the `pulsar-admin` command. + + ```bash + + bin/pulsar-admin functions create \ + --py ~/router.py \ + --classname router.RoutingFunction \ + --tenant public \ + --namespace default \ + --name route-fruit-veg \ + --inputs persistent://public/default/basket-items + + ``` + +## Write a window function for word count + +:::note + +Currently, window function is only available in Java. + +::: + +This example demonstrates how to use the [language-native interface](functions-develop-api-language-native.md) to write a window function in Java. + +Each input message is a sentence that is split into words and each word counted. The built-in counter state is used to keep track of the word count in a persistent and consistent manner. + +```java + +public class WordCountFunction implements Function { + @Override + public Void process(String input, Context context) { + Arrays.asList(input.split("\\s+")).forEach(word -> context.incrCounter(word, 1)); + return null; + } +} + +``` diff --git a/site2/docs/functions-develop.md b/site2/docs/functions-develop.md index 2bd53092bb853..c9f5e37019cc6 100644 --- a/site2/docs/functions-develop.md +++ b/site2/docs/functions-develop.md @@ -1,1677 +1,22 @@ --- id: functions-develop title: Develop Pulsar Functions -sidebar_label: "How-to: Develop" +sidebar_label: "Develop Pulsar Functions" --- -````mdx-code-block -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -```` - - -You learn how to develop Pulsar Functions with different APIs for Java, Python and Go. - -## Available APIs -In Java and Python, you have two options to write Pulsar Functions. In Go, you can use Pulsar Functions SDK for Go. - -Interface | Description | Use cases -:---------|:------------|:--------- -Language-native interface | No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python). | Functions that do not require access to the function [context](#context). -Pulsar Function SDK for Java/Python/Go | Pulsar-specific libraries that provide a range of functionality not provided by "native" interfaces. | Functions that require access to the function [context](#context). -Extended Pulsar Function SDK for Java | An extension to Pulsar-specific libraries, providing the initialization and close interfaces in Java. | Functions that require initializing and releasing external resources. - -### Language-native interface -The language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, has no external dependencies. The following example is language-native function. - -````mdx-code-block - - - -```java - -import java.util.function.Function; - -public class JavaNativeExclamationFunction implements Function { - @Override - public String apply(String input) { - return String.format("%s!", input); - } -} - -``` - -For complete code, see [here](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/JavaNativeExclamationFunction.java). - - - - -```python - -def process(input): - return "{}!".format(input) - -``` - -For complete code, see [here](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/native_exclamation_function.py). - :::note -You can write Pulsar Functions in python2 or python3. However, Pulsar only looks for `python` as the interpreter. -If you're running Pulsar Functions on an Ubuntu system that only supports python3, you might fail to -start the functions. In this case, you can create a symlink. Your system will fail if -you subsequently install any other package that depends on Python 2.x. A solution is under development in [Issue 5518](https://github.com/apache/pulsar/issues/5518). - -```bash - -sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 - -``` +Develop functions in Java, Python, or Go. +* For supported Java versions, refer to [Pulsar runtime Java version recommendation](https://github.com/apache/pulsar#pulsar-runtime-java-version-recommendation) for more details. +* For supported Python versions, refer to [Python client](client-libraries-python.md#optional-dependencies) for more details. ::: - - - -```` - -### Pulsar Function SDK for Java/Python/Go -The following example uses Pulsar Functions SDK. -````mdx-code-block - - - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; - -public class ExclamationFunction implements Function { - @Override - public String process(String input, Context context) { - return String.format("%s!", input); - } -} - -``` - -For complete code, see [here](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/ExclamationFunction.java). - - - - -```python - -from pulsar import Function - -class ExclamationFunction(Function): - def __init__(self): - pass - - def process(self, input, context): - return input + '!' - -``` - -For complete code, see [here](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/exclamation_function.py). - - - - -```go - -package main - -import ( - "context" - "fmt" - - "github.com/apache/pulsar/pulsar-function-go/pf" -) - -func HandleRequest(ctx context.Context, in []byte) error{ - fmt.Println(string(in) + "!") - return nil -} - -func main() { - pf.Start(HandleRequest) -} - -``` - -For complete code, see [here](https://github.com/apache/pulsar/blob/77cf09eafa4f1626a53a1fe2e65dd25f377c1127/pulsar-function-go/examples/inputFunc/inputFunc.go#L20-L36). - - - - -```` - -### Extended Pulsar Function SDK for Java -This extended Pulsar Function SDK provides two additional interfaces to initialize and release external resources. -- By using the `initialize` interface, you can initialize external resources which only need one-time initialization when the function instance starts. -- By using the `close` interface, you can close the referenced external resources when the function instance closes. - -:::note - -The extended Pulsar Function SDK for Java is available in Pulsar 2.10.0 and later versions. -Before using it, you need to set up Pulsar Function worker 2.10.0 or later versions. - -::: - -The following example uses the extended interface of Pulsar Function SDK for Java to initialize RedisClient when the function instance starts and release it when the function instance closes. - -````mdx-code-block - - - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; -import io.lettuce.core.RedisClient; - -public class InitializableFunction implements Function { - private RedisClient redisClient; - - private void initRedisClient(Map connectInfo) { - redisClient = RedisClient.create(connectInfo.get("redisURI")); - } - - @Override - public void initialize(Context context) { - Map connectInfo = context.getUserConfigMap(); - redisClient = initRedisClient(connectInfo); - } - - @Override - public String process(String input, Context context) { - String value = client.get(key); - return String.format("%s-%s", input, value); - } - - @Override - public void close() { - redisClient.close(); - } -} - -``` - - - - -```` - -## Schema registry -Pulsar has a built-in schema registry and is bundled with popular schema types, such as Avro, JSON and Protobuf. Pulsar Functions can leverage the existing schema information from input topics and derive the input type. The schema registry applies for output topic as well. - -## SerDe -SerDe stands for **Ser**ialization and **De**serialization. Pulsar Functions uses SerDe when publishing data to and consuming data from Pulsar topics. How SerDe works by default depends on the language you use for a particular function. - -````mdx-code-block - - - -When you write Pulsar Functions in Java, the following basic Java types are built in and supported by default: `String`, `Double`, `Integer`, `Float`, `Long`, `Short`, and `Byte`. - -To customize Java types, you need to implement the following interface. - -```java - -public interface SerDe { - T deserialize(byte[] input); - byte[] serialize(T input); -} - -``` - -SerDe works in the following ways in Java Functions. -- If the input and output topics have schema, Pulsar Functions use schema for SerDe. -- If the input or output topics do not exist, Pulsar Functions adopt the following rules to determine SerDe: - - If the schema type is specified, Pulsar Functions use the specified schema type. - - If SerDe is specified, Pulsar Functions use the specified SerDe, and the schema type for input and output topics is `Byte`. - - If neither the schema type nor SerDe is specified, Pulsar Functions use the built-in SerDe. For non-primitive schema type, the built-in SerDe serializes and deserializes objects in the `JSON` format. - - - - -In Python, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns. - -You can specify the SerDe when [creating](functions-deploy.md#cluster-mode) or [running](functions-deploy.md#local-run-mode) functions. - -```bash - -$ bin/pulsar-admin functions create \ - --tenant public \ - --namespace default \ - --name my_function \ - --py my_function.py \ - --classname my_function.MyFunction \ - --custom-serde-inputs '{"input-topic-1":"Serde1","input-topic-2":"Serde2"}' \ - --output-serde-classname Serde3 \ - --output output-topic-1 - -``` - -This case contains two input topics: `input-topic-1` and `input-topic-2`, each of which is mapped to a different SerDe class (the map must be specified as a JSON string). The output topic, `output-topic-1`, uses the `Serde3` class for SerDe. At the moment, all Pulsar Functions logic, include processing function and SerDe classes, must be contained within a single Python file. - -When using Pulsar Functions for Python, you have three SerDe options: - -1. You can use the [`IdentitySerde`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L70), which leaves the data unchanged. The `IdentitySerDe` is the **default**. Creating or running a function without explicitly specifying SerDe means that this option is used. -2. You can use the [`PickleSerDe`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L62), which uses Python [`pickle`](https://docs.python.org/3/library/pickle.html) for SerDe. -3. You can create a custom SerDe class by implementing the baseline [`SerDe`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L50) class, which has just two methods: [`serialize`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L53) for converting the object into bytes, and [`deserialize`](https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/python/pulsar/functions/serde.py#L58) for converting bytes into an object of the required application-specific type. - -The table below shows when you should use each SerDe. - -SerDe option | When to use -:------------|:----------- -`IdentitySerde` | When you work with simple types like strings, Booleans, integers. -`PickleSerDe` | When you work with complex, application-specific types and are comfortable with the "best effort" approach of `pickle`. -Custom SerDe | When you require explicit control over SerDe, potentially for performance or data compatibility purposes. - - - - -Currently, the feature is not available in Go. - - - - -```` - -### Example -Imagine that you're writing Pulsar Functions that are processing tweet objects, you can refer to the following example of `Tweet` class. - -````mdx-code-block - - - -```java - -public class Tweet { - private String username; - private String tweetContent; - - public Tweet(String username, String tweetContent) { - this.username = username; - this.tweetContent = tweetContent; - } - - // Standard setters and getters -} - -``` - -To pass `Tweet` objects directly between Pulsar Functions, you need to provide a custom SerDe class. In the example below, `Tweet` objects are basically strings in which the username and tweet content are separated by a `|`. - -```java - -package com.example.serde; - -import org.apache.pulsar.functions.api.SerDe; - -import java.util.regex.Pattern; - -public class TweetSerde implements SerDe { - public Tweet deserialize(byte[] input) { - String s = new String(input); - String[] fields = s.split(Pattern.quote("|")); - return new Tweet(fields[0], fields[1]); - } - - public byte[] serialize(Tweet input) { - return "%s|%s".format(input.getUsername(), input.getTweetContent()).getBytes(); - } -} - -``` - -To apply this customized SerDe to a particular Pulsar Function, you need to: - -* Package the `Tweet` and `TweetSerde` classes into a JAR. -* Specify a path to the JAR and SerDe class name when deploying the function. - -The following is an example of [`create`](/tools/pulsar-admin/) operation. - -```bash - -$ bin/pulsar-admin functions create \ - --jar /path/to/your.jar \ - --output-serde-classname com.example.serde.TweetSerde \ - # Other function attributes - -``` - -> #### Custom SerDe classes must be packaged with your function JARs -> Pulsar does not store your custom SerDe classes separately from your Pulsar Functions. So you need to include your SerDe classes in your function JARs. If not, Pulsar returns an error. - - - - -```python - -class Tweet(object): - def __init__(self, username, tweet_content): - self.username = username - self.tweet_content = tweet_content - -``` - -In order to use this class in Pulsar Functions, you have two options: - -1. You can specify `PickleSerDe`, which applies the [`pickle`](https://docs.python.org/3/library/pickle.html) library SerDe. -2. You can create your own SerDe class. The following is an example. - - ```python - - from pulsar import SerDe - - class TweetSerDe(SerDe): - - def serialize(self, input): - return bytes("{0}|{1}".format(input.username, input.tweet_content)) - - def deserialize(self, input_bytes): - tweet_components = str(input_bytes).split('|') - return Tweet(tweet_components[0], tweet_componentsp[1]) - - ``` - -For complete code, see [here](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/custom_object_function.py). - - - - -```` - -In both languages, however, you can write custom SerDe logic for more complex, application-specific types. - -## Context -Java, Python and Go SDKs provide access to a **context object** that can be used by a function. This context object provides a wide variety of information and functionality to the function. - -* The name and ID of a Pulsar Function. -* The message ID of each message. Each Pulsar message is automatically assigned with an ID. -* The key, event time, properties and partition key of each message. -* The name of the topic to which the message is sent. -* The names of all input topics as well as the output topic associated with the function. -* The name of the class used for [SerDe](#serde). -* The [tenant](reference-terminology.md#tenant) and namespace associated with the function. -* The ID of the Pulsar Functions instance running the function. -* The version of the function. -* The [logger object](functions-develop.md#logger) used by the function, which can be used to create function log messages. -* Access to arbitrary [user configuration](#user-config) values supplied via the CLI. -* An interface for recording [metrics](#metrics). -* An interface for storing and retrieving state in [state storage](#state-storage). -* A function to publish new messages onto arbitrary topics. -* A function to ack the message being processed (if auto-ack is disabled). -* (Java) get Pulsar admin client. - -````mdx-code-block - - - -The [Context](https://github.com/apache/pulsar/blob/master/pulsar-functions/api-java/src/main/java/org/apache/pulsar/functions/api/Context.java) interface provides a number of methods that you can use to access the function [context](#context). The various method signatures for the `Context` interface are listed as follows. - -```java - -public interface Context { - Record getCurrentRecord(); - Collection getInputTopics(); - String getOutputTopic(); - String getOutputSchemaType(); - String getTenant(); - String getNamespace(); - String getFunctionName(); - String getFunctionId(); - String getInstanceId(); - String getFunctionVersion(); - Logger getLogger(); - void incrCounter(String key, long amount); - void incrCounterAsync(String key, long amount); - long getCounter(String key); - long getCounterAsync(String key); - void putState(String key, ByteBuffer value); - void putStateAsync(String key, ByteBuffer value); - void deleteState(String key); - ByteBuffer getState(String key); - ByteBuffer getStateAsync(String key); - Map getUserConfigMap(); - Optional getUserConfigValue(String key); - Object getUserConfigValueOrDefault(String key, Object defaultValue); - void recordMetric(String metricName, double value); - CompletableFuture publish(String topicName, O object, String schemaOrSerdeClassName); - CompletableFuture publish(String topicName, O object); - TypedMessageBuilder newOutputMessage(String topicName, Schema schema) throws PulsarClientException; - ConsumerBuilder newConsumerBuilder(Schema schema) throws PulsarClientException; - PulsarAdmin getPulsarAdmin(); - PulsarAdmin getPulsarAdmin(String clusterName); -} - -``` - -The following example uses several methods available via the `Context` object. - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; -import org.slf4j.Logger; - -import java.util.stream.Collectors; - -public class ContextFunction implements Function { - public Void process(String input, Context context) { - Logger LOG = context.getLogger(); - String inputTopics = context.getInputTopics().stream().collect(Collectors.joining(", ")); - String functionName = context.getFunctionName(); - - String logMessage = String.format("A message with a value of \"%s\" has arrived on one of the following topics: %s\n", - input, - inputTopics); - - LOG.info(logMessage); - - String metricName = String.format("function-%s-messages-received", functionName); - context.recordMetric(metricName, 1); - - return null; - } -} - -``` - - - - -``` - -class ContextImpl(pulsar.Context): - def get_message_id(self): - ... - def get_message_key(self): - ... - def get_message_eventtime(self): - ... - def get_message_properties(self): - ... - def get_current_message_topic_name(self): - ... - def get_partition_key(self): - ... - def get_function_name(self): - ... - def get_function_tenant(self): - ... - def get_function_namespace(self): - ... - def get_function_id(self): - ... - def get_instance_id(self): - ... - def get_function_version(self): - ... - def get_logger(self): - ... - def get_user_config_value(self, key): - ... - def get_user_config_map(self): - ... - def record_metric(self, metric_name, metric_value): - ... - def get_input_topics(self): - ... - def get_output_topic(self): - ... - def get_output_serde_class_name(self): - ... - def publish(self, topic_name, message, serde_class_name="serde.IdentitySerDe", - properties=None, compression_type=None, callback=None, message_conf=None): - ... - def ack(self, msgid, topic): - ... - def get_and_reset_metrics(self): - ... - def reset_metrics(self): - ... - def get_metrics(self): - ... - def incr_counter(self, key, amount): - ... - def get_counter(self, key): - ... - def del_counter(self, key): - ... - def put_state(self, key, value): - ... - def get_state(self, key): - ... - -``` - - - - -``` - -func (c *FunctionContext) GetInstanceID() int { - return c.instanceConf.instanceID -} - -func (c *FunctionContext) GetInputTopics() []string { - return c.inputTopics -} - -func (c *FunctionContext) GetOutputTopic() string { - return c.instanceConf.funcDetails.GetSink().Topic -} - -func (c *FunctionContext) GetFuncTenant() string { - return c.instanceConf.funcDetails.Tenant -} - -func (c *FunctionContext) GetFuncName() string { - return c.instanceConf.funcDetails.Name -} - -func (c *FunctionContext) GetFuncNamespace() string { - return c.instanceConf.funcDetails.Namespace -} - -func (c *FunctionContext) GetFuncID() string { - return c.instanceConf.funcID -} - -func (c *FunctionContext) GetFuncVersion() string { - return c.instanceConf.funcVersion -} - -func (c *FunctionContext) GetUserConfValue(key string) interface{} { - return c.userConfigs[key] -} - -func (c *FunctionContext) GetUserConfMap() map[string]interface{} { - return c.userConfigs -} - -func (c *FunctionContext) SetCurrentRecord(record pulsar.Message) { - c.record = record -} - -func (c *FunctionContext) GetCurrentRecord() pulsar.Message { - return c.record -} - -func (c *FunctionContext) NewOutputMessage(topic string) pulsar.Producer { - return c.outputMessage(topic) -} - -``` - -The following example uses several methods available via the `Context` object. - -``` - -import ( - "context" - "fmt" - - "github.com/apache/pulsar/pulsar-function-go/pf" -) - -func contextFunc(ctx context.Context) { - if fc, ok := pf.FromContext(ctx); ok { - fmt.Printf("function ID is:%s, ", fc.GetFuncID()) - fmt.Printf("function version is:%s\n", fc.GetFuncVersion()) - } -} - -``` - -For complete code, see [here](https://github.com/apache/pulsar/blob/77cf09eafa4f1626a53a1fe2e65dd25f377c1127/pulsar-function-go/examples/contextFunc/contextFunc.go#L29-L34). - - - - -```` - -### User config -When you run or update Pulsar Functions created using SDK, you can pass arbitrary key/values to them with the command line with the `--user-config` flag. Key/values must be specified as JSON. The following function creation command passes a user configured key/value to a function. - -```bash - -$ bin/pulsar-admin functions create \ - --name word-filter \ - # Other function configs - --user-config '{"forbidden-word":"rosebud"}' - -``` - -````mdx-code-block - - - -The Java SDK [`Context`](#context) object enables you to access key/value pairs provided to Pulsar Functions via the command line (as JSON). The following example passes a key/value pair. - -```bash - -$ bin/pulsar-admin functions create \ - # Other function configs - --user-config '{"word-of-the-day":"verdure"}' - -``` - -To access that value in a Java function: - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; -import org.slf4j.Logger; - -import java.util.Optional; - -public class UserConfigFunction implements Function { - @Override - public void apply(String input, Context context) { - Logger LOG = context.getLogger(); - Optional wotd = context.getUserConfigValue("word-of-the-day"); - if (wotd.isPresent()) { - LOG.info("The word of the day is {}", wotd); - } else { - LOG.warn("No word of the day provided"); - } - return null; - } -} - -``` - -The `UserConfigFunction` function will log the string `"The word of the day is verdure"` every time the function is invoked (which means every time a message arrives). The `word-of-the-day` user config will be changed only when the function is updated with a new config value via the command line. - -You can also access the entire user config map or set a default value in case no value is present: - -```java - -// Get the whole config map -Map allConfigs = context.getUserConfigMap(); - -// Get value or resort to default -String wotd = context.getUserConfigValueOrDefault("word-of-the-day", "perspicacious"); - -``` - -> For all key/value pairs passed to Java functions, both the key *and* the value are `String`. To set the value to be a different type, you need to deserialize from the `String` type. - - - - -In Python function, you can access the configuration value like this. - -```python - -from pulsar import Function - -class WordFilter(Function): - def process(self, context, input): - forbidden_word = context.user_config()["forbidden-word"] - - # Don't publish the message if it contains the user-supplied - # forbidden word - if forbidden_word in input: - pass - # Otherwise publish the message - else: - return input - -``` - -The Python SDK [`Context`](#context) object enables you to access key/value pairs provided to Pulsar Functions via the command line (as JSON). The following example passes a key/value pair. - -```bash - -$ bin/pulsar-admin functions create \ - # Other function configs \ - --user-config '{"word-of-the-day":"verdure"}' - -``` - -To access that value in a Python function: - -```python - -from pulsar import Function - -class UserConfigFunction(Function): - def process(self, input, context): - logger = context.get_logger() - wotd = context.get_user_config_value('word-of-the-day') - if wotd is None: - logger.warn('No word of the day provided') - else: - logger.info("The word of the day is {0}".format(wotd)) - -``` - - - - -The Go SDK [`Context`](#context) object enables you to access key/value pairs provided to Pulsar Functions via the command line (as JSON). The following example passes a key/value pair. - -```bash - -$ bin/pulsar-admin functions create \ - --go path/to/go/binary - --user-config '{"word-of-the-day":"lackadaisical"}' - -``` - -To access that value in a Go function: - -```go - -func contextFunc(ctx context.Context) { - fc, ok := pf.FromContext(ctx) - if !ok { - logutil.Fatal("Function context is not defined") - } - - wotd := fc.GetUserConfValue("word-of-the-day") - - if wotd == nil { - logutil.Warn("The word of the day is empty") - } else { - logutil.Infof("The word of the day is %s", wotd.(string)) - } -} - -``` - - - - -```` - -### Logger - -````mdx-code-block - - - -Pulsar Functions that use the Java SDK have access to an [SLF4j](https://www.slf4j.org/) [`Logger`](https://www.slf4j.org/api/org/apache/log4j/Logger.html) object that can be used to produce logs at the chosen log level. The following example logs either a `WARNING`- or `INFO`-level log based on whether the incoming string contains the word `danger`. - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; -import org.slf4j.Logger; - -public class LoggingFunction implements Function { - @Override - public void apply(String input, Context context) { - Logger LOG = context.getLogger(); - String messageId = new String(context.getMessageId()); - - if (input.contains("danger")) { - LOG.warn("A warning was received in message {}", messageId); - } else { - LOG.info("Message {} received\nContent: {}", messageId, input); - } - - return null; - } -} - -``` - -If you want your function to produce logs, you need to specify a log topic when creating or running the function. The following is an example. - -```bash - -$ bin/pulsar-admin functions create \ - --jar my-functions.jar \ - --classname my.package.LoggingFunction \ - --log-topic persistent://public/default/logging-function-logs \ - # Other function configs - -``` - -All logs produced by `LoggingFunction` above can be accessed via the `persistent://public/default/logging-function-logs` topic. - -#### Customize Function log level -Additionally, you can use the XML file, `functions_log4j2.xml`, to customize the function log level. -To customize the function log level, create or update `functions_log4j2.xml` in your Pulsar conf directory (for example, `/etc/pulsar/` on bare-metal, or `/pulsar/conf` on Kubernetes) to contain contents such as: - -```xml - - - pulsar-functions-instance - 30 - - - pulsar.log.appender - RollingFile - - - pulsar.log.level - debug - - - bk.log.level - debug - - - - - Console - SYSTEM_OUT - - %d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n - - - - RollingFile - ${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.log - ${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}-%d{MM-dd-yyyy}-%i.log.gz - true - - %d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n - - - - 1 - true - - - 1 GB - - - 0 0 0 * * ? - - - - - ${sys:pulsar.function.log.dir} - 2 - - */${sys:pulsar.function.log.file}*log.gz - - - 30d - - - - - - BkRollingFile - ${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk - ${sys:pulsar.function.log.dir}/${sys:pulsar.function.log.file}.bk-%d{MM-dd-yyyy}-%i.log.gz - true - - %d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n - - - - 1 - true - - - 1 GB - - - 0 0 0 * * ? - - - - - ${sys:pulsar.function.log.dir} - 2 - - */${sys:pulsar.function.log.file}.bk*log.gz - - - 30d - - - - - - - - org.apache.pulsar.functions.runtime.shaded.org.apache.bookkeeper - ${sys:bk.log.level} - false - - BkRollingFile - - - - ${sys:pulsar.log.level} - - ${sys:pulsar.log.appender} - ${sys:pulsar.log.level} - - - - - -``` - -The properties set like: - -```xml - - - pulsar.log.level - debug - - -``` - -propagate to places where they are referenced, such as: - -```xml - - - ${sys:pulsar.log.level} - - ${sys:pulsar.log.appender} - ${sys:pulsar.log.level} - - - -``` - -In the above example, debug level logging would be applied to ALL function logs. -This may be more verbose than you desire. To be more selective, you can apply different log levels to different classes or modules. For example: - -```xml - - - com.example.module - info - false - - ${sys:pulsar.log.appender} - - - -``` - -You can be more specific as well, such as applying a more verbose log level to a class in the module, such as: - -```xml - - - com.example.module.className - debug - false - - Console - - - -``` - -Each `` entry allows you to output the log to a target specified in the definition of the Appender. - -Additivity pertains to whether log messages will be duplicated if multiple Logger entries overlap. -To disable additivity, specify - -```xml - -false - -``` - -as shown in examples above. Disabling additivity prevents duplication of log messages when one or more `` entries contain classes or modules that overlap. - -The `` is defined in the `` section, such as: - -```xml - - - Console - SYSTEM_OUT - - %d{ISO8601_OFFSET_DATE_TIME_HHMM} [%t] %-5level %logger{36} - %msg%n - - - -``` - - - - -Pulsar Functions that use the Python SDK have access to a logging object that can be used to produce logs at the chosen log level. The following example function that logs either a `WARNING`- or `INFO`-level log based on whether the incoming string contains the word `danger`. - -```python - -from pulsar import Function - -class LoggingFunction(Function): - def process(self, input, context): - logger = context.get_logger() - msg_id = context.get_message_id() - if 'danger' in input: - logger.warn("A warning was received in message {0}".format(context.get_message_id())) - else: - logger.info("Message {0} received\nContent: {1}".format(msg_id, input)) - -``` - -If you want your function to produce logs on a Pulsar topic, you need to specify a **log topic** when creating or running the function. The following is an example. - -```bash - -$ bin/pulsar-admin functions create \ - --py logging_function.py \ - --classname logging_function.LoggingFunction \ - --log-topic logging-function-logs \ - # Other function configs - -``` - -All logs produced by `LoggingFunction` above can be accessed via the `logging-function-logs` topic. -Additionally, you can specify the function log level through the broker XML file as described in [Customize Function log level](#customize-function-log-level). - - - - -The following Go Function example shows different log levels based on the function input. - -``` - -import ( - "context" - - "github.com/apache/pulsar/pulsar-function-go/pf" - - log "github.com/apache/pulsar/pulsar-function-go/logutil" -) - -func loggerFunc(ctx context.Context, input []byte) { - if len(input) <= 100 { - log.Infof("This input has a length of: %d", len(input)) - } else { - log.Warnf("This input is getting too long! It has {%d} characters", len(input)) - } -} - -func main() { - pf.Start(loggerFunc) -} - -``` - -When you use `logTopic` related functionalities in Go Function, import `github.com/apache/pulsar/pulsar-function-go/logutil`, and you do not have to use the `getLogger()` context object. - -Additionally, you can specify the function log level through the broker XML file, as described here: [Customize Function log level](#customize-function-log-level) - - - - -```` - -### Pulsar admin - -Pulsar Functions using the Java SDK has access to the Pulsar admin client, which allows the Pulsar admin client to manage API calls to current Pulsar clusters or external clusters (if `external-pulsars` is provided). - -````mdx-code-block - - - -Below is an example of how to use the Pulsar admin client exposed from the Function `context`. - -``` - -import org.apache.pulsar.client.admin.PulsarAdmin; -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; - -/** - * In this particular example, for every input message, - * the function resets the cursor of the current function's subscription to a - * specified timestamp. - */ -public class CursorManagementFunction implements Function { - - @Override - public String process(String input, Context context) throws Exception { - PulsarAdmin adminClient = context.getPulsarAdmin(); - if (adminClient != null) { - String topic = context.getCurrentRecord().getTopicName().isPresent() ? - context.getCurrentRecord().getTopicName().get() : null; - String subName = context.getTenant() + "/" + context.getNamespace() + "/" + context.getFunctionName(); - if (topic != null) { - // 1578188166 below is a random-pick timestamp - adminClient.topics().resetCursor(topic, subName, 1578188166); - return "reset cursor successfully"; - } - } - return null; - } -} - -``` - -If you want your function to get access to the Pulsar admin client, you need to enable this feature by setting `exposeAdminClientEnabled=true` in the `functions_worker.yml` file. You can test whether this feature is enabled or not using the command `pulsar-admin functions localrun` with the flag `--web-service-url`. - -``` - -$ bin/pulsar-admin functions localrun \ - --jar my-functions.jar \ - --classname my.package.CursorManagementFunction \ - --web-service-url http://pulsar-web-service:8080 \ - # Other function configs - -``` - - - - -```` - -## Metrics - -Pulsar Functions allows you to deploy and manage processing functions that consume messages from and publish messages to Pulsar topics easily. It is important to ensure that the running functions are healthy at any time. Pulsar Functions can publish arbitrary metrics to the metrics interface which can be queried. - -:::note - -If a Pulsar Function uses the language-native interface for Java or Python, that function is not able to publish metrics and stats to Pulsar. - -::: - -You can monitor Pulsar Functions that have been deployed with the following methods: - -- Check the metrics provided by Pulsar. - - Pulsar Functions expose the metrics that can be collected and used for monitoring the health of **Java, Python, and Go** functions. You can check the metrics by following the [monitoring](deploy-monitoring) guide. - - For the complete list of the function metrics, see [here](reference-metrics.md#pulsar-functions). - -- Set and check your customized metrics. - - In addition to the metrics provided by Pulsar, Pulsar allows you to customize metrics for **Java and Python** functions. Function workers collect user-defined metrics to Prometheus automatically and you can check them in Grafana. - -Here are examples of how to customize metrics for Java and Python functions. - -````mdx-code-block - - - -You can record metrics using the [`Context`](#context) object on a per-key basis. For example, you can set a metric for the `process-count` key and a different metric for the `elevens-count` key every time the function processes a message. - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; - -public class MetricRecorderFunction implements Function { - @Override - public void apply(Integer input, Context context) { - // Records the metric 1 every time a message arrives - context.recordMetric("hit-count", 1); - - // Records the metric only if the arriving number equals 11 - if (input == 11) { - context.recordMetric("elevens-count", 1); - } - - return null; - } -} - -``` - - - - -You can record metrics using the [`Context`](#context) object on a per-key basis. For example, you can set a metric for the `process-count` key and a different metric for the `elevens-count` key every time the function processes a message. The following is an example. - -```python - -from pulsar import Function - -class MetricRecorderFunction(Function): - def process(self, input, context): - context.record_metric('hit-count', 1) - - if input == 11: - context.record_metric('elevens-count', 1) - -``` - - - - -The Go SDK [`Context`](#context) object enables you to record metrics on a per-key basis. For example, you can set a metric for the `process-count` key and a different metric for the `elevens-count` key every time the function processes a message: - -```go - -func metricRecorderFunction(ctx context.Context, in []byte) error { - inputstr := string(in) - fctx, ok := pf.FromContext(ctx) - if !ok { - return errors.New("get Go Functions Context error") - } - fctx.RecordMetric("hit-count", 1) - if inputstr == "eleven" { - fctx.RecordMetric("elevens-count", 1) - } - return nil -} - -``` - - - - -```` - -## Security - -If you want to enable security on Pulsar Functions, first you should enable security on [Functions Workers](functions-worker). For more details, refer to [Security settings](functions-worker.md#security-settings). - -Pulsar Functions can support the following providers: - -- ClearTextSecretsProvider -- EnvironmentBasedSecretsProvider - -> Pulsar Function supports ClearTextSecretsProvider by default. - -At the same time, Pulsar Functions provides two interfaces, **SecretsProvider** and **SecretsProviderConfigurator**, allowing users to customize secret provider. - -````mdx-code-block - - - -You can get secret provider using the [`Context`](#context) object. The following is an example: - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; -import org.slf4j.Logger; - -public class GetSecretProviderFunction implements Function { - - @Override - public Void process(String input, Context context) throws Exception { - Logger LOG = context.getLogger(); - String secretProvider = context.getSecret(input); - - if (!secretProvider.isEmpty()) { - LOG.info("The secret provider is {}", secretProvider); - } else { - LOG.warn("No secret provider"); - } - - return null; - } -} - -``` - - - - -You can get secret provider using the [`Context`](#context) object. The following is an example: - -```python - -from pulsar import Function - -class GetSecretProviderFunction(Function): - def process(self, input, context): - logger = context.get_logger() - secret_provider = context.get_secret(input) - if secret_provider is None: - logger.warn('No secret provider') - else: - logger.info("The secret provider is {0}".format(secret_provider)) - -``` - - - - -Currently, the feature is not available in Go. - - - - -```` - -## State storage -Pulsar Functions use [Apache BookKeeper](https://bookkeeper.apache.org) as a state storage interface. Pulsar installation, including the local standalone installation, includes deployment of BookKeeper bookies. - -Since Pulsar 2.1.0 release, Pulsar integrates with Apache BookKeeper [table service](https://docs.google.com/document/d/155xAwWv5IdOitHh1NVMEwCMGgB28M3FyMiQSxEpjE-Y/edit#heading=h.56rbh52koe3f) to store the `State` for functions. For example, a `WordCount` function can store its `counters` state into BookKeeper table service via Pulsar Functions State API. - -States are key-value pairs, where the key is a string and the value is arbitrary binary data - counters are stored as 64-bit big-endian binary values. Keys are scoped to an individual Pulsar Function, and shared between instances of that function. - -You can access states within Pulsar Java Functions using the `putState`, `putStateAsync`, `getState`, `getStateAsync`, `incrCounter`, `incrCounterAsync`, `getCounter`, `getCounterAsync` and `deleteState` calls on the context object. You can access states within Pulsar Python Functions using the `putState`, `getState`, `incrCounter`, `getCounter` and `deleteState` calls on the context object. You can also manage states using the [querystate](#query-state) and [putstate](#putstate) options to `pulsar-admin functions`. - -:::note - -State storage is not available in Go. - -::: - -### API - -````mdx-code-block - - - -Currently Pulsar Functions expose the following APIs for mutating and accessing State. These APIs are available in the [Context](functions-develop.md#context) object when you are using Java SDK functions. - -#### incrCounter - -```java - - /** - * Increment the builtin distributed counter referred by key - * @param key The name of the key - * @param amount The amount to be incremented - */ - void incrCounter(String key, long amount); - -``` - -The application can use `incrCounter` to change the counter of a given `key` by the given `amount`. - -#### incrCounterAsync - -```java - - /** - * Increment the builtin distributed counter referred by key - * but dont wait for the completion of the increment operation - * - * @param key The name of the key - * @param amount The amount to be incremented - */ - CompletableFuture incrCounterAsync(String key, long amount); - -``` - -The application can use `incrCounterAsync` to asynchronously change the counter of a given `key` by the given `amount`. - -#### getCounter - -```java - - /** - * Retrieve the counter value for the key. - * - * @param key name of the key - * @return the amount of the counter value for this key - */ - long getCounter(String key); - -``` - -The application can use `getCounter` to retrieve the counter of a given `key` mutated by `incrCounter`. - -Except the `counter` API, Pulsar also exposes a general key/value API for functions to store -general key/value state. - -#### getCounterAsync - -```java - - /** - * Retrieve the counter value for the key, but don't wait - * for the operation to be completed - * - * @param key name of the key - * @return the amount of the counter value for this key - */ - CompletableFuture getCounterAsync(String key); - -``` - -The application can use `getCounterAsync` to asynchronously retrieve the counter of a given `key` mutated by `incrCounterAsync`. - -#### putState - -```java - - /** - * Update the state value for the key. - * - * @param key name of the key - * @param value state value of the key - */ - void putState(String key, ByteBuffer value); - -``` - -#### putStateAsync - -```java - - /** - * Update the state value for the key, but don't wait for the operation to be completed - * - * @param key name of the key - * @param value state value of the key - */ - CompletableFuture putStateAsync(String key, ByteBuffer value); - -``` - -The application can use `putStateAsync` to asynchronously update the state of a given `key`. - -#### getState - -```java - - /** - * Retrieve the state value for the key. - * - * @param key name of the key - * @return the state value for the key. - */ - ByteBuffer getState(String key); - -``` - -#### getStateAsync - -```java - - /** - * Retrieve the state value for the key, but don't wait for the operation to be completed - * - * @param key name of the key - * @return the state value for the key. - */ - CompletableFuture getStateAsync(String key); - -``` - -The application can use `getStateAsync` to asynchronously retrieve the state of a given `key`. - -#### deleteState - -```java - - /** - * Delete the state value for the key. - * - * @param key name of the key - */ - -``` - -Counters and binary values share the same keyspace, so this deletes either type. - - - - -Currently Pulsar Functions expose the following APIs for mutating and accessing State. These APIs are available in the [Context](#context) object when you are using Python SDK functions. - -#### incr_counter - -```python - - def incr_counter(self, key, amount): - """incr the counter of a given key in the managed state""" - -``` - -Application can use `incr_counter` to change the counter of a given `key` by the given `amount`. -If the `key` does not exist, a new key is created. - -#### get_counter - -```python - - def get_counter(self, key): - """get the counter of a given key in the managed state""" - -``` - -Application can use `get_counter` to retrieve the counter of a given `key` mutated by `incrCounter`. - -Except the `counter` API, Pulsar also exposes a general key/value API for functions to store -general key/value state. - -#### put_state - -```python - - def put_state(self, key, value): - """update the value of a given key in the managed state""" - -``` - -The key is a string, and the value is arbitrary binary data. - -#### get_state - -```python - - def get_state(self, key): - """get the value of a given key in the managed state""" - -``` - -#### del_counter - -```python - - def del_counter(self, key): - """delete the counter of a given key in the managed state""" - -``` - -Counters and binary values share the same keyspace, so this deletes either type. - - - - -```` - -### Query State - -A Pulsar Function can use the [State API](#api) for storing state into Pulsar's state storage -and retrieving state back from Pulsar's state storage. Additionally Pulsar also provides -CLI commands for querying its state. - -```shell - -$ bin/pulsar-admin functions querystate \ - --tenant \ - --namespace \ - --name \ - --state-storage-url \ - --key \ - [---watch] - -``` - -If `--watch` is specified, the CLI will watch the value of the provided `state-key`. - -### Example - -````mdx-code-block - - - -{@inject: github:WordCountFunction:/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/WordCountFunction.java} is a very good example -demonstrating on how Application can easily store `state` in Pulsar Functions. - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; - -import java.util.Arrays; - -public class WordCountFunction implements Function { - @Override - public Void process(String input, Context context) throws Exception { - Arrays.asList(input.split("\\.")).forEach(word -> context.incrCounter(word, 1)); - return null; - } -} - -``` - -The logic of this `WordCount` function is pretty simple and straightforward: - -1. The function first splits the received `String` into multiple words using regex `\\.`. -2. For each `word`, the function increments the corresponding `counter` by 1 (via `incrCounter(key, amount)`). - - - - -```python - -from pulsar import Function - -class WordCount(Function): - def process(self, item, context): - for word in item.split(): - context.incr_counter(word, 1) - -``` - -The logic of this `WordCount` function is pretty simple and straightforward: - -1. The function first splits the received string into multiple words on space. -2. For each `word`, the function increments the corresponding `counter` by 1 (via `incr_counter(key, amount)`). - - - - -```` +To develop Pulsar Functions, you can leverage the following tools and features. +* [APIs](functions-develop-api) +* [Schema registry](functions-schema-registry) +* [SerDe](functions-develop-serde) +* [Context object](functions-develop-context) +* [Metrics](functions-develop-metrics) +* [Security](functions-develop-security) +* [Stage storage](functions-develop-state) \ No newline at end of file diff --git a/site2/docs/functions-overview.md b/site2/docs/functions-overview.md index 25e9bd7a56e52..3c1775f9fa3f5 100644 --- a/site2/docs/functions-overview.md +++ b/site2/docs/functions-overview.md @@ -4,205 +4,83 @@ title: Pulsar Functions overview sidebar_label: "Overview" --- -**Pulsar Functions** are lightweight compute processes that +This section introduces the following content: +* [What is Pulsar Functions](#what-is-pulsar-functions) +* [Why use Puslar Functions](#why-use-pulsar-functions) +* [Use cases](#use-cases) +* [User flow](#user-flow) -* consume messages from one or more Pulsar topics, -* apply a user-supplied processing logic to each message, -* publish the results of the computation to another topic. +## What are Pulsar Functions -## Goals -With Pulsar Functions, you can create complex processing logic without deploying a separate neighboring system (such as [Apache Storm](http://storm.apache.org/), [Apache Heron](https://heron.incubator.apache.org/), [Apache Flink](https://flink.apache.org/)). Pulsar Functions are computing infrastructure of Pulsar messaging system. The core goal is tied to a series of other goals: +Pulsar Functions are a serverless computing framework that runs on top of Pulsar and processes messages in the following way: +* consumes messages from one or more topics, +* applies a user-defined processing logic to the messages, +* publishes the outputs of the messages to other topics. -* Developer productivity (language-native vs Pulsar Functions SDK functions) -* Easy troubleshooting -* Operational simplicity (no need for an external processing system) - -## Inspirations -Pulsar Functions are inspired by (and take cues from) several systems and paradigms: - -* Stream processing engines such as [Apache Storm](http://storm.apache.org/), [Apache Heron](https://apache.github.io/incubator-heron), and [Apache Flink](https://flink.apache.org) -* "Serverless" and "Function as a Service" (FaaS) cloud platforms like [Amazon Web Services Lambda](https://aws.amazon.com/lambda/), [Google Cloud Functions](https://cloud.google.com/functions/), and [Azure Cloud Functions](https://azure.microsoft.com/en-us/services/functions/) - -Pulsar Functions can be described as - -* [Lambda](https://aws.amazon.com/lambda/)-style functions that are -* specifically designed to use Pulsar as a message bus. - -## Programming model -Pulsar Functions provide a wide range of functionality, and the core programming model is simple. Functions receive messages from one or more **input [topics](reference-terminology.md#topic)**. Each time a message is received, the function will complete the following tasks. +The following figure illustrates the computing process of a function. - * Apply some processing logic to the input and write output to: - * An **output topic** in Pulsar - * [Apache BookKeeper](functions-develop.md#state-storage) - * Write logs to a **log topic** (potentially for debugging purposes) - * Increment a [counter](#word-count-example) +![Pulsar Functions execute user-defined code on data published to Pulsar topics](/assets/function-overview.svg) -![Pulsar Functions core programming model](/assets/pulsar-functions-overview.png) - -You can use Pulsar Functions to set up the following processing chain: - -* A Python function listens for the `raw-sentences` topic and "sanitizes" incoming strings (removing extraneous whitespace and converting all characters to lowercase) and then publishes the results to a `sanitized-sentences` topic. -* A Java function listens for the `sanitized-sentences` topic, counts the number of times each word appears within a specified time window, and publishes the results to a `results` topic -* Finally, a Python function listens for the `results` topic and writes the results to a MySQL table. - - -### Word count example +A function receives messages from one or more **input topics**. Each time messages are received, the function completes the following steps: +1. Consumes the messages in the input topics. +2. Applies a customized processing logic to the messages and: + a) writes output messages to an **output topic** in Pulsar + b) writes logs to a **log topic** if it is configured (for debugging purposes) + c) writes [state](functions-develop-state) to BookKeeper (if it is configured) -If you implement the classic word count example using Pulsar Functions, it looks something like this: -![Pulsar Functions word count example](/assets/pulsar-functions-word-count.png) +You can write functions in Java, Python, and Go. For example, you can use Pulsar Functions to set up the following processing chain: +* A Python function listens for the `raw-sentences` topic and "sanitizes" incoming strings (removing extraneous white space and converting all characters to lowercase) and then publishes the results to a `sanitized-sentences` topic. +* A Java function listens for the `sanitized-sentences` topic, counts the number of times each word appears within a specified time [window](functions-concepts.md#window-function), and publishes the results to a `results` topic. +* A Python function listens for the `results` topic and writes the results to a MySQL table. -To write the function in Java with [Pulsar Functions SDK for Java](functions-develop.md#available-apis), you can write the function as follows. +See [Develop Pulsar Functions](functions-develop.md) for more details. -```java -package org.example.functions; +## Why use Pulsar Functions -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; +Pulsar Functions provide the capabilities to perform simple computations on the messages before they are routed to consumers. -import java.util.Arrays; +Pulsar Functions can be characterized as Lambda-style functions that are specifically designed and integrated with Pulsar as the underlying message bus. The framework of Pulsar Functions provides a simple computing framework on your Pulsar cluster and takes care of the underlying details of sending/receiving messages. You only need to focus on the business logic and run it as Pulsar Functions to maximize the value of your data and enjoy the benefits of: +* Simplified deployment and operations - you can create a data pipeline without deploying a separate Stream Processing Engine (SPE), such as [Apache Storm](http://storm.apache.org/), [Apache Heron](https://heron.incubator.apache.org/), or [Apache Flink](https://flink.apache.org/). +* Serverless computing (when Kubernetes runtime is used) +* Maximized developer productivity (both language-native interfaces and SDKs for Java/Python/Go). +* Easy troubleshooting -public class WordCountFunction implements Function { - // This function is invoked every time a message is published to the input topic - @Override - public Void process(String input, Context context) throws Exception { - Arrays.asList(input.split(" ")).forEach(word -> { - String counterKey = word.toLowerCase(); - context.incrCounter(counterKey, 1); - }); - return null; - } -} -``` +## Use cases -Bundle and build the JAR file to be deployed, and then deploy it in your Pulsar cluster using the [command line](functions-deploy.md#command-line-interface) as follows. +Here are two real-world use cases to help you understand the capabilities of Pulsar Functions and what they can be used for. -```bash +### Word count example -$ bin/pulsar-admin functions create \ - --jar target/my-jar-with-dependencies.jar \ - --classname org.example.functions.WordCountFunction \ - --tenant public \ - --namespace default \ - --name word-count \ - --inputs persistent://public/default/sentences \ - --output persistent://public/default/count +This figure illustrates the process of implementing the classic word count example using Pulsar Functions. It calculates a sum of the occurrences of every individual word published to a given topic. -``` +![Word count example using Pulsar Functions](/assets/pulsar-functions-word-count.png) ### Content-based routing example -Pulsar Functions are used in many cases. The following is a sophisticated example that involves content-based routing. - -For example, a function takes items (strings) as input and publishes them to either a `fruits` or `vegetables` topic, depending on the item. Or, if an item is neither fruit nor vegetable, a warning is logged to a [log topic](functions-develop.md#logger). The following is a visual representation. - -![Pulsar Functions routing example](/assets/pulsar-functions-routing-example.png) - -If you implement this routing functionality in Python, it looks something like this: - -```python - -from pulsar import Function - -class RoutingFunction(Function): - def __init__(self): - self.fruits_topic = "persistent://public/default/fruits" - self.vegetables_topic = "persistent://public/default/vegetables" - - @staticmethod - def is_fruit(item): - return item in [b"apple", b"orange", b"pear", b"other fruits..."] - - @staticmethod - def is_vegetable(item): - return item in [b"carrot", b"lettuce", b"radish", b"other vegetables..."] - - def process(self, item, context): - if self.is_fruit(item): - context.publish(self.fruits_topic, item) - elif self.is_vegetable(item): - context.publish(self.vegetables_topic, item) - else: - warning = "The item {0} is neither a fruit nor a vegetable".format(item) - context.get_logger().warn(warning) - -``` - -If this code is stored in `~/router.py`, then you can deploy it in your Pulsar cluster using the [command line](functions-deploy.md#command-line-interface) as follows. - -```bash - -$ bin/pulsar-admin functions create \ - --py ~/router.py \ - --classname router.RoutingFunction \ - --tenant public \ - --namespace default \ - --name route-fruit-veg \ - --inputs persistent://public/default/basket-items - -``` - -### Functions, messages and message types -Pulsar Functions take byte arrays as inputs and spit out byte arrays as output. However in languages that support typed interfaces(Java), you can write typed Functions, and bind messages to types in the following ways. -* [Schema Registry](functions-develop.md#schema-registry) -* [SerDe](functions-develop.md#serde) - - -## Fully Qualified Function Name (FQFN) -Each Pulsar Function has a **Fully Qualified Function Name** (FQFN) that consists of three elements: the function tenant, namespace, and function name. FQFN looks like this: - -```http - -tenant/namespace/name - -``` - -FQFNs enable you to create multiple functions with the same name provided that they are in different namespaces. - -## Supported languages -Currently, you can write Pulsar Functions in Java, Python, and Go. For details, refer to [Develop Pulsar Functions](functions-develop). - -## Processing guarantees -Pulsar Functions provide three different messaging semantics that you can apply to any function. - -Delivery semantics | Description -:------------------|:------- -**At-most-once** delivery | Each message sent to the function is likely to be processed, or not to be processed (hence "at most"). -**At-least-once** delivery | Each message sent to the function can be processed more than once (hence the "at least"). -**Effectively-once** delivery | Each message sent to the function will have one output associated with it. - - -### Apply processing guarantees to a function -You can set the processing guarantees for a Pulsar Function when you create the Function. The following [`pulsar-function create`](/tools/pulsar-admin/) command creates a function with effectively-once guarantees applied. - -```bash - -$ bin/pulsar-admin functions create \ - --name my-effectively-once-function \ - --processing-guarantees EFFECTIVELY_ONCE \ - # Other function configs - -``` - -The available options for `--processing-guarantees` are: +For example, a function takes items (strings) as input and publishes them to either a `fruits` or `vegetables` topic, depending on the item. If an item is neither fruit nor vegetable, a warning is logged to a [log topic](functions-develop-context-log.md). -* `ATMOST_ONCE` -* `ATLEAST_ONCE` -* `EFFECTIVELY_ONCE` +This figure demonstrates the process of implementing a content-based routing using Pulsar Functions. -> By default, Pulsar Functions provide at-least-once delivery guarantees. So if you create a function without supplying a value for the `--processingGuarantees` flag, the function provides at-least-once guarantees. +![Count-based routing example using Pulsar Functions](/assets/pulsar-functions-routing-example.png) -### Update the processing guarantees of a function -You can change the processing guarantees applied to a function using the [`update`](/tools/pulsar-admin/) command. The following is an example. +## User flow -```bash +**Admins/operators** +1. [Set up function workers](functions-worker.md). +2. [Configure function runtime](functions-runtime.md). +3. [Deploy a function](functions-deploy.md). -$ bin/pulsar-admin functions update \ - --processing-guarantees ATMOST_ONCE \ - # Other function configs +**Developers** +1. [Develop a function](functions-develop.md). +2. [Debug a function](functions-debug.md). +3. [Package a function](functions-package.md). +4. [Deploy a function](functions-deploy.md). -``` +**More reference** +* [Function concepts](functions-concepts.md) +* [Function CLIs and configs](functions-cli.md) diff --git a/site2/docs/functions-package-go.md b/site2/docs/functions-package-go.md new file mode 100644 index 0000000000000..ecef65fc5cf03 --- /dev/null +++ b/site2/docs/functions-package-go.md @@ -0,0 +1,55 @@ +--- +id: functions-package-go +title: Package Go Functions +sidebar_label: "Package Go Functions" +--- + +:::note + +Currently, Go functions can be implemented only using SDK and the interface of functions is exposed in the form of SDK. Before using Go functions, you need to import `github.com/apache/pulsar/pulsar-function-go/pf`. + +::: + +To package a Go function, complete the following steps. + +1. Prepare a Go function file. +2. Build the Go function. + + ```go + + go build .go + + ``` + +3. Copy the Go function file to the Pulsar image. + + ```bash + + docker exec -it [CONTAINER ID] /bin/bash + docker cp CONTAINER ID:/pulsar + + ``` + + 4. Run the Go function with the following command. + + ```bash + + bin/pulsar-admin functions localrun \ + --go [your go function path] + --inputs [input topics] \ + --output [output topic] \ + --tenant [default:public] \ + --namespace [default:default] \ + --name [custom unique go function name] + + ``` + + The following log indicates that the Go function starts successfully. + + ```text + + ... + 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully + ... + + ``` diff --git a/site2/docs/functions-package-java.md b/site2/docs/functions-package-java.md new file mode 100644 index 0000000000000..3e2961bafa65e --- /dev/null +++ b/site2/docs/functions-package-java.md @@ -0,0 +1,111 @@ +--- +id: functions-package-java +title: Package Java Functions +sidebar_label: "Package Java Functions" +--- + +To package a Java function, complete the following steps. + +1. Create a new maven project with a pom file. In the following code sample, the value of `mainClass` is your package name. + + ```java + + + + 4.0.0 + + java-function + java-function + 1.0-SNAPSHOT + + + + org.apache.pulsar + pulsar-functions-api + 2.10.0 + + + + + + + maven-assembly-plugin + + false + + jar-with-dependencies + + + + org.example.test.ExclamationFunction + + + + + + make-assembly + package + + assembly + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + + + ``` + +2. Package your Java function. + + ```bash + + mvn package + + ``` + + After the Java function is packaged, a `target` directory is created automatically. Open the `target` directory to check if there is a JAR package similar to `java-function-1.0-SNAPSHOT.jar`. + +3. Copy the packaged jar file to the Pulsar image. + + ```bash + + docker exec -it [CONTAINER ID] /bin/bash + docker cp CONTAINER ID:/pulsar + + ``` + +4. Run the Java function using the following command. + + ```bash + + ./bin/pulsar-admin functions localrun \ + --classname org.example.test.ExclamationFunction \ + --jar java-function-1.0-SNAPSHOT.jar \ + --inputs persistent://public/default/my-topic-1 \ + --output persistent://public/default/test-1 \ + --tenant public \ + --namespace default \ + --name JavaFunction + + ``` + + The following log indicates that the Java function starts successfully. + + ```text + ... + 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully + ... + ``` diff --git a/site2/docs/functions-package-python.md b/site2/docs/functions-package-python.md new file mode 100644 index 0000000000000..fd15f7e8372f7 --- /dev/null +++ b/site2/docs/functions-package-python.md @@ -0,0 +1,203 @@ +--- +id: functions-package-python +title: Package Python Functions +sidebar_label: "Package Python Functions" +--- + +Python functions support the following three packaging formats: +- One python file +- ZIP file +- PIP + +## One python file + +To package a Python function into **one python file**, complete the following steps. + +1. Write a Python function. + + ```python + + from pulsar import Function // import the Function module from Pulsar + + # The classic ExclamationFunction that appends an exclamation at the end + # of the input + class ExclamationFunction(Function): + def __init__(self): + pass + + def process(self, input, context): + return input + '!' + + ``` + + In this example, when you write a Python function, you need to inherit the Function class and implement the `process()` method. + + `process()` mainly has two parameters: + + - `input` represents your input. + + - `context` represents an interface exposed by the Pulsar Function. You can get the attributes in the Python function based on the provided context object. + +2. Install a Python client. The implementation of a Python function depends on the Python client. + + ```bash + + pip install pulsar-client==2.10.0 + + ``` + +3. Copy the Python function file to the Pulsar image. + + ```bash + + docker exec -it [CONTAINER ID] /bin/bash + docker cp CONTAINER ID:/pulsar + + ``` + +4. Run the Python function using the following command. + + ```bash + + ./bin/pulsar-admin functions localrun \ + --classname . \ + --py \ + --inputs persistent://public/default/my-topic-1 \ + --output persistent://public/default/test-1 \ + --tenant public \ + --namespace default \ + --name PythonFunction + + ``` + + The following log indicates that the Python function starts successfully. + + ```text + + ... + 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully + … + + ``` + +## ZIP file + +To package a Python function into a **ZIP file**, complete the following steps. + +1. Prepare the ZIP file. + + ```text + + Assuming the zip file is named as `func.zip`, unzip the `func.zip` folder: + "func/src" + "func/requirements.txt" + "func/deps" + + ``` + + Take the [exclamation.zip](https://github.com/apache/pulsar/tree/master/tests/docker-images/latest-version-image/python-examples) file as an example. The internal structure of the example is as follows. + + ```text + + . + ├── deps + │ └── sh-1.12.14-py2.py3-none-any.whl + └── src + └── exclamation.py + + ``` + +2. Copy the ZIP file to the Pulsar image. + + ```bash + + docker exec -it [CONTAINER ID] /bin/bash + docker cp CONTAINER ID:/pulsar + + ``` + +3. Run the Python function using the following command. + + ```bash + + ./bin/pulsar-admin functions localrun \ + --classname exclamation \ + --py \ + --inputs persistent://public/default/in-topic \ + --output persistent://public/default/out-topic \ + --tenant public \ + --namespace default \ + --name PythonFunction + + ``` + + The following log indicates that the Python function starts successfully. + + ```text + + ... + 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully + ... + + ``` + +## PIP + +:::note + +The PIP method is only supported in Kubernetes runtime. + +::: + +To package a Python function with **PIP**, complete the following steps. + +1. Configure the `functions_worker.yml` file. + + ```text + + #### Kubernetes Runtime #### + installUserCodeDependencies: true + + ``` + +2. Write your Python Function. + + ```python + + from pulsar import Function + import js2xml + + # The classic ExclamationFunction that appends an exclamation at the end + # of the input + class ExclamationFunction(Function): + def __init__(self): + pass + + def process(self, input, context): + // add your logic + return input + '!' + + ``` + + You can introduce additional dependencies. When Python functions detect that the file currently used is `whl` and the `installUserCodeDependencies` parameter is specified, the system uses the `pip install` command to install the dependencies required in Python functions. + +3. Generate the `whl` file. + + ```shell + + $ cd $PULSAR_HOME/pulsar-functions/scripts/python + $ chmod +x generate.sh + $ ./generate.sh + # e.g: ./generate.sh /path/to/python /path/to/python/output 1.0.0 + + ``` + + The output is written in `/path/to/python/output`: + + ```text + + -rw-r--r-- 1 root staff 1.8K 8 27 14:29 pulsarfunction-1.0.0-py2-none-any.whl + -rw-r--r-- 1 root staff 1.4K 8 27 14:29 pulsarfunction-1.0.0.tar.gz + -rw-r--r-- 1 root staff 0B 8 27 14:29 pulsarfunction.whl + + ``` diff --git a/site2/docs/functions-package.md b/site2/docs/functions-package.md index e529f19992148..576f34a83a851 100644 --- a/site2/docs/functions-package.md +++ b/site2/docs/functions-package.md @@ -1,497 +1,19 @@ --- id: functions-package title: Package Pulsar Functions -sidebar_label: "How-to: Package" +sidebar_label: "Package Pulsar Functions" --- -You can package Pulsar functions in Java, Python, and Go. Packaging the window function in Java is the same as [packaging a function in Java](#java). - -:::note - -Currently, the window function is not available in Python and Go. - -::: +If you want to submit and run functions in cluster mode, you need to package your functions first. ## Prerequisite -Before running a Pulsar function, you need to start Pulsar. You can [run a standalone Pulsar in Docker](getting-started-docker.md), or [run Pulsar in Kubernetes](getting-started-helm). - -To check whether the Docker image starts, you can use the `docker ps` command. - -## Java - -:::note - -For the runtime Java version, please refer to [Pulsar Runtime Java Version Recommendation](https://github.com/apache/pulsar/blob/master/README.md#pulsar-runtime-java-version-recommendation) according to your target Pulsar version. - -::: - -To package a function in Java, complete the following steps. - -1. Create a new maven project with a pom file. In the following code sample, the value of `mainClass` is your package name. - - ```java - - - - 4.0.0 - - java-function - java-function - 1.0-SNAPSHOT - - - - org.apache.pulsar - pulsar-functions-api - 2.6.0 - - - - - - - maven-assembly-plugin - - false - - jar-with-dependencies - - - - org.example.test.ExclamationFunction - - - - - - make-assembly - package - - assembly - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 17 - - - - - - - - ``` - -2. Write a Java function. - - ``` - - package org.example.test; - - import java.util.function.Function; - - public class ExclamationFunction implements Function { - @Override - public String apply(String s) { - return "This is my function!"; - } - } - - ``` - - For the imported package, you can use one of the following interfaces: - - Function interface provided by Java 8: `java.util.function.Function` - - Pulsar Function interface: `org.apache.pulsar.functions.api.Function` - - The main difference between the two interfaces is that the `org.apache.pulsar.functions.api.Function` interface provides the context interface. When you write a function and want to interact with it, you can use context to obtain a wide variety of information and functionality for Pulsar Functions. - - The following example uses `org.apache.pulsar.functions.api.Function` interface with context. - - ``` - - package org.example.functions; - import org.apache.pulsar.functions.api.Context; - import org.apache.pulsar.functions.api.Function; - - import java.util.Arrays; - public class WordCountFunction implements Function { - // This function is invoked every time a message is published to the input topic - @Override - public Void process(String input, Context context) throws Exception { - Arrays.asList(input.split(" ")).forEach(word -> { - String counterKey = word.toLowerCase(); - context.incrCounter(counterKey, 1); - }); - return null; - } - } - - ``` - -3. Package the Java function. - - ```bash - - mvn package - - ``` - - After the Java function is packaged, a `target` directory is created automatically. Open the `target` directory to check if there is a JAR package similar to `java-function-1.0-SNAPSHOT.jar`. - - -4. Run the Java function. - - (1) Copy the packaged jar file to the Pulsar image. - - ```bash - - docker exec -it [CONTAINER ID] /bin/bash - docker cp CONTAINER ID:/pulsar - - ``` - - (2) Run the Java function using the following command. - - ```bash - - ./bin/pulsar-admin functions localrun \ - --classname org.example.test.ExclamationFunction \ - --jar java-function-1.0-SNAPSHOT.jar \ - --inputs persistent://public/default/my-topic-1 \ - --output persistent://public/default/test-1 \ - --tenant public \ - --namespace default \ - --name JavaFunction - - ``` - - The following log indicates that the Java function starts successfully. - - ```text - - ... - 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully - ... - - ``` - -## Python - -Python Function supports the following three formats: - -- One python file -- ZIP file -- PIP - -### One python file - -To package a function with **one python file** in Python, complete the following steps. - -1. Write a Python function. - - ``` - - from pulsar import Function // import the Function module from Pulsar - - # The classic ExclamationFunction that appends an exclamation at the end - # of the input - class ExclamationFunction(Function): - def __init__(self): - pass - - def process(self, input, context): - return input + '!' - - ``` - - In this example, when you write a Python function, you need to inherit the Function class and implement the `process()` method. - - `process()` mainly has two parameters: - - - `input` represents your input. - - - `context` represents an interface exposed by the Pulsar Function. You can get the attributes in the Python function based on the provided context object. - -2. Install a Python client. - - The implementation of a Python function depends on the Python client, so before deploying a Python function, you need to install the corresponding version of the Python client. - - ```bash - - pip install pulsar-client==2.6.0 - - ``` - -3. Run the Python Function. - - (1) Copy the Python function file to the Pulsar image. - - ```bash - - docker exec -it [CONTAINER ID] /bin/bash - docker cp CONTAINER ID:/pulsar - - ``` - - (2) Run the Python function using the following command. - - ```bash - - ./bin/pulsar-admin functions localrun \ - --classname . \ - --py \ - --inputs persistent://public/default/my-topic-1 \ - --output persistent://public/default/test-1 \ - --tenant public \ - --namespace default \ - --name PythonFunction - - ``` - - The following log indicates that the Python function starts successfully. - - ```text - - ... - 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully - ... - - ``` - -### ZIP file - -To package a function with the **ZIP file** in Python, complete the following steps. - -1. Prepare the ZIP file. - - The following is required when packaging the ZIP file of the Python Function. - - ```text - - Assuming the zip file is named as `func.zip`, unzip the `func.zip` folder: - "func/src" - "func/requirements.txt" - "func/deps" - - ``` - - Take [exclamation.zip](https://github.com/apache/pulsar/tree/master/tests/docker-images/latest-version-image/python-examples) as an example. The internal structure of the example is as follows. - - ```text - - . - ├── deps - │   └── sh-1.12.14-py2.py3-none-any.whl - └── src - └── exclamation.py - - ``` - -2. Run the Python Function. - - (1) Copy the ZIP file to the Pulsar image. - - ```bash - - docker exec -it [CONTAINER ID] /bin/bash - docker cp CONTAINER ID:/pulsar - - ``` - - (2) Run the Python function using the following command. - - ```bash - - ./bin/pulsar-admin functions localrun \ - --classname exclamation \ - --py \ - --inputs persistent://public/default/in-topic \ - --output persistent://public/default/out-topic \ - --tenant public \ - --namespace default \ - --name PythonFunction - - ``` - - The following log indicates that the Python function starts successfully. - - ```text - - ... - 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully - ... - - ``` - -### PIP - -The PIP method is only supported in Kubernetes runtime. To package a function with **PIP** in Python, complete the following steps. - -1. Configure the `functions_worker.yml` file. - - ```text - - #### Kubernetes Runtime #### - installUserCodeDependencies: true - - ``` - -2. Write your Python Function. - - ``` - - from pulsar import Function - import js2xml - - # The classic ExclamationFunction that appends an exclamation at the end - # of the input - class ExclamationFunction(Function): - def __init__(self): - pass - - def process(self, input, context): - // add your logic - return input + '!' - - ``` - - You can introduce additional dependencies. When Python Function detects that the file currently used is `whl` and the `installUserCodeDependencies` parameter is specified, the system uses the `pip install` command to install the dependencies required in Python Function. - -3. Generate the `whl` file. - - ```shell script - - $ cd $PULSAR_HOME/pulsar-functions/scripts/python - $ chmod +x generate.sh - $ ./generate.sh - # e.g: ./generate.sh /path/to/python /path/to/python/output 1.0.0 - - ``` - - The output is written in `/path/to/python/output`: - - ```text - - -rw-r--r-- 1 root staff 1.8K 8 27 14:29 pulsarfunction-1.0.0-py2-none-any.whl - -rw-r--r-- 1 root staff 1.4K 8 27 14:29 pulsarfunction-1.0.0.tar.gz - -rw-r--r-- 1 root staff 0B 8 27 14:29 pulsarfunction.whl - - ``` - -## Go - -To package a function in Go, complete the following steps. - -1. Write a Go function. - - Currently, Go function can be **only** implemented using SDK and the interface of the function is exposed in the form of SDK. Before using the Go function, you need to import "github.com/apache/pulsar/pulsar-function-go/pf". - - ``` - - import ( - "context" - "fmt" - - "github.com/apache/pulsar/pulsar-function-go/pf" - ) - - func HandleRequest(ctx context.Context, input []byte) error { - fmt.Println(string(input) + "!") - return nil - } - - func main() { - pf.Start(HandleRequest) - } - - ``` - - You can use context to connect to the Go function. - - ``` - - if fc, ok := pf.FromContext(ctx); ok { - fmt.Printf("function ID is:%s, ", fc.GetFuncID()) - fmt.Printf("function version is:%s\n", fc.GetFuncVersion()) - } - - ``` - - When writing a Go function, remember that - - In `main()`, you **only** need to register the function name to `Start()`. **Only** one function name is received in `Start()`. - - Go function uses Go reflection, which is based on the received function name, to verify whether the parameter list and returned value list are correct. The parameter list and returned value list **must be** one of the following sample functions: - - ``` - - func () - func () error - func (input) error - func () (output, error) - func (input) (output, error) - func (context.Context) error - func (context.Context, input) error - func (context.Context) (output, error) - func (context.Context, input) (output, error) - - ``` - -2. Build the Go function. - - ``` - - go build .go - - ``` - -3. Run the Go Function. - - (1) Copy the Go function file to the Pulsar image. - - ```bash - - docker exec -it [CONTAINER ID] /bin/bash - docker cp CONTAINER ID:/pulsar - - ``` - - (2) Run the Go function with the following command. - - ``` - - ./bin/pulsar-admin functions localrun \ - --go [your go function path] - --inputs [input topics] \ - --output [output topic] \ - --tenant [default:public] \ - --namespace [default:default] \ - --name [custom unique go function name] - - ``` - - The following log indicates that the Go function starts successfully. - - ```text - - ... - 07:55:03.724 [main] INFO org.apache.pulsar.functions.runtime.ProcessRuntime - Started process successfully - ... - - ``` +Before running a Pulsar function, you need to start Pulsar. -## Start Functions in cluster mode -If you want to start a function in cluster mode, replace `localrun` with `create` in the commands above. The following log indicates that your function starts successfully. +You can [run a standalone Pulsar in Docker](getting-started-docker), or [run Pulsar in Kubernetes](getting-started-helm). To check whether the Docker image starts, you can use the `docker ps` command. - ```text - - "Created successfully" - - ``` +## Package functions by programming language -For information about parameters on `--classname`, `--jar`, `--py`, `--go`, `--inputs`, run the command `./bin/pulsar-admin functions` or see [here](/tools/pulsar-admin/). \ No newline at end of file +* [Package Java functions](functions-package-java.md) +* [Package Python functions](functions-package-python.md) +* [Package Go functions](functions-package-go.md) \ No newline at end of file diff --git a/site2/docs/functions-runtime-java-options.md b/site2/docs/functions-runtime-java-options.md new file mode 100644 index 0000000000000..c1598ffb41da1 --- /dev/null +++ b/site2/docs/functions-runtime-java-options.md @@ -0,0 +1,22 @@ +--- +id: functions-runtime-java-options +title: Customize Java runtime options +sidebar_label: "Customize Java runtime options" +--- + +:::note + +This setting only applies to process runtime and Kubernetes runtime. + +::: + +To pass additional arguments to the JVM command line for every process started by a function worker, you can configure the `additionalJavaRuntimeArguments` in the `conf/functions_worker.yml` file. +- add JMV flags, like `-XX:+ExitOnOutOfMemoryError` +- pass custom system properties, like `-Dlog4j2.formatMsgNoLookups` + +```yaml + +additionalJavaRuntimeArguments: ['-XX:+ExitOnOutOfMemoryError','-Dfoo=bar'] + +``` + diff --git a/site2/docs/functions-runtime-kubernetes.md b/site2/docs/functions-runtime-kubernetes.md new file mode 100644 index 0000000000000..be2fa3ebae8c2 --- /dev/null +++ b/site2/docs/functions-runtime-kubernetes.md @@ -0,0 +1,125 @@ +--- +id: functions-runtime-kubernetes +title: Configure Kubernetes runtime +sidebar_label: "Configure Kubernetes runtime" +--- + +The Kubernetes runtime works when a function worker generates and applies Kubernetes manifests. The manifests generated by a function worker include: +* a `StatefulSet` + By default, the `StatefulSet` manifest has a single pod with a number of replicas. The number is determined by the [parallelism](functions-deploy-cluster-parallelism.md) of the function. The pod downloads the function payload (via the function worker REST API) on pod boot. The pod's container image is configurable if the function runtime is configured. +* a `Service` (used to communicate with the pod) +* a `Secret` for authenticating credentials (when applicable). + The Kubernetes runtime supports secrets. You can create a Kubernetes secret and expose it as an environment variable in the pod. + +:::tip + +For the rules of translating Pulsar object names into Kubernetes resource labels, see [instructions](admin-api-overview.md#how-to-define-pulsar-resource-names-when-running-pulsar-in-kubernetes). + +::: + +### Configure basic settings + +To quickly configure a Kubernetes runtime, you can use the default settings of [`KubernetesRuntimeFactoryConfig`](https://github.com/apache/pulsar/blob/master/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/kubernetes/KubernetesRuntimeFactoryConfig.java) in the `conf/functions_worker.yml` file. + +If you have [set up a Pulsar cluster on Kubernetes using [Helm chart](helm-install.md), which means function workers have also been set up on Kubernetes, you can use the `serviceAccount` associated with the pod where the function worker is running. Otherwise, you can configure function workers to communicate with a Kubernetes cluster by setting `functionRuntimeFactoryConfigs` to `k8Uri`. + +### Integrate Kubernetes secrets + +A [Secret](https://kubernetes.io/docs/concepts/configuration/secret/) in Kubernetes is an object that holds some confidential data such as a password, a token, or a key. When you create a secret in the Kubernetes namespace where your functions are deployed, functions can safely reference and distribute it. To enable this feature, set `secretsProviderConfiguratorClassName` to `org.apache.pulsar.functions.secretsproviderconfigurator.KubernetesSecretsProviderConfigurator` in the `conf/functions-worker.yml` file. + +For example, you [deploy a function](functions-deploy.md) to the `pulsar-func` Kubernetes namespace, and you have a secret named `database-creds` with a field name `password`, which you want to mount in the pod as an environment variable named `DATABASE_PASSWORD`. The following configurations enable functions to reference the secret and mount the value as an environment variable in the pod. + +```yaml + +tenant: "mytenant" +namespace: "mynamespace" +name: "myfunction" +topicName: "persistent://mytenant/mynamespace/myfuncinput" +className: "com.company.pulsar.myfunction" + +secrets: + # the secret will be mounted from the `password` field in the `database-creds` secret as an env var called `DATABASE_PASSWORD` + DATABASE_PASSWORD: + path: "database-creds" + key: "password" + +``` + +### Enable token authentication + +When you use token authentication, TLS encryption, or custom authentications to secure the communication with your Pulsar cluster, Pulsar passes your certificate authority (CA) to the client, so the client can authenticate the cluster with your signed certificate. + +To enable the authentication for your Pulsar cluster, you need to specify a mechanism for the pod running your function to authenticate the broker, by implementing the `org.apache.pulsar.functions.auth.KubernetesFunctionAuthProvider` interface. + +* For token authentication, Pulsar includes an implementation of the above interface to distribute the CA. The function worker captures the token that deploys (or updates) the function, saves it as a secret, and mounts it into the pod. + + The configuration in the `conf/function-worker.yml` file is as follows. `functionAuthProviderClassName` is used to specify the path to this implementation. + + ```yaml + + functionAuthProviderClassName: org.apache.pulsar.functions.auth.KubernetesSecretsTokenAuthProvider + + ``` + +* For TLS or custom authentication, you can either implement the `org.apache.pulsar.functions.auth.KubernetesFunctionAuthProvider` interface or use an alternative mechanism. + +:::note + +If the token you use to deploy the function has an expiration date, you may need to deploy the function again after it expires. + +::: + +### Customize Kubernetes runtime + +Customizing Kubernetes runtime allows you to customize Kubernetes resources created by the runtime, including how to generate manifests, how to pass authenticated data to pods, and how to integrate secrets. + +To customize Kubernetes runtime, you can set `runtimeCustomizerClassName` in the `conf/functions-worker.yml` file and use the fully qualified class name. + +The function API provides a flag named `customRuntimeOptions`, which is passed to the `org.apache.pulsar.functions.runtime.kubernetes.KubernetesManifestCustomizer` interface. To initialize `KubernetesManifestCustomizer`, you can set `runtimeCustomizerConfig` in the `conf/functions-worker.yml` file. + +:::note + +`runtimeCustomizerConfig` is the same across all functions. If you provide both `runtimeCustomizerConfig` and `customRuntimeOptions`, you need to decide how to manage these two configurations in your implementation of the `KubernetesManifestCustomizer` interface. + +::: + +Pulsar includes a built-in implementation initialized with `runtimeCustomizerConfig`. It enables you to pass a JSON document as `customRuntimeOptions` with certain properties to augment. To use this built-in implementation, set `runtimeCustomizerClassName` to `org.apache.pulsar.functions.runtime.kubernetes.BasicKubernetesManifestCustomizer`. + +If both `runtimeCustomizerConfig` and `customRuntimeOptions` are provided and have conflicts, `BasicKubernetesManifestCustomizer` uses `customRuntimeOptions` to override `runtimeCustomizerConfig`. + +Below is an example of configuring `customRuntimeOptions`. + +```json + +{ + "jobName": "jobname", // the k8s pod name to run this function instance + "jobNamespace": "namespace", // the k8s namespace to run this function in + "extractLabels": { // extra labels to attach to the statefulSet, service, and pods + "extraLabel": "value" + }, + "extraAnnotations": { // extra annotations to attach to the statefulSet, service, and pods + "extraAnnotation": "value" + }, + "nodeSelectorLabels": { // node selector labels to add on to the pod spec + "customLabel": "value" + }, + "tolerations": [ // tolerations to add to the pod spec + { + "key": "custom-key", + "value": "value", + "effect": "NoSchedule" + } + ], + "resourceRequirements": { // values for cpu and memory should be defined as described here: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container + "requests": { + "cpu": 1, + "memory": "4G" + }, + "limits": { + "cpu": 2, + "memory": "8G" + } + } +} + +``` diff --git a/site2/docs/functions-runtime-process.md b/site2/docs/functions-runtime-process.md new file mode 100644 index 0000000000000..2082c89f3a25b --- /dev/null +++ b/site2/docs/functions-runtime-process.md @@ -0,0 +1,24 @@ +--- +id: functions-runtime-process +title: Configure process runtime +sidebar_label: "Configure process runtime" +--- + +You can use the default configurations of process runtime in the `conf/functions_worker.yml` file. + +If you want to customize more parameters, refer to the following example. + +```yaml + +functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.process.ProcessRuntimeFactory +functionRuntimeFactoryConfigs: + # the directory for storing the function logs + logDirectory: + # change the jar location only when you put the java instance jar in a different location + javaInstanceJarLocation: + # change the python instance location only when you put the python instance jar in a different location + pythonInstanceLocation: + # change the extra dependencies location: + extraFunctionDependenciesDir: + +``` diff --git a/site2/docs/functions-runtime-thread.md b/site2/docs/functions-runtime-thread.md new file mode 100644 index 0000000000000..dce8a7fbfa2e4 --- /dev/null +++ b/site2/docs/functions-runtime-thread.md @@ -0,0 +1,34 @@ +--- +id: functions-runtime-thread +title: Configure thread runtime +sidebar_label: "Configure thread runtime" +--- + +You can use the default configurations of thread runtime in the `conf/functions_worker.yml` file. If you want to customize parameters, such as thread group name, refer to the following example. + +```yaml + +functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory +functionRuntimeFactoryConfigs: + threadGroupName: "Your Function Container Group" + +``` + +To set the client memory limit for thread runtime, you can configure `pulsarClientMemoryLimit`. + +```yaml + +functionRuntimeFactoryConfigs: +# pulsarClientMemoryLimit +# # the max memory in bytes the pulsar client can use +# absoluteValue: +# # the max memory the pulsar client can use as a percentage of max direct memory set for JVM +# percentOfMaxDirectMemory: + +``` + +:::note + +If `absoluteValue` and `percentOfMaxDirectMemory` are both set, the smaller value is used. + +::: \ No newline at end of file diff --git a/site2/docs/functions-runtime.md b/site2/docs/functions-runtime.md index 66e694a9e5e83..cd0c9c04bc3cb 100644 --- a/site2/docs/functions-runtime.md +++ b/site2/docs/functions-runtime.md @@ -1,405 +1,15 @@ --- id: functions-runtime title: Configure Functions runtime -sidebar_label: "Setup: Configure Functions runtime" +sidebar_label: "Configure Functions runtime" --- -You can use the following methods to run functions. +You can configure a specific [function runtime](functions-concepts.md#function-runtime) for your functions. -- *Thread*: Invoke functions threads in functions worker. -- *Process*: Invoke functions in processes forked by functions worker. -- *Kubernetes*: Submit functions as Kubernetes StatefulSets by functions worker. - -:::note - -Pulsar supports adding labels to the Kubernetes StatefulSets and services while launching functions, which facilitates selecting the target Kubernetes objects. - -::: - -The differences of the thread and process modes are: -- Thread mode: when a function runs in thread mode, it runs on the same Java virtual machine (JVM) with functions worker. -- Process mode: when a function runs in process mode, it runs on the same machine that functions worker runs. - -## Configure thread runtime -It is easy to configure *Thread* runtime. In most cases, you do not need to configure anything. You can customize the thread group name with the following settings: - -```yaml - -functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory -functionRuntimeFactoryConfigs: - threadGroupName: "Your Function Container Group" - -``` - -*Thread* runtime is only supported in Java function. - -## Configure process runtime -When you enable *Process* runtime, you do not need to configure anything. - -```yaml - -functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.process.ProcessRuntimeFactory -functionRuntimeFactoryConfigs: - # the directory for storing the function logs - logDirectory: - # change the jar location only when you put the java instance jar in a different location - javaInstanceJarLocation: - # change the python instance location only when you put the python instance jar in a different location - pythonInstanceLocation: - # change the extra dependencies location: - extraFunctionDependenciesDir: - -``` - -*Process* runtime is supported in Java, Python, and Go functions. - -## Configure Kubernetes runtime - -When the functions worker generates Kubernetes manifests and apply the manifests, the Kubernetes runtime works. If you have run functions worker on Kubernetes, you can use the `serviceAccount` associated with the pod that the functions worker is running in. Otherwise, you can configure it to communicate with a Kubernetes cluster. - -The manifests, generated by the functions worker, include a `StatefulSet`, a `Service` (used to communicate with the pods), and a `Secret` for auth credentials (when applicable). The `StatefulSet` manifest (by default) has a single pod, with the number of replicas determined by the "parallelism" of the function. On pod boot, the pod downloads the function payload (via the functions worker REST API). The pod's container image is configurable, but must have the functions runtime. - -The Kubernetes runtime supports secrets, so you can create a Kubernetes secret and expose it as an environment variable in the pod. The Kubernetes runtime is extensible, you can implement classes and customize the way how to generate Kubernetes manifests, how to pass auth data to pods, and how to integrate secrets. - -:::tip - -For the rules of translating Pulsar object names into Kubernetes resource labels, see [here](admin-api-overview.md#how-to-define-pulsar-resource-names-when-running-pulsar-in-kubernetes). - -::: - -### Basic configuration - -It is easy to configure Kubernetes runtime. You can just uncomment the settings of `kubernetesContainerFactory` in the `functions_worker.yaml` file. The following is an example. - -```yaml - -functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.kubernetes.KubernetesRuntimeFactory -functionRuntimeFactoryConfigs: - # uri to kubernetes cluster, leave it to empty and it will use the kubernetes settings in function worker - k8Uri: - # the kubernetes namespace to run the function instances. it is `default`, if this setting is left to be empty - jobNamespace: - # The Kubernetes pod name to run the function instances. It is set to - # `pf----` if this setting is left to be empty - jobName: - # the docker image to run function instance. by default it is `apachepulsar/pulsar` - pulsarDockerImageName: - # the docker image to run function instance according to different configurations provided by users. - # By default it is `apachepulsar/pulsar`. - # e.g: - # functionDockerImages: - # JAVA: JAVA_IMAGE_NAME - # PYTHON: PYTHON_IMAGE_NAME - # GO: GO_IMAGE_NAME - functionDockerImages: - # "The image pull policy for image used to run function instance. By default it is `IfNotPresent` - imagePullPolicy: IfNotPresent - # the root directory of pulsar home directory in `pulsarDockerImageName`. by default it is `/pulsar`. - # if you are using your own built image in `pulsarDockerImageName`, you need to set this setting accordingly - pulsarRootDir: - # The config admin CLI allows users to customize the configuration of the admin cli tool, such as: - # `/bin/pulsar-admin and /bin/pulsarctl`. By default it is `/bin/pulsar-admin`. If you want to use `pulsarctl` - # you need to set this setting accordingly - configAdminCLI: - # this setting only takes effects if `k8Uri` is set to null. if your function worker is running as a k8 pod, - # setting this to true is let function worker to submit functions to the same k8s cluster as function worker - # is running. setting this to false if your function worker is not running as a k8 pod. - submittingInsidePod: false - # setting the pulsar service url that pulsar function should use to connect to pulsar - # if it is not set, it will use the pulsar service url configured in worker service - pulsarServiceUrl: - # setting the pulsar admin url that pulsar function should use to connect to pulsar - # if it is not set, it will use the pulsar admin url configured in worker service - pulsarAdminUrl: - # The flag indicates to install user code dependencies. (applied to python package) - installUserCodeDependencies: - # The repository that pulsar functions use to download python dependencies - pythonDependencyRepository: - # The repository that pulsar functions use to download extra python dependencies - pythonExtraDependencyRepository: - # the custom labels that function worker uses to select the nodes for pods - customLabels: - # The expected metrics collection interval, in seconds - expectedMetricsCollectionInterval: 30 - # Kubernetes Runtime will periodically checkback on - # this configMap if defined and if there are any changes - # to the kubernetes specific stuff, we apply those changes - changeConfigMap: - # The namespace for storing change config map - changeConfigMapNamespace: - # The ratio cpu request and cpu limit to be set for a function/source/sink. - # The formula for cpu request is cpuRequest = userRequestCpu / cpuOverCommitRatio - cpuOverCommitRatio: 1.0 - # The ratio memory request and memory limit to be set for a function/source/sink. - # The formula for memory request is memoryRequest = userRequestMemory / memoryOverCommitRatio - memoryOverCommitRatio: 1.0 - # The port inside the function pod which is used by the worker to communicate with the pod - grpcPort: 9093 - # The port inside the function pod on which prometheus metrics are exposed - metricsPort: 9094 - # The directory inside the function pod where nar packages will be extracted - narExtractionDirectory: - # The classpath where function instance files stored - functionInstanceClassPath: - # Upload the builtin sources/sinks to BookKeeper. - # True by default. - uploadBuiltinSinksSources: true - # the directory for dropping extra function dependencies - # if it is not an absolute path, it is relative to `pulsarRootDir` - extraFunctionDependenciesDir: - # Additional memory padding added on top of the memory requested by the function per on a per instance basis - percentMemoryPadding: 10 - # The duration (in seconds) before the StatefulSet is deleted after a function stops or restarts. - # Value must be a non-negative integer. 0 indicates the StatefulSet is deleted immediately. - # Default is 5 seconds. - gracePeriodSeconds: 5 - -``` - -If you run functions worker embedded in a broker on Kubernetes, you can use the default settings. - -### Run standalone functions worker on Kubernetes - -If you run functions worker standalone (that is, not embedded) on Kubernetes, you need to configure `pulsarSerivceUrl` to be the URL of the broker and `pulsarAdminUrl` as the URL to the functions worker. - -For example, both Pulsar brokers and Function Workers run in the `pulsar` K8S namespace. The brokers have a service called `brokers` and the functions worker has a service called `func-worker`. The settings are as follows: - -```yaml - -pulsarServiceUrl: pulsar://broker.pulsar:6650 // or pulsar+ssl://broker.pulsar:6651 if using TLS -pulsarAdminUrl: http://func-worker.pulsar:8080 // or https://func-worker:8443 if using TLS - -``` - -### Run RBAC in Kubernetes clusters - -If you run RBAC in your Kubernetes cluster, make sure that the service account you use for running functions workers (or brokers, if functions workers run along with brokers) have permissions on the following Kubernetes APIs. - -- services -- configmaps -- pods -- apps.statefulsets - -The following is sufficient: - -```yaml - -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - name: functions-worker -rules: -- apiGroups: [""] - resources: - - services - - configmaps - - pods - verbs: - - '*' -- apiGroups: - - apps - resources: - - statefulsets - verbs: - - '*' ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: functions-worker ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: functions-worker -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: functions-worker -subjectsKubernetesSec: -- kind: ServiceAccount - name: functions-worker - -``` - -If the service-account is not properly configured, an error message similar to this is displayed: - -```bash - -22:04:27.696 [Timer-0] ERROR org.apache.pulsar.functions.runtime.KubernetesRuntimeFactory - Error while trying to fetch configmap example-pulsar-4qvmb5gur3c6fc9dih0x1xn8b-function-worker-config at namespace pulsar -io.kubernetes.client.ApiException: Forbidden - at io.kubernetes.client.ApiClient.handleResponse(ApiClient.java:882) ~[io.kubernetes-client-java-2.0.0.jar:?] - at io.kubernetes.client.ApiClient.execute(ApiClient.java:798) ~[io.kubernetes-client-java-2.0.0.jar:?] - at io.kubernetes.client.apis.CoreV1Api.readNamespacedConfigMapWithHttpInfo(CoreV1Api.java:23673) ~[io.kubernetes-client-java-api-2.0.0.jar:?] - at io.kubernetes.client.apis.CoreV1Api.readNamespacedConfigMap(CoreV1Api.java:23655) ~[io.kubernetes-client-java-api-2.0.0.jar:?] - at org.apache.pulsar.functions.runtime.KubernetesRuntimeFactory.fetchConfigMap(KubernetesRuntimeFactory.java:284) [org.apache.pulsar-pulsar-functions-runtime-2.4.0-42c3bf949.jar:2.4.0-42c3bf949] - at org.apache.pulsar.functions.runtime.KubernetesRuntimeFactory$1.run(KubernetesRuntimeFactory.java:275) [org.apache.pulsar-pulsar-functions-runtime-2.4.0-42c3bf949.jar:2.4.0-42c3bf949] - at java.util.TimerThread.mainLoop(Timer.java:555) [?:1.8.0_212] - at java.util.TimerThread.run(Timer.java:505) [?:1.8.0_212] - -``` - -### Integrate Kubernetes secrets - -In order to safely distribute secrets, Pulasr Functions can reference Kubernetes secrets. To enable this, set the `secretsProviderConfiguratorClassName` to `org.apache.pulsar.functions.secretsproviderconfigurator.KubernetesSecretsProviderConfigurator`. - -You can create a secret in the namespace where your functions are deployed. For example, you deploy functions to the `pulsar-func` Kubernetes namespace, and you have a secret named `database-creds` with a field name `password`, which you want to mount in the pod as an environment variable called `DATABASE_PASSWORD`. The following functions configuration enables you to reference that secret and mount the value as an environment variable in the pod. - -```yaml - -tenant: "mytenant" -namespace: "mynamespace" -name: "myfunction" -inputs: [ "persistent://mytenant/mynamespace/myfuncinput" ] -className: "com.company.pulsar.myfunction" - -secrets: - # the secret will be mounted from the `password` field in the `database-creds` secret as an env var called `DATABASE_PASSWORD` - DATABASE_PASSWORD: - path: "database-creds" - key: "password" - -``` - -### Enable token authentication - -When you enable authentication for your Pulsar cluster, you need a mechanism for the pod running your function to authenticate with the broker. - -The `org.apache.pulsar.functions.auth.KubernetesFunctionAuthProvider` interface provides support for any authentication mechanism. The `functionAuthProviderClassName` in `function-worker.yml` is used to specify your path to this implementation. - -Pulsar includes an implementation of this interface for token authentication, and distributes the certificate authority via the same implementation. The configuration is similar as follows: - -```yaml - -functionAuthProviderClassName: org.apache.pulsar.functions.auth.KubernetesSecretsTokenAuthProvider - -``` - -For token authentication, the functions worker captures the token that is used to deploy (or update) the function. The token is saved as a secret and mounted into the pod. - -For custom authentication or TLS, you need to implement this interface or use an alternative mechanism to provide authentication. If you use token authentication and TLS encryption to secure the communication with the cluster, Pulsar passes your certificate authority (CA) to the client, so the client obtains what it needs to authenticate the cluster, and trusts the cluster with your signed certificate. - -:::note - -If you use tokens that expire when deploying functions, these tokens will expire. - -::: - -### Run clusters with authentication - -When you run a functions worker in a standalone process (that is, not embedded in the broker) in a cluster with authentication, you must configure your functions worker to interact with the broker and authenticate incoming requests. So you need to configure properties that the broker requires for authentication or authorization. - -For example, if you use token authentication, you need to configure the following properties in the `function-worker.yml` file. - -```yaml - -clientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationToken -clientAuthenticationParameters: file:///etc/pulsar/token/admin-token.txt -configurationMetadataStoreUrl: zk:zookeeper-cluster:2181 # auth requires a connection to zookeeper -authenticationProviders: - - "org.apache.pulsar.broker.authentication.AuthenticationProviderToken" -authorizationEnabled: true -authenticationEnabled: true -superUserRoles: - - superuser - - proxy -properties: - tokenSecretKey: file:///etc/pulsar/jwt/secret # if using a secret token, key file must be DER-encoded - tokenPublicKey: file:///etc/pulsar/jwt/public.key # if using public/private key tokens, key file must be DER-encoded - -``` - -:::note - -You must configure both the Function Worker authorization or authentication for the server to authenticate requests and configure the client to be authenticated to communicate with the broker. - -::: - -### Customize Kubernetes runtime - -The Kubernetes integration enables you to implement a class and customize how to generate manifests. You can configure it by setting `runtimeCustomizerClassName` in the `functions-worker.yml` file and use the fully qualified class name. You must implement the `org.apache.pulsar.functions.runtime.kubernetes.KubernetesManifestCustomizer` interface. - -The functions (and sinks/sources) API provides a flag, `customRuntimeOptions`, which is passed to this interface. - -To initialize the `KubernetesManifestCustomizer`, you can provide `runtimeCustomizerConfig` in the `functions-worker.yml` file. `runtimeCustomizerConfig` is passed to the `public void initialize(Map config)` function of the interface. `runtimeCustomizerConfig`is different from the `customRuntimeOptions` as `runtimeCustomizerConfig` is the same across all functions. If you provide both `runtimeCustomizerConfig` and `customRuntimeOptions`, you need to decide how to manage these two configurations in your implementation of `KubernetesManifestCustomizer`. - -Pulsar includes a built-in implementation. To use the basic implementation, set `runtimeCustomizerClassName` to `org.apache.pulsar.functions.runtime.kubernetes.BasicKubernetesManifestCustomizer`. The built-in implementation initialized with `runtimeCustomizerConfig` enables you to pass a JSON document as `customRuntimeOptions` with certain properties to augment, which decides how the manifests are generated. If both `runtimeCustomizerConfig` and `customRuntimeOptions` are provided, `BasicKubernetesManifestCustomizer` uses `customRuntimeOptions` to override the configuration if there are conflicts in these two configurations. - -Below is an example of `customRuntimeOptions`. - -```json - -{ - "jobName": "jobname", // the k8s pod name to run this function instance - "jobNamespace": "namespace", // the k8s namespace to run this function in - "extractLabels": { // extra labels to attach to the statefulSet, service, and pods - "extraLabel": "value" - }, - "extraAnnotations": { // extra annotations to attach to the statefulSet, service, and pods - "extraAnnotation": "value" - }, - "nodeSelectorLabels": { // node selector labels to add on to the pod spec - "customLabel": "value" - }, - "tolerations": [ // tolerations to add to the pod spec - { - "key": "custom-key", - "value": "value", - "effect": "NoSchedule" - } - ], - "resourceRequirements": { // values for cpu and memory should be defined as described here: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container - "requests": { - "cpu": 1, - "memory": "4G" - }, - "limits": { - "cpu": 2, - "memory": "8G" - } - } -} - -``` - -## Run clusters with geo-replication - -If you run multiple clusters tied together with geo-replication, it is important to use a different function namespace for each cluster. Otherwise, the function shares a namespace and potentially schedule across clusters. - -For example, if you have two clusters: `east-1` and `west-1`, you can configure the functions workers for `east-1` and `west-1` perspectively as follows. - -```yaml - -pulsarFunctionsCluster: east-1 -pulsarFunctionsNamespace: public/functions-east-1 - -``` - -```yaml - -pulsarFunctionsCluster: west-1 -pulsarFunctionsNamespace: public/functions-west-1 - -``` - -This ensures the two different Functions Workers use distinct sets of topics for their internal coordination. - -## Configure standalone functions worker - -When configuring a standalone functions worker, you need to configure properties that the broker requires, especially if you use TLS. And then Functions Worker can communicate with the broker. - -You need to configure the following required properties. - -```yaml - -workerPort: 8080 -workerPortTls: 8443 # when using TLS -tlsCertificateFilePath: /etc/pulsar/tls/tls.crt # when using TLS -tlsKeyFilePath: /etc/pulsar/tls/tls.key # when using TLS -tlsTrustCertsFilePath: /etc/pulsar/tls/ca.crt # when using TLS -pulsarServiceUrl: pulsar://broker.pulsar:6650/ # or pulsar+ssl://pulsar-prod-broker.pulsar:6651/ when using TLS -pulsarWebServiceUrl: http://broker.pulsar:8080/ # or https://pulsar-prod-broker.pulsar:8443/ when using TLS -useTls: true # when using TLS, critical! - -``` +The following table outlines the supported programming languages for each type of function runtime. +| Function runtime | Supported programming languages of functions | +| —---------------------------------------------------|----------------------------------------------| +| [Thread runtime](functions-runtime-thread) | Java | +| [Process runtime](functions-runtime-process) | Java, Python, Go | +| [Kubernetes runtime](functions-runtime-kubernetes) | Java, Python, Go | diff --git a/site2/docs/functions-worker-corun.md b/site2/docs/functions-worker-corun.md new file mode 100644 index 0000000000000..d5368820ae583 --- /dev/null +++ b/site2/docs/functions-worker-corun.md @@ -0,0 +1,67 @@ +--- +id: functions-worker-corun +title: Run function workers with brokers +sidebar_label: "Run function workers with brokers" +--- + +The following diagram illustrates the deployment of function workers running along with brokers. + +![assets/functions-worker-corun.svg](/assets/functions-worker-corun.svg) + +:::note + +The `Service URLs` in the illustration represent Pulsar service URLs that Pulsar client and Pulsar admin use to connect to a Pulsar cluster. + +::: + +To set up function workers to run with brokers, complete the following steps: +1. [Enable function workers](#enable-function-workers-to-run-with-brokers) +2. [Configure function workers](#configure-function-workers-to-run-with-brokers) +3. [Start function workers](#start-function-workers-with-brokers-to-run-with-brokers) + + +### Enable function workers to run with brokers + +In the `conf/broker.conf` file, set `functionsWorkerEnabled` to `true`. + +```conf + +functionsWorkerEnabled=true + +``` + +### Configure function workers to run with brokers + +In the `run-with-brokers` mode, most settings of function workers are inherited from your broker configuration (for example, configuration store settings, authentication settings, and so on). You can customize other worker settings by configuring the `conf/functions_worker.yml` file based on your needs. + +:::tip + +- To ensure high availability in a production deployment (a cluster with multiple brokers), set `numFunctionPackageReplicas` to equal the number of bookies. The default value `1` is only for one-node cluster deployment. +- To initialize distributed log metadata in runtime (`initializedDlogMetadata` = `true`), ensure that it has been initialized by the `bin/pulsar initialize-cluster-metadata` command. + +::: + +When authentication is enabled on the BookKeeper cluster, you need to configure the following authentication settings for your function workers. +- `bookkeeperClientAuthenticationPlugin`: the authentication plugin name of BookKeeper client. +- `bookkeeperClientAuthenticationParametersName`: the authentication plugin parameters of BookKeeper client, including names and values. +- `bookkeeperClientAuthenticationParameters`: the authentication plugin parameters of BookKeeper client. + +### Start function workers to run with brokers + +Once function workers are configured properly, you can start the brokers (function workers are running with the brokers). + +To verify whether each worker is running or not, you can use the following command. + +```bash + +curl :8080/admin/v2/worker/cluster + +``` + +If a list of active function workers is returned, it means they have been started successfully. The output is similar to the following. + +```json + +[{"workerId":"","workerHostname":"","port":8080}] + +``` \ No newline at end of file diff --git a/site2/docs/functions-worker-for-geo-replication.md b/site2/docs/functions-worker-for-geo-replication.md new file mode 100644 index 0000000000000..60a8d7b929dcb --- /dev/null +++ b/site2/docs/functions-worker-for-geo-replication.md @@ -0,0 +1,23 @@ +--- +id: functions-worker-for-geo-replication +title: Configure function workers for geo-replicated clusters +sidebar_label: "Configure function workers for geo-replicated clusters" +--- + +When running multiple clusters tied together with [geo replication](concepts-replication.md), you need to use a different function namespace for each cluster. Otherwise, all functions share one namespace and potentially schedule assignments across clusters. + +For example, if you have two clusters: `east-1` and `west-1`, you can configure the function workers for `east-1` and `west-1` respectively in the `conf/functions_worker.yml` file. This ensures the two different function workers use distinct sets of topics for their internal coordination. + +```yaml + +pulsarFunctionsCluster: east-1 +pulsarFunctionsNamespace: public/functions-east-1 + +``` + +```yaml + +pulsarFunctionsCluster: west-1 +pulsarFunctionsNamespace: public/functions-west-1 + +``` diff --git a/site2/docs/functions-worker-run-separately.md b/site2/docs/functions-worker-run-separately.md new file mode 100644 index 0000000000000..57b742d5541fd --- /dev/null +++ b/site2/docs/functions-worker-run-separately.md @@ -0,0 +1,250 @@ +--- +id: functions-worker-run-separately +title: Run function workers separately +sidebar_label: "Run function workers separately" +--- + +The following diagram illustrates how function workers run as a separate process in separate machines. + +![assets/functions-worker-separated.svg](/assets/functions-worker-separated.svg) + +:::note + +The `---Service URLs---` in the illustration represent Pulsar service URLs that Pulsar client and Pulsar admin use to connect to a Pulsar cluster. + +::: + +To set up function workers that run separately, complete the following steps: +1. [Configure function workers](#configure-function-workers-to-run-separately) +2. [Start function workers](#start-function-workers) +3. [Configure proxies for function workers](#configure-proxies-for-standalone-function-workers) + +## Configure function workers to run separately + +:::note + +To run function workers separately, you need to keep `functionsWorkerEnabled` as its default value (`false`) in the `conf/broker.conf` file. + +::: + +### Configure worker parameters + +Configure the required parameters for workers in the `conf/functions_worker.yml` file. +- `workerId`: The identity of a worker node, which is unique across clusters. The type is string. +- `workerHostname`: The hostname of the worker node. +- `workerPort`: The port that the worker server listens on. Keep it as default if you don't customize it. +- `workerPortTls`: The TLS port that the worker server listens on. Keep it as default if you don't customize it. For more information about TLS encryption settings, refer to [settings](#enable-tls-encryption). + +:::note + +When accessing function workers to manage functions, the `pulsar-admin` CLI or any of the clients should use the configured `workerHostname` and `workerPort` to generate an `--admin-url`. + +::: + +### Configure function package parameters + +Configure the `numFunctionPackageReplicas` parameter in the `conf/functions_worker.yml` file. It indicates the number of replicas to store function packages. + +:::note + +To ensure high availability in a production deployment, set `numFunctionPackageReplicas` to equal the number of bookies. The default value `1` is only for one-node cluster deployment. + +::: + +### Configure function metadata parameters + +Configure the required parameter for function metadata in the `conf/functions_worker.yml` file. +- `pulsarServiceUrl`: The Pulsar service URL for your broker cluster. +- `pulsarWebServiceUrl`: The Pulsar web service URL for your broker cluster. +- `pulsarFunctionsCluster`: Set the value to your Pulsar cluster name (same as the `clusterName` setting in the `conf/broker.conf` file). + +If authentication is enabled on your broker cluster, you must configure the following authentication settings for the function workers to communicate with the brokers. +- `brokerClientAuthenticationPlugin` +- `brokerClientAuthenticationParameters` + +### Enable security settings + +When you run a function worker separately in a cluster configured with authentication, your function worker needs to communicate with the broker and authenticate incoming requests. Thus you need to configure the properties that the broker requires for authentication and authorization. + +:::note + +You must configure both the function worker authentication and authorization for the server to authenticate incoming requests and configure the client to be authenticated to communicate with the broker. + +::: + +For example, if you use token authentication, you need to configure the following properties in the `conf/function-worker.yml` file. + +```yaml + +brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationToken +brokerClientAuthenticationParameters: file:///etc/pulsar/token/admin-token.txt +configurationMetadataStoreUrl: zk:zookeeper-cluster:2181 # auth requires a connection to zookeeper +authenticationProviders: + - "org.apache.pulsar.broker.authentication.AuthenticationProviderToken" +authorizationEnabled: true +authenticationEnabled: true +superUserRoles: + - superuser + - proxy +properties: + tokenSecretKey: file:///etc/pulsar/jwt/secret # if using a secret token, key file must be DER-encoded + tokenPublicKey: file:///etc/pulsar/jwt/public.key # if using public/private key tokens, key file must be DER-encoded + +``` + +You can enable the following security settings on function workers. +- [Enable TLS encryption](#enable-tls-transport-encryption) +- [Enable authentication providers](#enable-authentication-providers) +- [Enable authorization providers](#enable-authorization-providers) +- [Enable end-to-end encryption](functions-deploy-cluster-encryption.md) + + +#### Enable TLS encryption + +To enable TLS encryption, configure the following settings. + +```yaml + +useTLS: true +pulsarServiceUrl: pulsar+ssl://localhost:6651/ +pulsarWebServiceUrl: https://localhost:8443 + +tlsEnabled: true +tlsCertificateFilePath: /path/to/functions-worker.cert.pem +tlsKeyFilePath: /path/to/functions-worker.key-pk8.pem +tlsTrustCertsFilePath: /path/to/ca.cert.pem + +// The path to trusted certificates used by the Pulsar client to authenticate with Pulsar brokers +brokerClientTrustCertsFilePath: /path/to/ca.cert.pem + +``` + +For more details on TLS encryption, refer to [Transport Encryption using TLS](security-tls-transport.md). + + +#### Enable authentication providers + +To enable authentication providers on function workers, substitute the `authenticationProviders` parameter with the providers you want to enable. + +```properties + +authenticationEnabled: true +authenticationProviders: [provider1, provider2] + +``` + +For [TLS authentication](security-tls-authentication.md) provider, follow the example below to add the required settings. + +```properties + +brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationTls +brokerClientAuthenticationParameters: tlsCertFile:/path/to/admin.cert.pem,tlsKeyFile:/path/to/admin.key-pk8.pem + +authenticationEnabled: true +authenticationProviders: ['org.apache.pulsar.broker.authentication.AuthenticationProviderTls'] + +``` + +For SASL authentication provider, add `saslJaasClientAllowedIds` and `saslJaasBrokerSectionName` under `properties`. + +```properties + +properties: + saslJaasClientAllowedIds: .*pulsar.* + saslJaasBrokerSectionName: PulsarBroker + +``` + +For [token authentication](security-jwt.md) provider, add the required settings under `properties`. + +```properties + +properties: + tokenSecretKey: file://my/secret.key + # If using public/private + # tokenPublicKey: file://path/to/public.key + +``` + +:::note + +Key files must be DER (Distinguished Encoding Rules)-encoded. + +::: + +#### Enable authorization providers + +To enable authorization on function workers, complete the following steps. + +1. Configure `authorizationEnabled`, `authorizationProvider` and `configurationMetadataStoreUrl` in the `functions_worker.yml` file. The authentication provider connects to `configurationMetadataStoreUrl` to receive namespace policies. + + ```yaml + + authorizationEnabled: true + authorizationProvider: org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider + configurationMetadataStoreUrl: : + + ``` + +2. Configure a list of superuser roles. The superuser roles can access any admin API. The following configuration is an example. + + ```yaml + + superUserRoles: + - role1 + - role2 + - role3 + + ``` + +### Configure BookKeeper authentication + +If authentication is enabled on the BookKeeper cluster, you need to configure the following BookKeeper authentication settings for your function workers. +- `bookkeeperClientAuthenticationPlugin`: the authentication plugin name of BookKeeper client. +- `bookkeeperClientAuthenticationParametersName`: the authentication plugin parameters of BookKeeper client, including names and values. +- `bookkeeperClientAuthenticationParameters`: the authentication plugin parameters of BookKeeper client. + +## Start function workers + +:::note + +Before starting function workers, make sure [function runtime](functions-runtime.md) is configured. + +::: + +* You can start a function worker in the background by using [nohup](https://en.wikipedia.org/wiki/Nohup) with the [`pulsar-daemon`](reference-cli-tools.md#pulsar-daemon) CLI tool: + + ```bash + + bin/pulsar-daemon start functions-worker + + ``` + +* To start a function worker in the foreground, you can use the [`pulsar-admin`](/tools/pulsar-admin/) CLI as follows. + + ```bash + + bin/pulsar functions-worker + + ``` + +## Configure proxies for standalone function workers + +When you are running function workers in a separate cluster, the admin rest endpoints are split into two clusters as shown in the following figure. The `functions`, `function-worker`, `source`, and `sink` endpoints are now served by the worker cluster, while all the other remaining endpoints are served by the broker cluster. This requires you to use the right service URL accordingly in the `pulsar-admin` CLI. To address this inconvenience, you can start a proxy cluster that serves as the central entry point of the admin service for routing admin rest requests. + +![assets/functions-worker-separated-proxy.svg](/assets/functions-worker-separated-proxy.svg) + +To enable a proxy for routing function-related admin requests to function workers, you can edit the `conf/proxy.conf` file to modify the following settings: + +```conf + +functionWorkerWebServiceURL= +functionWorkerWebServiceURLTLS= + +``` + +:::tip + +If you haven't set up a proxy cluster yet, follow the [instructions](administration-proxy.md) to deploy one. + +::: diff --git a/site2/docs/functions-worker-stateful.md b/site2/docs/functions-worker-stateful.md new file mode 100644 index 0000000000000..888c5cd1667b3 --- /dev/null +++ b/site2/docs/functions-worker-stateful.md @@ -0,0 +1,76 @@ +--- +id: functions-worker-stateful +title: Enable stateful functions +sidebar_label: "Enable stateful functions" +--- + +:::note + +When the stateful APIs of Pulsar Functions are required – for example, `putState()` and `queryState()` related interfaces – you need to enable the stateful function feature in function workers. + +::: + +1. Enable the `streamStorage` service in BookKeeper. + Currently, the service uses the NAR package, so you need to set the configuration in the `conf/bookkeeper.conf` file. + + ```text + + ################################################################## + ################################################################## + # Settings below are used by stream/table service + ################################################################## + ################################################################## + + ### Grpc Server ### + + # the grpc server port to listen on. default is 4181 + storageserver.grpc.port=4181 + + ### Dlog Settings for table service ### + + #### Replication Settings + dlog.bkcEnsembleSize=3 + dlog.bkcWriteQuorumSize=2 + dlog.bkcAckQuorumSize=2 + + ### Storage ### + + # local storage directories for storing table ranges data (e.g. rocksdb sst files) + storage.range.store.dirs=data/bookkeeper/ranges + + # whether the storage server capable of serving readonly tables. default is false. + storage.serve.readonly.tables=false + + # the cluster controller schedule interval, in milliseconds. default is 30 seconds. + storage.cluster.controller.schedule.interval.ms=30000 + + ``` + +2. After starting the bookie, use the following methods to check whether the `streamStorage` service has been started successfully. + + * Input: + + ```shell + + telnet localhost 4181 + + ``` + + * Output: + + ```text + + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + + ``` + +3. Configure `stateStorageServiceUrl` in the `conf/functions_worker.yml` file. + `bk-service-url` is the service URL pointing to the BookKeeper table service. + + ```shell + + stateStorageServiceUrl: bk://:4181 + + ``` diff --git a/site2/docs/functions-worker-troubleshooting.md b/site2/docs/functions-worker-troubleshooting.md new file mode 100644 index 0000000000000..4e357d75c30a6 --- /dev/null +++ b/site2/docs/functions-worker-troubleshooting.md @@ -0,0 +1,45 @@ +--- +id: functions-worker-troubleshooting +title: Troubleshooting +sidebar_label: "Troubleshooting" +--- + +**Error message: Namespace missing local cluster name in clusters list** + +```text + +Failed to get partitioned topic metadata: org.apache.pulsar.client.api.PulsarClientException$BrokerMetadataException: Namespace missing local cluster name in clusters list: local_cluster=xyz ns=public/functions clusters=[standalone] + +``` + +The error message displays when any of the following cases occurs: +- a broker is started with `functionsWorkerEnabled=true`, but `pulsarFunctionsCluster` in the `conf/functions_worker.yml` file is not set to the correct cluster. +- setting up a geo-replicated Pulsar cluster with `functionsWorkerEnabled=true`, while brokers in one cluster run well, brokers in the other cluster do not work well. + +**Workaround** + +If any of these cases happen, follow the instructions below to fix the problem. + +1. Disable function workers by setting `functionsWorkerEnabled=false`, and restart brokers. + +2. Get the current cluster list of the `public/functions` namespace. + + ```bash + + bin/pulsar-admin namespaces get-clusters public/functions + + ``` + +3. Check if the cluster is in the cluster list. If not, add it and update the list. + + ```bash + + bin/pulsar-admin namespaces set-clusters --clusters , public/functions + + ``` + +4. After setting the cluster successfully, enable function workers by setting `functionsWorkerEnabled=true`. + +5. Set the correct cluster name for the `pulsarFunctionsCluster` parameter in the `conf/functions_worker.yml` file. + +6. Restart brokers. diff --git a/site2/docs/functions-worker.md b/site2/docs/functions-worker.md index e790196d91799..5312d377fb674 100644 --- a/site2/docs/functions-worker.md +++ b/site2/docs/functions-worker.md @@ -1,406 +1,11 @@ --- id: functions-worker -title: Deploy and manage functions worker -sidebar_label: "Setup: Pulsar Functions Worker" +title: Set up function workers +sidebar_label: "Set up function workers" --- -Before using Pulsar Functions, you need to learn how to set up Pulsar Functions worker and how to [configure Functions runtime](functions-runtime). -Pulsar `functions-worker` is a logic component to run Pulsar Functions in cluster mode. Two options are available, and you can select either based on your requirements. -- [run with brokers](#run-functions-worker-with-brokers) -- [run it separately](#run-functions-worker-separately) in a different broker - -:::note - -The `--- Service Urls---` lines in the following diagrams represent Pulsar service URLs that Pulsar client and admin use to connect to a Pulsar cluster. - -::: - -## Run Functions-worker with brokers - -The following diagram illustrates the deployment of functions-workers running along with brokers. - -![assets/functions-worker-corun.png](/assets/functions-worker-corun.png) - -To enable functions-worker running as part of a broker, you need to set `functionsWorkerEnabled` to `true` in the `broker.conf` file. - -```conf - -functionsWorkerEnabled=true - -``` - -If the `functionsWorkerEnabled` is set to `true`, the functions-worker is started as part of a broker. You need to configure the `conf/functions_worker.yml` file to customize your functions_worker. - -Before you run Functions-worker with broker, you have to configure Functions-worker, and then start it with brokers. - -### Configure Functions-Worker to run with brokers -In this mode, most of the settings are already inherited from your broker configuration (for example, configurationStore settings, authentication settings, and so on) since `functions-worker` is running as part of the broker. - -Pay attention to the following required settings when configuring functions-worker in this mode. - -- `numFunctionPackageReplicas`: The number of replicas to store function packages. The default value is `1`, which is good for standalone deployment. For production deployment, to ensure high availability, set it to be larger than `2`. -- `initializedDlogMetadata`: Whether to initialize distributed log metadata in runtime. If it is set to `true`, you must ensure that it has been initialized by `bin/pulsar initialize-cluster-metadata` command. - -If authentication is enabled on the BookKeeper cluster, configure the following BookKeeper authentication settings. - -- `bookkeeperClientAuthenticationPlugin`: the BookKeeper client authentication plugin name. -- `bookkeeperClientAuthenticationParametersName`: the BookKeeper client authentication plugin parameters name. -- `bookkeeperClientAuthenticationParameters`: the BookKeeper client authentication plugin parameters. - -### Configure Stateful-Functions to run with broker - -If you want to use Stateful-Functions related functions (for example, `putState()` and `queryState()` related interfaces), follow steps below. - -1. Enable the **streamStorage** service in the BookKeeper. - - Currently, the service uses the NAR package, so you need to set the configuration in `bookkeeper.conf`. - - ```text - - extraServerComponents=org.apache.bookkeeper.stream.server.StreamStorageLifecycleComponent - - ``` - - After starting bookie, use the following methods to check whether the streamStorage service is started correctly. - - Input: - - ```shell - - telnet localhost 4181 - - ``` - - Output: - - ```text - - Trying 127.0.0.1... - Connected to localhost. - Escape character is '^]'. - - ``` - -2. Turn on this function in `functions_worker.yml`. - - ```text - - stateStorageServiceUrl: bk://:4181 - - ``` - - `bk-service-url` is the service URL pointing to the BookKeeper table service. - -### Start Functions-worker with broker - -Once you have configured the `functions_worker.yml` file, you can start or restart your broker. - -And then you can use the following command to verify if `functions-worker` is running well. - -```bash - -curl :8080/admin/v2/worker/cluster - -``` - -After entering the command above, a list of active function workers in the cluster is returned. The output is similar to the following. - -```json - -[{"workerId":"","workerHostname":"","port":8080}] - -``` - -## Run Functions-worker separately - -This section illustrates how to run `functions-worker` as a separate process in separate machines. - -![assets/functions-worker-separated.png](/assets/functions-worker-separated.png) - -:::note - -In this mode, make sure `functionsWorkerEnabled` is set to `false`, so you won't start `functions-worker` with brokers by mistake. Also, while accessing the `functions-worker` to manage any of the functions, the `pulsar-admin` CLI tool or any of the clients should use the `workerHostname` and `workerPort` that you set in [Worker parameters](#worker-parameters) to generate an `--admin-url`. - -::: - -### Configure Functions-worker to run separately - -To run function-worker separately, you have to configure the following parameters. - -#### Worker parameters - -- `workerId`: The type is string. It is unique across clusters, which is used to identify a worker machine. -- `workerHostname`: The hostname of the worker machine. -- `workerPort`: The port that the worker server listens on. Keep it as default if you don't customize it. Set it to `null` to disable the plaintext port. -- `workerPortTls`: The TLS port that the worker server listens on. Keep it as default if you don't customize it. - -#### Function package parameter - -- `numFunctionPackageReplicas`: The number of replicas to store function packages. The default value is `1`. - -#### Function metadata parameter - -- `pulsarServiceUrl`: The Pulsar service URL for your broker cluster. -- `pulsarWebServiceUrl`: The Pulsar web service URL for your broker cluster. -- `pulsarFunctionsCluster`: Set the value to your Pulsar cluster name (same as the `clusterName` setting in the broker configuration). - -If authentication is enabled for your broker cluster, you *should* configure the authentication plugin and parameters for the functions worker to communicate with the brokers. - -- `brokerClientAuthenticationEnabled`: Whether to enable the broker client authentication used by function workers to talk to brokers. -- `clientAuthenticationPlugin`: The authentication plugin to be used by the Pulsar client used in worker service. -- `clientAuthenticationParameters`: The authentication parameter to be used by the Pulsar client used in worker service. - -#### Customize Java runtime options - -If you want to pass additional arguments to the JVM command line to every process started by a function worker, -you can configure the `additionalJavaRuntimeArguments` parameter. - -``` - -additionalJavaRuntimeArguments: ['-XX:+ExitOnOutOfMemoryError','-Dfoo=bar'] - -``` - -This is very useful in case you want to: -- add JMV flags, like `-XX:+ExitOnOutOfMemoryError` -- pass custom system properties, like `-Dlog4j2.formatMsgNoLookups` - -:::note - -This feature applies only to Process and Kubernetes runtimes. - -::: - -#### Security settings - -If you want to enable security on functions workers, you *should*: -- [Enable TLS transport encryption](#enable-tls-transport-encryption) -- [Enable Authentication Provider](#enable-authentication-provider) -- [Enable Authorization Provider](#enable-authorization-provider) -- [Enable End-to-End Encryption](#enable-end-to-end-encryption) - -##### Enable TLS transport encryption - -To enable TLS transport encryption, configure the following settings. - -``` - -useTLS: true -pulsarServiceUrl: pulsar+ssl://localhost:6651/ -pulsarWebServiceUrl: https://localhost:8443 - -tlsEnabled: true -tlsCertificateFilePath: /path/to/functions-worker.cert.pem -tlsKeyFilePath: /path/to/functions-worker.key-pk8.pem -tlsTrustCertsFilePath: /path/to/ca.cert.pem - -// The path to trusted certificates used by the Pulsar client to authenticate with Pulsar brokers -brokerClientTrustCertsFilePath: /path/to/ca.cert.pem - -``` - -For details on TLS encryption, refer to [Transport Encryption using TLS](security-tls-transport). - -##### Enable Authentication Provider - -To enable authentication on Functions Worker, you need to configure the following settings. - -:::note - -Substitute the *providers list* with the providers you want to enable. - -::: - -``` - -authenticationEnabled: true -authenticationProviders: [ provider1, provider2 ] - -``` - -For *TLS Authentication* provider, follow the example below to add the necessary settings. -See [TLS Authentication](security-tls-authentication) for more details. - -``` - -brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationTls -brokerClientAuthenticationParameters: tlsCertFile:/path/to/admin.cert.pem,tlsKeyFile:/path/to/admin.key-pk8.pem - -authenticationEnabled: true -authenticationProviders: ['org.apache.pulsar.broker.authentication.AuthenticationProviderTls'] - -``` - -For *SASL Authentication* provider, add `saslJaasClientAllowedIds` and `saslJaasServerSectionName` -under `properties` if needed. - -``` - -properties: - saslJaasClientAllowedIds: .*pulsar.* - saslJaasServerSectionName: Broker - -``` - -For *Token Authentication* provider, add necessary settings for `properties` if needed. -See [Token Authentication](security-jwt) for more details. -Note: key files must be DER-encoded - -``` - -properties: - tokenSecretKey: file://my/secret.key - # If using public/private - # tokenPublicKey: file:///path/to/public.key - -``` - -##### Enable Authorization Provider - -To enable authorization on Functions Worker, you need to configure `authorizationEnabled`, `authorizationProvider` and `configurationMetadataStoreUrl`. The authentication provider connects to `configurationMetadataStoreUrl` to receive namespace policies. - -```yaml - -authorizationEnabled: true -authorizationProvider: org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider -configurationMetadataStoreUrl: : - -``` - -You should also configure a list of superuser roles. The superuser roles are able to access any admin API. The following is a configuration example. - -```yaml - -superUserRoles: - - role1 - - role2 - - role3 - -``` - -##### Enable End-to-End Encryption - -You can use the public and private key pair that the application configures to perform encryption. Only the consumers with a valid key can decrypt the encrypted messages. - -To enable End-to-End encryption on Functions Worker, you can set it by specifying `--producer-config` in the command line terminal, for more information, please refer to [here](security-encryption). - -We include the relevant configuration information of `CryptoConfig` into `ProducerConfig`. The specific configurable field information about `CryptoConfig` is as follows: - -```text - -public class CryptoConfig { - private String cryptoKeyReaderClassName; - private Map cryptoKeyReaderConfig; - - private String[] encryptionKeys; - private ProducerCryptoFailureAction producerCryptoFailureAction; - - private ConsumerCryptoFailureAction consumerCryptoFailureAction; -} - -``` - -- `producerCryptoFailureAction`: define the action if producer fail to encrypt data one of `FAIL`, `SEND`. -- `consumerCryptoFailureAction`: define the action if consumer fail to decrypt data one of `FAIL`, `DISCARD`, `CONSUME`. - -#### BookKeeper Authentication - -If authentication is enabled on the BookKeeper cluster, you need configure the BookKeeper authentication settings as follows: - -- `bookkeeperClientAuthenticationPlugin`: the plugin name of BookKeeper client authentication. -- `bookkeeperClientAuthenticationParametersName`: the plugin parameters name of BookKeeper client authentication. -- `bookkeeperClientAuthenticationParameters`: the plugin parameters of BookKeeper client authentication. - -### Start Functions-worker - -Once you have finished configuring the `functions_worker.yml` configuration file, you can start a `functions-worker` in the background by using [nohup](https://en.wikipedia.org/wiki/Nohup) with the [`pulsar-daemon`](reference-cli-tools.md#pulsar-daemon) CLI tool: - -```bash - -bin/pulsar-daemon start functions-worker - -``` - -You can also start `functions-worker` in the foreground by using `pulsar` CLI tool: - -```bash - -bin/pulsar functions-worker - -``` - -### Configure Proxies for Functions-workers - -When you are running `functions-worker` in a separate cluster, the admin rest endpoints are split into two clusters. `functions`, `function-worker`, `source` and `sink` endpoints are now served -by the `functions-worker` cluster, while all the other remaining endpoints are served by the broker cluster. -Hence you need to configure your `pulsar-admin` to use the right service URL accordingly. - -In order to address this inconvenience, you can start a proxy cluster for routing the admin rest requests accordingly. Hence you will have one central entry point for your admin service. - -If you already have a proxy cluster, continue reading. If you haven't setup a proxy cluster before, you can follow the [instructions](/docs/en/administration-proxy/) to -start proxies. - -![assets/functions-worker-separated.png](/assets/functions-worker-separated-proxy.png) - -To enable routing functions related admin requests to `functions-worker` in a proxy, you can edit the `proxy.conf` file to modify the following settings: - -```conf - -functionWorkerWebServiceURL= -functionWorkerWebServiceURLTLS= - -``` - -## Compare the Run-with-Broker and Run-separately modes - -As described above, you can run Function-worker with brokers, or run it separately. And it is more convenient to run functions-workers along with brokers. However, running functions-workers in a separate cluster provides better resource isolation for running functions in `Process` or `Thread` mode. - -Use which mode for your cases, refer to the following guidelines to determine. - -Use the `Run-with-Broker` mode in the following cases: -- a) if resource isolation is not required when running functions in `Process` or `Thread` mode; -- b) if you configure the functions-worker to run functions on Kubernetes (where the resource isolation problem is addressed by Kubernetes). - -Use the `Run-separately` mode in the following cases: -- a) you don't have a Kubernetes cluster; -- b) if you want to run functions and brokers separately. - -## Troubleshooting - -**Error message: Namespace missing local cluster name in clusters list** - -``` - -Failed to get partitioned topic metadata: org.apache.pulsar.client.api.PulsarClientException$BrokerMetadataException: Namespace missing local cluster name in clusters list: local_cluster=xyz ns=public/functions clusters=[standalone] - -``` - -The error message prompts when either of the cases occurs: -- a) a broker is started with `functionsWorkerEnabled=true`, but the `pulsarFunctionsCluster` is not set to the correct cluster in the `conf/functions_worker.yaml` file; -- b) setting up a geo-replicated Pulsar cluster with `functionsWorkerEnabled=true`, while brokers in one cluster run well, brokers in the other cluster do not work well. - -**Workaround** - -If any of these cases happens, follow the instructions below to fix the problem: - -1. Disable Functions Worker by setting `functionsWorkerEnabled=false`, and restart brokers. - -2. Get the current clusters list of `public/functions` namespace. - -```bash - -bin/pulsar-admin namespaces get-clusters public/functions - -``` - -3. Check if the cluster is in the clusters list. If the cluster is not in the list, add it to the list and update the clusters list. - -```bash - -bin/pulsar-admin namespaces set-clusters --clusters , public/functions - -``` - -4. After setting the cluster successfully, enable functions worker by setting `functionsWorkerEnabled=true`. - -5. Set the correct cluster name in `pulsarFunctionsCluster` in the `conf/functions_worker.yml` file, and restart brokers. +You have two ways to set up [function workers](function-concepts.md#function-worker). +- [run function workers with brokers](functions-worker-corun.md). Use it when: + - resource isolation is not required when running functions in process or thread mode; + - you configure the function workers to run functions on Kubernetes (where the resource isolation problem is addressed by Kubernetes). +- [run function workers separately](functions-worker-run-separately.md). Use it when you want to separate functions and brokers. From 04143073ca969617614a09c5ceb1d32b902f2138 Mon Sep 17 00:00:00 2001 From: momo-jun Date: Wed, 8 Jun 2022 14:00:03 +0800 Subject: [PATCH 2/9] sync recently committed changes and update cross-ref topic ID --- site2/docs/admin-api-overview.md | 4 ++-- site2/docs/deploy-bare-metal.md | 2 +- site2/docs/functions-package-java.md | 9 +++++++-- site2/docs/functions-runtime-kubernetes.md | 2 +- site2/docs/functions-runtime.md | 6 ++++++ site2/docs/functions-worker-run-separately.md | 11 ++++++----- site2/docs/io-overview.md | 2 +- site2/docs/txn-what.md | 2 +- 8 files changed, 25 insertions(+), 13 deletions(-) diff --git a/site2/docs/admin-api-overview.md b/site2/docs/admin-api-overview.md index e5c93935a822d..a6e999a6af8eb 100644 --- a/site2/docs/admin-api-overview.md +++ b/site2/docs/admin-api-overview.md @@ -136,8 +136,8 @@ Kubernetes requires a name that can be used as a DNS subdomain name as defined i :::tip -- If you get an error in translating Pulsar object names into Kubernetes resource labels (for example, you may have a naming collision if your Pulsar object name is too long) or want to customize the translating rules, see [customize Kubernetes runtime](/functions-runtime.md#customize-kubernetes-runtime). -- For how to configure Kubernetes runtime, see [here](/functions-runtime.md#configure-kubernetes-runtime). +- If you get an error in translating Pulsar object names into Kubernetes resource labels (for example, you may have a naming collision if your Pulsar object name is too long) or want to customize the translating rules, see [customize Kubernetes runtime](functions-runtime-kubernetes.md#customize-kubernetes-runtime). +- For how to configure Kubernetes runtime, see [instructions](functions-runtime-kubernetes.md). ::: diff --git a/site2/docs/deploy-bare-metal.md b/site2/docs/deploy-bare-metal.md index 1c46febe15850..34aeca57531a5 100644 --- a/site2/docs/deploy-bare-metal.md +++ b/site2/docs/deploy-bare-metal.md @@ -547,7 +547,7 @@ bin/pulsar-admin functions create \ ``` -Check whether the function runs as expected by [triggering](functions-deploying.md#triggering-pulsar-functions) the function. +Check whether the function runs as expected by [triggering](functions-deploy-trigger.md) the function. ```bash diff --git a/site2/docs/functions-package-java.md b/site2/docs/functions-package-java.md index 3e2961bafa65e..0c5c67b7ecb5b 100644 --- a/site2/docs/functions-package-java.md +++ b/site2/docs/functions-package-java.md @@ -4,6 +4,12 @@ title: Package Java Functions sidebar_label: "Package Java Functions" --- +:::note + +For the runtime Java version, refer to [Pulsar Runtime Java Version Recommendation](https://github.com/apache/pulsar/blob/master/README.md#pulsar-runtime-java-version-recommendation) according to your target Pulsar version. + +::: + To package a Java function, complete the following steps. 1. Create a new maven project with a pom file. In the following code sample, the value of `mainClass` is your package name. @@ -57,8 +63,7 @@ To package a Java function, complete the following steps. org.apache.maven.plugins maven-compiler-plugin - 8 - 8 + 17 diff --git a/site2/docs/functions-runtime-kubernetes.md b/site2/docs/functions-runtime-kubernetes.md index be2fa3ebae8c2..433e2140a53ec 100644 --- a/site2/docs/functions-runtime-kubernetes.md +++ b/site2/docs/functions-runtime-kubernetes.md @@ -34,7 +34,7 @@ For example, you [deploy a function](functions-deploy.md) to the `pulsar-func` K tenant: "mytenant" namespace: "mynamespace" name: "myfunction" -topicName: "persistent://mytenant/mynamespace/myfuncinput" +inputs: [ "persistent://mytenant/mynamespace/myfuncinput" ] className: "com.company.pulsar.myfunction" secrets: diff --git a/site2/docs/functions-runtime.md b/site2/docs/functions-runtime.md index cd0c9c04bc3cb..9e433558c8d9b 100644 --- a/site2/docs/functions-runtime.md +++ b/site2/docs/functions-runtime.md @@ -13,3 +13,9 @@ The following table outlines the supported programming languages for each type o | [Thread runtime](functions-runtime-thread) | Java | | [Process runtime](functions-runtime-process) | Java, Python, Go | | [Kubernetes runtime](functions-runtime-kubernetes) | Java, Python, Go | + +:::note + +For the runtime Java version, refer to [Pulsar Runtime Java Version Recommendation](https://github.com/apache/pulsar/blob/master/README.md#pulsar-runtime-java-version-recommendation) according to your target Pulsar version. + +::: diff --git a/site2/docs/functions-worker-run-separately.md b/site2/docs/functions-worker-run-separately.md index 57b742d5541fd..2016c0ce838dd 100644 --- a/site2/docs/functions-worker-run-separately.md +++ b/site2/docs/functions-worker-run-separately.md @@ -32,7 +32,7 @@ To run function workers separately, you need to keep `functionsWorkerEnabled` as Configure the required parameters for workers in the `conf/functions_worker.yml` file. - `workerId`: The identity of a worker node, which is unique across clusters. The type is string. - `workerHostname`: The hostname of the worker node. -- `workerPort`: The port that the worker server listens on. Keep it as default if you don't customize it. +- `workerPort`: The port that the worker server listens on. Keep it as default if you don't customize it. Set it to `null` to disable the plaintext port. - `workerPortTls`: The TLS port that the worker server listens on. Keep it as default if you don't customize it. For more information about TLS encryption settings, refer to [settings](#enable-tls-encryption). :::note @@ -59,8 +59,9 @@ Configure the required parameter for function metadata in the `conf/functions_wo - `pulsarFunctionsCluster`: Set the value to your Pulsar cluster name (same as the `clusterName` setting in the `conf/broker.conf` file). If authentication is enabled on your broker cluster, you must configure the following authentication settings for the function workers to communicate with the brokers. -- `brokerClientAuthenticationPlugin` -- `brokerClientAuthenticationParameters` +- `brokerClientAuthenticationEnabled`: Whether to enable the broker client authentication used by function workers to talk to brokers. +- `clientAuthenticationPlugin`: The authentication plugin to be used by the Pulsar client used in worker service. +- `clientAuthenticationParameters`: The authentication parameter to be used by the Pulsar client used in worker service. ### Enable security settings @@ -145,13 +146,13 @@ authenticationProviders: ['org.apache.pulsar.broker.authentication.Authenticatio ``` -For SASL authentication provider, add `saslJaasClientAllowedIds` and `saslJaasBrokerSectionName` under `properties`. +For SASL authentication provider, add `saslJaasClientAllowedIds` and `saslJaasServerSectionName` under `properties`. ```properties properties: saslJaasClientAllowedIds: .*pulsar.* - saslJaasBrokerSectionName: PulsarBroker + saslJaasServerSectionName: Broker ``` diff --git a/site2/docs/io-overview.md b/site2/docs/io-overview.md index 8f5bd433af614..04b096de70940 100644 --- a/site2/docs/io-overview.md +++ b/site2/docs/io-overview.md @@ -159,5 +159,5 @@ For more information about the options of `pulsar-admin sinks update`, see [here You can manage Pulsar connectors (for example, create, update, start, stop, restart, reload, delete and perform other operations on connectors) via the `Connector Admin CLI` with sources and sinks subcommands. For the latest and complete information, see [Pulsar admin docs](/tools/pulsar-admin/). -Connectors (sources and sinks) and Functions are components of instances, and they all run on Functions workers. When managing a source, sink or function via the `Connector Admin CLI` or [Functions Admin CLI](functions-cli), an instance is started on a worker. For more information, see [Functions worker](functions-worker.md#run-functions-worker-separately). +Connectors (sources and sinks) and Functions are components of instances, and they all run on Functions workers. When managing a source, sink or function via the `Connector Admin CLI` or `Functions Admin CLI`, an instance is started on a worker. For more information, see [Functions worker](functions-worker-run-separately.md). diff --git a/site2/docs/txn-what.md b/site2/docs/txn-what.md index e603f37f7ef93..9f7b6d527384a 100644 --- a/site2/docs/txn-what.md +++ b/site2/docs/txn-what.md @@ -4,7 +4,7 @@ title: What are transactions? sidebar_label: "What are transactions?" --- -Transactions strengthen the message delivery semantics of Apache Pulsar and [processing guarantees of Pulsar Functions](functions-overview.md#processing-guarantees). The Pulsar Transaction API supports atomic writes and acknowledgments across multiple topics. +Transactions strengthen the message delivery semantics of Apache Pulsar and [processing guarantees of Pulsar Functions](functions-concepts.md#processing-guarantees-and-subscription-types). The Pulsar Transaction API supports atomic writes and acknowledgments across multiple topics. Transactions allow: From 21df88e76fde8fa2220bfb2d21ca3cd1a8bed34d Mon Sep 17 00:00:00 2001 From: momo-jun Date: Wed, 8 Jun 2022 16:07:49 +0800 Subject: [PATCH 3/9] debug and optimize --- site2/docs/functions-concepts.md | 28 +- site2/docs/functions-debug.md | 4 +- site2/docs/functions-deploy.md | 2 +- ...-api.md => functions-develop-admin-api.md} | 2 +- .../docs/functions-develop-api-exended-sdk.md | 65 --- .../functions-develop-api-language-native.md | 61 --- site2/docs/functions-develop-api-sdk.md | 92 ----- site2/docs/functions-develop-api.md | 207 +++++++++- site2/docs/functions-develop-context.md | 30 -- ...ontext-log.md => functions-develop-log.md} | 2 +- site2/docs/functions-develop-metrics.md | 2 +- site2/docs/functions-develop-security.md | 19 +- site2/docs/functions-develop-state-api.md | 294 -------------- site2/docs/functions-develop-state-example.md | 64 --- site2/docs/functions-develop-state-query.md | 22 -- site2/docs/functions-develop-state.md | 371 +++++++++++++++++- site2/docs/functions-develop-tutorial.md | 6 +- ...functions-develop-user-defined-configs.md} | 4 +- site2/docs/functions-develop.md | 12 +- site2/docs/functions-overview.md | 2 +- site2/docs/functions-package-python.md | 6 +- site2/docs/functions-package.md | 2 +- site2/docs/functions-runtime-java-options.md | 8 +- site2/docs/functions-runtime-kubernetes.md | 1 + site2/docs/functions-runtime.md | 16 +- site2/docs/functions-worker-corun.md | 4 +- site2/docs/functions-worker-run-separately.md | 18 +- site2/docs/functions-worker.md | 11 +- site2/website/sidebars.json | 111 +++++- 29 files changed, 775 insertions(+), 691 deletions(-) rename site2/docs/{functions-develop-context-admin-api.md => functions-develop-admin-api.md} (98%) delete mode 100644 site2/docs/functions-develop-api-exended-sdk.md delete mode 100644 site2/docs/functions-develop-api-language-native.md delete mode 100644 site2/docs/functions-develop-api-sdk.md delete mode 100644 site2/docs/functions-develop-context.md rename site2/docs/{functions-develop-context-log.md => functions-develop-log.md} (99%) delete mode 100644 site2/docs/functions-develop-state-api.md delete mode 100644 site2/docs/functions-develop-state-example.md delete mode 100644 site2/docs/functions-develop-state-query.md rename site2/docs/{functions-develop-context-user-defined-configs.md => functions-develop-user-defined-configs.md} (94%) diff --git a/site2/docs/functions-concepts.md b/site2/docs/functions-concepts.md index 8a46127825012..a22bc9f97678f 100644 --- a/site2/docs/functions-concepts.md +++ b/site2/docs/functions-concepts.md @@ -64,7 +64,7 @@ The following table outlines the three types of function runtime. | Type | Description | |--------|-----------------| -| Thread runtime | Each instance runs as a thread.

Since the code for thread mode is written in Java, it is only applicable to Java instances**. When a function runs in thread mode, it runs on the same Java virtual machine (JVM) with a function worker. | +| Thread runtime | Each instance runs as a thread.

Since the code for thread mode is written in Java, it is **only** applicable to Java instances. When a function runs in thread mode, it runs on the same Java virtual machine (JVM) with a function worker. | | Process runtime | Each instance runs as a process.

When a function runs in process mode, it runs on the same machine that the function worker runs.| | Kubernetes runtime | Function is submitted as Kubernetes StatefulSet by workers and each function instance runs as a pod. Pulsar supports adding labels to the Kubernetes StatefulSets and services while launching functions, which facilitates selecting the target Kubernetes objects. | @@ -110,6 +110,32 @@ bin/pulsar-admin functions update \ ``` +## Context + +Java, Python, and Go SDKs provide access to a **context object** that can be used by a function. This context object provides a wide variety of information and functionality to the function including: +* The name and ID of a function. +* The message ID of a message. Each message is automatically assigned with an ID. +* The key, event time, properties, and partition key of a message. +* The name of the topic that a message is sent to. +* The names of all input topics as well as the output topic associated with the function. +* The name of the class used for [SerDe](functions-develop-serde). +* The tenant and namespace associated with the function. +* The ID of the function instance running the function. +* The version of the function. +* The [logger object](functions-develop-log) used by the function, which is used to create log messages. +* Access to arbitrary [user configuration](functions-develop-user-defined-configs) values supplied via the CLI. +* An interface for recording [metrics](functions-develop-metrics). +* An interface for storing and retrieving state in [state storage](functions-develop-state). +* A function to publish new messages onto arbitrary topics. +* A function to acknowledge the message being processed (if auto-ack is disabled). +* (Java) get Pulsar admin client. + +:::tip + +For more information about code examples, refer to [Java](https://github.com/apache/pulsar/blob/master/pulsar-functions/api-java/src/main/java/org/apache/pulsar/functions/api/BaseContext.java), [Python](https://github.com/apache/pulsar/blob/master/pulsar-functions/instance/src/main/python/contextimpl.py) and [Go](https://github.com/apache/pulsar/blob/master/pulsar-function-go/pf/context.go). + +::: + ## Function message types Pulsar Functions take byte arrays as inputs and spit out byte arrays as output. You can write typed functions and bind messages to types by using either of the following ways: diff --git a/site2/docs/functions-debug.md b/site2/docs/functions-debug.md index cc74131c34885..40217cd770266 100644 --- a/site2/docs/functions-debug.md +++ b/site2/docs/functions-debug.md @@ -1,10 +1,10 @@ --- id: functions-debug title: Debug Pulsar Functions -sidebar_label: "Debug Pulsar Functions" +sidebar_label: "How to debug" --- -You can use the following methods to debug functions: +You can use the following methods to debug Pulsar Functions: * [Debug with captured stderr](functions-debug-stderr) * [Debug with unit test](functions-debug-unit-test) * [Debug with localrun mode](functions-debug-localrun) diff --git a/site2/docs/functions-deploy.md b/site2/docs/functions-deploy.md index fad97900be8c0..19c4a91ccb5e3 100644 --- a/site2/docs/functions-deploy.md +++ b/site2/docs/functions-deploy.md @@ -1,7 +1,7 @@ --- id: functions-deploy title: Deploy Pulsar Functions -sidebar_label: "Deploy Pulsar Functions" +sidebar_label: "How to deploy" --- Pulsar provides two modes to deploy a function: diff --git a/site2/docs/functions-develop-context-admin-api.md b/site2/docs/functions-develop-admin-api.md similarity index 98% rename from site2/docs/functions-develop-context-admin-api.md rename to site2/docs/functions-develop-admin-api.md index 3c58a3b206141..5d24db7c7f13e 100644 --- a/site2/docs/functions-develop-context-admin-api.md +++ b/site2/docs/functions-develop-admin-api.md @@ -1,5 +1,5 @@ --- -id: functions-develop-context-admin-api +id: functions-develop-admin-api title: Call Pulsar admin APIs sidebar_label: "Call Pulsar admin APIs" --- diff --git a/site2/docs/functions-develop-api-exended-sdk.md b/site2/docs/functions-develop-api-exended-sdk.md deleted file mode 100644 index fdd36077466c6..0000000000000 --- a/site2/docs/functions-develop-api-exended-sdk.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: functions-develop-api-exended-sdk -title: Use extended SDK for Java -sidebar_label: "Use extended SDK for Java" ---- - -````mdx-code-block -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -```` - -This extended Pulsar Functions SDK provides two additional interfaces to initialize and release external resources. -- By using the `initialize` interface, you can initialize external resources which only need one-time initialization when the function instance starts. -- By using the `close` interface, you can close the referenced external resources when the function instance closes. - -:::note - -The extended Pulsar Functions SDK for Java is only available in Pulsar 2.10.0 or later versions. Before using it, you need to [set up function workers](functions-worker.md) in Pulsar 2.10.0 or later versions. - -::: - -The following example uses the extended interface of Pulsar Functions SDK for Java to initialize RedisClient when the function instance starts and release it when the function instance closes. - -````mdx-code-block - - - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; -import io.lettuce.core.RedisClient; - -public class InitializableFunction implements Function { - private RedisClient redisClient; - - private void initRedisClient(Map connectInfo) { - redisClient = RedisClient.create(connectInfo.get("redisURI")); - } - - @Override - public void initialize(Context context) { - Map connectInfo = context.getUserConfigMap(); - redisClient = initRedisClient(connectInfo); - } - - @Override - public String process(String input, Context context) { - String value = client.get(key); - return String.format("%s-%s", input, value); - } - - @Override - public void close() { - redisClient.close(); - } -} - -``` - - - -```` diff --git a/site2/docs/functions-develop-api-language-native.md b/site2/docs/functions-develop-api-language-native.md deleted file mode 100644 index 11eb98e39f675..0000000000000 --- a/site2/docs/functions-develop-api-language-native.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -id: functions-develop-api-language-native -title: Use language-native interface for Java/Python -sidebar_label: "Use language-native interface" ---- - -````mdx-code-block -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -```` - -The language-native interface provides a simple and clean approach to write Java/Python functions, by adding an exclamation point to all incoming strings and publishing the output string to a topic. It has no external dependencies. - -The following examples are language-native functions. - -````mdx-code-block - - - -To use a piece of Java code as a “language-native” function, you need to implement the `java.util.Function` interface. You can include any sort of complex logic inside the `apply` method to provide more processing capabilities. - -```java - -import java.util.function.Function; - -public class JavaNativeExclamationFunction implements Function { - @Override - public String apply(String input) { - return String.format("%s!", input); - } -} - -``` - -For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/JavaNativeExclamationFunction.java). - - - - -To use a piece of Python code as a “language-native” function, you must have a method named `process` as follows. It appends an exclamation point to any string value it receives. - -```python - -def process(input): - return "{}!".format(input) - -``` - -For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/native_exclamation_function.py). - -:::note - -Write Pulsar Functions in Python 3. To make sure your functions can run, you need to have Python 3 installed for functions workers and set Python 3 as the default interpreter. - -::: - - - -```` diff --git a/site2/docs/functions-develop-api-sdk.md b/site2/docs/functions-develop-api-sdk.md deleted file mode 100644 index eeab77e6c8b10..0000000000000 --- a/site2/docs/functions-develop-api-sdk.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -id: functions-develop-api-sdk -title: Use SDK for Java/Python/Go -sidebar_label: "Use SDK for Java/Python/Go" ---- - -````mdx-code-block -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -```` - -The implementation of Pulsar Functions SDK specifies a functional interface that includes the [context](functions-develop-context) object as a parameter. - -The following examples use Pulsar Functions SDK for different languages. - -````mdx-code-block - - - -When developing a function using the Java SDK, you need to implement the `org.apache.pulsar.functions.api.Function` interface. It specifies only one method that you need to implement called `process`. - -```java - -import org.apache.pulsar.functions.api.Context; -import org.apache.pulsar.functions.api.Function; - -public class ExclamationFunction implements Function { - @Override - public String process(String input, Context context) { - return String.format("%s!", input); - } -} - -``` - -For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/ExclamationFunction.java). - - - - -To develop a function using the Python SDK, you need to add the pulsar client dependency to your Python installation. - -```python - -from pulsar import Function - -class ExclamationFunction(Function): - def __init__(self): - pass - - def process(self, input, context): - return input + '!' - -``` - -For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/exclamation_function.py). - - - - -To develop a function using the Go SDK, you need to add the pulsar client dependency to your Go installation and provide the name of the function to the `pf.Start()` method inside the `main()` method. This registers the function with the Pulsar Functions framework and ensures that the specified function can be invoked when a new message arrives. - -```go - -package main - -import ( - "context" - "fmt" - - "github.com/apache/pulsar/pulsar-function-go/pf" -) - -func HandleRequest(ctx context.Context, in []byte) error{ - fmt.Println(string(in) + "!") - return nil -} - -func main() { - pf.Start(HandleRequest) -} - -``` - -For more details, see [code example](https://github.com/apache/pulsar/blob/77cf09eafa4f1626a53a1fe2e65dd25f377c1127/pulsar-function-go/examples/inputFunc/inputFunc.go#L20-L36). - - - -```` - diff --git a/site2/docs/functions-develop-api.md b/site2/docs/functions-develop-api.md index 318421084b584..baa21f5fbe652 100644 --- a/site2/docs/functions-develop-api.md +++ b/site2/docs/functions-develop-api.md @@ -4,10 +4,211 @@ title: Use APIs sidebar_label: "Use APIs" --- +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + The following table outlines the APIs that you can use to develop Pulsar Functions in Java, Python, and Go. | Interface | Description | Use case| |---------|------------|---------| -| [Language-native interface for Java/Python](functions-develop-api-language-native) | No Pulsar-specific libraries or special dependencies required (only core libraries). | Functions that do not require access to the [context](functions-develop-context).| -| [Pulsar Functions SDK for Java/Python/Go](functions-develop-api-sdk) | Pulsar-specific libraries that provide a range of functionality not available in the language-native interfaces, such as state management or user configuration. | Functions that require access to the [context](functions-develop-context).| -| [Extended Pulsar Functions SDK for Java](functions-develop-api-exended-sdk) | An extension to Pulsar-specific libraries, providing the initialization and close interfaces in Java. | Functions that require initializing and releasing external resources.| \ No newline at end of file +| [Language-native interface for Java/Python](#use-language-native-interface-for-javapython) | No Pulsar-specific libraries or special dependencies required (only core libraries). | Functions that do not require access to the [context](functions-concepts.md#context).| +| [Pulsar Functions SDK for Java/Python/Go](#use-sdk-for-javapythongo) | Pulsar-specific libraries that provide a range of functionality not available in the language-native interfaces, such as state management or user configuration. | Functions that require access to the [context](functions-concepts.md#context).| +| [Extended Pulsar Functions SDK for Java](#use-extended-sdk-for-java) | An extension to Pulsar-specific libraries, providing the initialization and close interfaces in Java. | Functions that require initializing and releasing external resources.| + + +## Use language-native interface for Java/Python + +The language-native interface provides a simple and clean approach to write Java/Python functions, by adding an exclamation point to all incoming strings and publishing the output string to a topic. It has no external dependencies. + +The following examples are language-native functions. + +````mdx-code-block + + + +To use a piece of Java code as a “language-native” function, you need to implement the `java.util.Function` interface. You can include any sort of complex logic inside the `apply` method to provide more processing capabilities. + +```java + +import java.util.function.Function; + +public class JavaNativeExclamationFunction implements Function { + @Override + public String apply(String input) { + return String.format("%s!", input); + } +} + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/JavaNativeExclamationFunction.java). + + + + +To use a piece of Python code as a “language-native” function, you must have a method named `process` as follows. It appends an exclamation point to any string value it receives. + +```python + +def process(input): + return "{}!".format(input) + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/native_exclamation_function.py). + +:::note + +Write Pulsar Functions in Python 3. To make sure your functions can run, you need to have Python 3 installed for functions workers and set Python 3 as the default interpreter. + +::: + + + +```` + + +## Use SDK for Java/Python/Go + +The implementation of Pulsar Functions SDK specifies a functional interface that includes the [context](functions-concepts.md#context) object as a parameter. + +The following examples use Pulsar Functions SDK for different languages. + +````mdx-code-block + + + +When developing a function using the Java SDK, you need to implement the `org.apache.pulsar.functions.api.Function` interface. It specifies only one method that you need to implement called `process`. + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; + +public class ExclamationFunction implements Function { + @Override + public String process(String input, Context context) { + return String.format("%s!", input); + } +} + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/ExclamationFunction.java). + + + + +To develop a function using the Python SDK, you need to add the pulsar client dependency to your Python installation. + +```python + +from pulsar import Function + +class ExclamationFunction(Function): + def __init__(self): + pass + + def process(self, input, context): + return input + '!' + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/master/pulsar-functions/python-examples/exclamation_function.py). + + + + +To develop a function using the Go SDK, you need to add the pulsar client dependency to your Go installation and provide the name of the function to the `pf.Start()` method inside the `main()` method. This registers the function with the Pulsar Functions framework and ensures that the specified function can be invoked when a new message arrives. + +```go + +package main + +import ( + "context" + "fmt" + + "github.com/apache/pulsar/pulsar-function-go/pf" +) + +func HandleRequest(ctx context.Context, in []byte) error{ + fmt.Println(string(in) + "!") + return nil +} + +func main() { + pf.Start(HandleRequest) +} + +``` + +For more details, see [code example](https://github.com/apache/pulsar/blob/77cf09eafa4f1626a53a1fe2e65dd25f377c1127/pulsar-function-go/examples/inputFunc/inputFunc.go#L20-L36). + + + +```` + + +## Use extended SDK for Java + +This extended Pulsar Functions SDK provides two additional interfaces to initialize and release external resources. +- By using the `initialize` interface, you can initialize external resources which only need one-time initialization when the function instance starts. +- By using the `close` interface, you can close the referenced external resources when the function instance closes. + +:::note + +The extended Pulsar Functions SDK for Java is only available in Pulsar 2.10.0 or later versions. Before using it, you need to [set up function workers](functions-worker.md) in Pulsar 2.10.0 or later versions. + +::: + +The following example uses the extended interface of Pulsar Functions SDK for Java to initialize RedisClient when the function instance starts and release it when the function instance closes. + +````mdx-code-block + + + +```java + +import org.apache.pulsar.functions.api.Context; +import org.apache.pulsar.functions.api.Function; +import io.lettuce.core.RedisClient; + +public class InitializableFunction implements Function { + private RedisClient redisClient; + + private void initRedisClient(Map connectInfo) { + redisClient = RedisClient.create(connectInfo.get("redisURI")); + } + + @Override + public void initialize(Context context) { + Map connectInfo = context.getUserConfigMap(); + redisClient = initRedisClient(connectInfo); + } + + @Override + public String process(String input, Context context) { + String value = client.get(key); + return String.format("%s-%s", input, value); + } + + @Override + public void close() { + redisClient.close(); + } +} + +``` + + + +```` diff --git a/site2/docs/functions-develop-context.md b/site2/docs/functions-develop-context.md deleted file mode 100644 index 6fe36e663b817..0000000000000 --- a/site2/docs/functions-develop-context.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: functions-develop-context -title: Use context object -sidebar_label: "Use context object" ---- - -Java, Python, and Go SDKs provide access to a **context object** that can be used by a function. This context object provides a wide variety of information and functionality to the function including: -* The name and ID of a function. -* The message ID of a message. Each message is automatically assigned with an ID. -* The key, event time, properties, and partition key of a message. -* The name of the topic that a message is sent to. -* The names of all input topics as well as the output topic associated with the function. -* The name of the class used for [SerDe](#functions-develop-serde). -* The tenant and namespace associated with the function. -* The ID of the function instance running the function. -* The version of the function. -* The [logger object](functions-develop-context-logs) used by the function, which is used to create log messages. -* Access to arbitrary [user configuration](functions-develop-context-user-defined-configs) values supplied via the CLI. -* An interface for recording [metrics](functions-develop-metrics). -* An interface for storing and retrieving state in [state storage](#functions-develop-state). -* A function to publish new messages onto arbitrary topics. -* A function to acknowledge the message being processed (if auto-ack is disabled). -* (Java) get Pulsar admin client. - -:::tip - -For more information about code examples, refer to [Java](https://github.com/apache/pulsar/blob/master/pulsar-functions/api-java/src/main/java/org/apache/pulsar/functions/api/BaseContext.java), [Python](https://github.com/apache/pulsar/blob/master/pulsar-functions/instance/src/main/python/contextimpl.py) and [Go](https://github.com/apache/pulsar/blob/master/pulsar-function-go/pf/context.go). - -::: - diff --git a/site2/docs/functions-develop-context-log.md b/site2/docs/functions-develop-log.md similarity index 99% rename from site2/docs/functions-develop-context-log.md rename to site2/docs/functions-develop-log.md index fa85811a7f4a6..9ae2c2745eb6d 100644 --- a/site2/docs/functions-develop-context-log.md +++ b/site2/docs/functions-develop-log.md @@ -1,5 +1,5 @@ --- -id: functions-develop-context-log +id: functions-develop-log title: Produce function logs sidebar_label: "Produce function logs" --- diff --git a/site2/docs/functions-develop-metrics.md b/site2/docs/functions-develop-metrics.md index ead229693e480..fbf31c124b28c 100644 --- a/site2/docs/functions-develop-metrics.md +++ b/site2/docs/functions-develop-metrics.md @@ -23,7 +23,7 @@ You can use both built-in metrics and customized metrics to monitor functions. - Set your customized metrics. In addition to the built-in metrics, Pulsar allows you to customize metrics for Java and Python functions. Function workers collect user-defined metrics to Prometheus automatically and you can check them in Grafana. -Here is an example of how to customize metrics for Java, Python and Go functions by using the [`Context object`](functions-develop-context) on a per-key basis. For example, you can set a metric for the `process-count` key and set another one for the `elevens-count` key every time the function processes a message. +Here is an example of how to customize metrics for Java, Python and Go functions by using the [`Context object`](functions-concepts.md#context) on a per-key basis. For example, you can set a metric for the `process-count` key and set another one for the `elevens-count` key every time the function processes a message. ````mdx-code-block diff --git a/site2/docs/functions-develop-security.md b/site2/docs/functions-develop-security.md index adc358c4336c5..ca30d5eab177c 100644 --- a/site2/docs/functions-develop-security.md +++ b/site2/docs/functions-develop-security.md @@ -9,28 +9,35 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ```` -**Prerequisites** +## Prerequisites If you want to enable security on functions, you need to [enable security settings](functions-worker.md#enable-security-settings) on function workers first. +## Procedures To use the secret APIs from the context, you need to set `secretsProviderConfiguratorClassName` and `secretsProviderConfiguratorConfig` for function workers. The `org.apache.pulsar.functions.secretsproviderconfigurator.SecretsProviderConfigurator` interface is used by function workers to choose the `SecretProvider` class name (if any) and its associated configurations at the time of starting the function instances. -Pulsar Functions provided two types of `SecretsProviderConfigurator` implementation and can be used as the value of `secretsProviderConfiguratorClassName` directly: -`org.apache.pulsar.functions.secretsproviderconfigurator.DefaultSecretsProviderConfigurator`: This is a barebones version of a secrets provider which wires in `ClearTextSecretsProvider` to the function instances. -`org.apache.pulsar.functions.secretsproviderconfigurator.KubernetesSecretsProviderConfigurator`: This is used by default for running in Kubernetes and it uses kubernetes built-in secrets and bind them as environment variables (via `EnvironmentBasedSecretsProvider`) within the function container to ensure that the secrets are available to the function at runtime. +Pulsar Functions provided two types of `SecretsProviderConfigurator` implementation and both can be used as the value of `secretsProviderConfiguratorClassName` directly: +* `org.apache.pulsar.functions.secretsproviderconfigurator.DefaultSecretsProviderConfigurator`: This is a barebones version of a secrets provider which wires in `ClearTextSecretsProvider` to the function instances. +* `org.apache.pulsar.functions.secretsproviderconfigurator.KubernetesSecretsProviderConfigurator`: This is used by default for running in Kubernetes and it uses kubernetes built-in secrets and bind them as environment variables (via `EnvironmentBasedSecretsProvider`) within the function container to ensure that the secrets are available to the function at runtime. You can also implemet your own `SecretsProviderConfigurator` if you want to use different `SecretsProvider` for function instances. The `org.apache.pulsar.functions.secretsprovider.SecretsProvider` interface is used by the function instances/containers to actually fetch the secrets. The implementation that `SecretsProvider` uses is determined by `SecretsProviderConfigurator`. +:::note + Currently, only Java and Python runtime support `SecretsProvider`. The Java and Python Runtime have the following two providers: - ClearTextSecretsProvider (default for `DefaultSecretsProviderConfigurator`) -- EnvironmentBasedSecretsProvider (default for `KubernetesSecretsProviderConfigurator`​​) +- EnvironmentBasedSecretsProvider (default for `KubernetesSecretsProviderConfigurator`) + +::: + +## Get the secret -Once `SecretsProviderConfigurator` is set, you can get the secret using the [`Context`](functions-develop-context) object as follows. +Once `SecretsProviderConfigurator` is set, you can get the secret using the [`Context`](functions-concepts.md#context) object as follows. ````mdx-code-block `incrCounterAsync` | `incr_counter` | -| [Retrieve counter](#retrieve-counter) | `getCounter`
`getCounterAsync` | `get_counter` | -| [Update state](#update-state) | `putState`
`putStateAsync` | `put_state` | -| [Retrieve state](#retrieve-state) | `getState`
`getStateAsync` | `get_state` | -| [Delete state](#delete-state) | `deleteState` | `del_counter` | - - -## Increment counter - -You can use `incrCounter` to increment the counter of a given `key` by the given `amount`. -If the `key` does not exist, a new key is created. - -````mdx-code-block - - - -```java - - /** - * Increment the builtin distributed counter referred by key - * @param key The name of the key - * @param amount The amount to be incremented - */ - void incrCounter(String key, long amount); - -``` - - - - -```python - - def incr_counter(self, key, amount): - """incr the counter of a given key in the managed state""" - -``` - - - -```` - -To asynchronously increment the counter, you can use `incrCounterAsync`. - -````mdx-code-block - - - -```java - - /** - * Increment the builtin distributed counter referred by key - * but dont wait for the completion of the increment operation - * - * @param key The name of the key - * @param amount The amount to be incremented - */ - CompletableFuture incrCounterAsync(String key, long amount); - -``` - - - -```` - -## Retrieve counter - -You can use `getCounter` to retrieve the counter of a given `key` mutated by `incrCounter`. - -````mdx-code-block - - - -```java - - /** - * Retrieve the counter value for the key. - * - * @param key name of the key - * @return the amount of the counter value for this key - */ - long getCounter(String key); - -``` - - - - -```python - - def get_counter(self, key): - """get the counter of a given key in the managed state""" - -``` - - - -```` - -To asynchronously retrieve the counter mutated by `incrCounterAsync`, you can use `getCounterAsync`. - -````mdx-code-block - - - -```java - - /** - * Retrieve the counter value for the key, but don't wait - * for the operation to be completed - * - * @param key name of the key - * @return the amount of the counter value for this key - */ - CompletableFuture getCounterAsync(String key); - -``` - - - -```` - -## Update state - -Besides the `counter` API, Pulsar also exposes a general key/value API for functions to store and update the state of a given `key`. - -````mdx-code-block - - - -```java - - /** - * Update the state value for the key. - * - * @param key name of the key - * @param value state value of the key - */ - void putState(String key, ByteBuffer value); - -``` - - - - -```python - - def put_state(self, key, value): - """update the value of a given key in the managed state""" - -``` - - - -```` - -To asynchronously update the state of a given `key`, you can use `putStateAsync`. - -````mdx-code-block - - - -```java - - /** - * Update the state value for the key, but don't wait for the operation to be completed - * - * @param key name of the key - * @param value state value of the key - */ - CompletableFuture putStateAsync(String key, ByteBuffer value); - -``` - - - -```` - -## Retrieve state - -You can use `getState` to retrieve the state of a given `key`. - -````mdx-code-block - - - -```java - - /** - * Retrieve the state value for the key. - * - * @param key name of the key - * @return the state value for the key. - */ - ByteBuffer getState(String key); - -``` - - - - -```python - - def get_state(self, key): - """get the value of a given key in the managed state""" - -``` - - - -```` - -To asynchronously retrieve the state of a given `key`, you can use `getStateAsync`. - -````mdx-code-block - - - -```java - - /** - * Retrieve the state value for the key, but don't wait for the operation to be completed - * - * @param key name of the key - * @return the state value for the key. - */ - CompletableFuture getStateAsync(String key); - -``` - - - -```` - -## Delete state - -:::note - -Both counters and binary values share the same keyspace, so this API deletes either type. - -::: - -````mdx-code-block - - - -```java - - /** - * Delete the state value for the key. - * - * @param key name of the key - */ - void deleteState(String key); - -``` - - - -```` diff --git a/site2/docs/functions-develop-state-example.md b/site2/docs/functions-develop-state-example.md deleted file mode 100644 index 316aace666670..0000000000000 --- a/site2/docs/functions-develop-state-example.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: functions-develop-state-example -title: Example -sidebar_label: "Example" ---- - -````mdx-code-block -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -```` - -The example of `WordCountFunction` demonstrates how `state` is stored within Pulsar Functions. - -````mdx-code-block - - - - -The logic of {@inject: github:`WordCountFunction`:/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/WordCountFunction.java} is simple and straightforward: - -1. The function splits the received `String` into multiple words using regex `\\.`. -2. For each `word`, the function increments `counter` by 1 via `incrCounter(key, amount)`. - - ```java - - import org.apache.pulsar.functions.api.Context; - import org.apache.pulsar.functions.api.Function; - - import java.util.Arrays; - - public class WordCountFunction implements Function { - @Override - public Void process(String input, Context context) throws Exception { - Arrays.asList(input.split("\\.")).forEach(word -> context.incrCounter(word, 1)); - return null; - } - } - - ``` - - - - -The logic of this `WordCount` function is simple and straightforward: - -1. The function first splits the received string into multiple words. -2. For each `word`, the function increments `counter` by 1 via `incr_counter(key, amount)`. - - ```python - - from pulsar import Function - - class WordCount(Function): - def process(self, item, context): - for word in item.split(): - context.incr_counter(word, 1) - - ``` - - - -```` diff --git a/site2/docs/functions-develop-state-query.md b/site2/docs/functions-develop-state-query.md deleted file mode 100644 index f9a5bf2b61a99..0000000000000 --- a/site2/docs/functions-develop-state-query.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -id: functions-develop-state-query -title: Query state via CLI -sidebar_label: "Query state via CLI" ---- - -Besides using the [State APIs](functions-develop-state-api.md) to store the state of functions in Pulsar's state storage and retrieve it back from the storage, you can use CLI commands to query the state of functions. - -```bash - -bin/pulsar-admin functions querystate \ - --tenant \ - --namespace \ - --name \ - --state-storage-url \ - --key \ - [---watch] - -``` - -If `--watch` is specified, the CLI tool keeps running to get the latest value of the provided `state-key`. - diff --git a/site2/docs/functions-develop-state.md b/site2/docs/functions-develop-state.md index 76a2f16718fda..ab9d3ccd0722d 100644 --- a/site2/docs/functions-develop-state.md +++ b/site2/docs/functions-develop-state.md @@ -4,7 +4,13 @@ title: Configure state storage sidebar_label: "Configure state storage" --- -Pulsar Functions use [Apache BookKeeper](https://bookkeeper.apache.org) as a state storage interface. Pulsar integrates with BookKeeper [table service](https://docs.google.com/document/d/155xAwWv5IdOitHh1NVMEwCMGgB28M3FyMiQSxEpjE-Y/edit#heading=h.56rbh52koe3f) to store state for functions. For example, a `WordCount` function can store the state of its counters into BookKeeper table service via [State APIs](functions-develop-state-api). +````mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +```` + + +Pulsar Functions use [Apache BookKeeper](https://bookkeeper.apache.org) as a state storage interface. Pulsar integrates with BookKeeper [table service](https://docs.google.com/document/d/155xAwWv5IdOitHh1NVMEwCMGgB28M3FyMiQSxEpjE-Y/edit#heading=h.56rbh52koe3f) to store state for functions. For example, a `WordCount` function can store the state of its counters into BookKeeper table service via [State APIs](#call-state-apis). States are key-value pairs, where a key is a string and its value is arbitrary binary data - counters are stored as 64-bit big-endian binary values. Keys are scoped to an individual function, and shared between instances of that function. @@ -13,3 +19,366 @@ States are key-value pairs, where a key is a string and its value is arbitrary b State storage is **not** available for Go functions. ::: + + +## Call state APIs + +Pulsar Functions expose APIs for mutating and accessing `state`. These APIs are available in the [Context](functions-concepts.md#context) object when you use [Java/Python SDK](functions-develop-api.md) to develop functions. + +The following table outlines the states that can be accessed within Java and Python functions. + +| State-related API | API for Java | Python | +|-----------------------------------------|----------------------------------------|----------------| +| [Increment counter](#increment-counter) | `incrCounter`
`incrCounterAsync` | `incr_counter` | +| [Retrieve counter](#retrieve-counter) | `getCounter`
`getCounterAsync` | `get_counter` | +| [Update state](#update-state) | `putState`
`putStateAsync` | `put_state` | +| [Retrieve state](#retrieve-state) | `getState`
`getStateAsync` | `get_state` | +| [Delete state](#delete-state) | `deleteState` | `del_counter` | + + +## Increment counter + +You can use `incrCounter` to increment the counter of a given `key` by the given `amount`. +If the `key` does not exist, a new key is created. + +````mdx-code-block + + + +```java + + /** + * Increment the builtin distributed counter referred by key + * @param key The name of the key + * @param amount The amount to be incremented + */ + void incrCounter(String key, long amount); + +``` + + + + +```python + + def incr_counter(self, key, amount): + """incr the counter of a given key in the managed state""" + +``` + + + +```` + +To asynchronously increment the counter, you can use `incrCounterAsync`. + +````mdx-code-block + + + +```java + + /** + * Increment the builtin distributed counter referred by key + * but dont wait for the completion of the increment operation + * + * @param key The name of the key + * @param amount The amount to be incremented + */ + CompletableFuture incrCounterAsync(String key, long amount); + +``` + + + +```` + +### Retrieve counter + +You can use `getCounter` to retrieve the counter of a given `key` mutated by `incrCounter`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the counter value for the key. + * + * @param key name of the key + * @return the amount of the counter value for this key + */ + long getCounter(String key); + +``` + + + + +```python + + def get_counter(self, key): + """get the counter of a given key in the managed state""" + +``` + + + +```` + +To asynchronously retrieve the counter mutated by `incrCounterAsync`, you can use `getCounterAsync`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the counter value for the key, but don't wait + * for the operation to be completed + * + * @param key name of the key + * @return the amount of the counter value for this key + */ + CompletableFuture getCounterAsync(String key); + +``` + + + +```` + +### Update state + +Besides the `counter` API, Pulsar also exposes a general key/value API for functions to store and update the state of a given `key`. + +````mdx-code-block + + + +```java + + /** + * Update the state value for the key. + * + * @param key name of the key + * @param value state value of the key + */ + void putState(String key, ByteBuffer value); + +``` + + + + +```python + + def put_state(self, key, value): + """update the value of a given key in the managed state""" + +``` + + + +```` + +To asynchronously update the state of a given `key`, you can use `putStateAsync`. + +````mdx-code-block + + + +```java + + /** + * Update the state value for the key, but don't wait for the operation to be completed + * + * @param key name of the key + * @param value state value of the key + */ + CompletableFuture putStateAsync(String key, ByteBuffer value); + +``` + + + +```` + +### Retrieve state + +You can use `getState` to retrieve the state of a given `key`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the state value for the key. + * + * @param key name of the key + * @return the state value for the key. + */ + ByteBuffer getState(String key); + +``` + + + + +```python + + def get_state(self, key): + """get the value of a given key in the managed state""" + +``` + + + +```` + +To asynchronously retrieve the state of a given `key`, you can use `getStateAsync`. + +````mdx-code-block + + + +```java + + /** + * Retrieve the state value for the key, but don't wait for the operation to be completed + * + * @param key name of the key + * @return the state value for the key. + */ + CompletableFuture getStateAsync(String key); + +``` + + + +```` + +### Delete state + +:::note + +Both counters and binary values share the same keyspace, so this API deletes either type. + +::: + +````mdx-code-block + + + +```java + + /** + * Delete the state value for the key. + * + * @param key name of the key + */ + void deleteState(String key); + +``` + + + +```` + + +## Query state via CLI + +Besides using the [State APIs](#call-state-apis) to store the state of functions in Pulsar's state storage and retrieve it back from the storage, you can use CLI commands to query the state of functions. + +```bash + +bin/pulsar-admin functions querystate \ + --tenant \ + --namespace \ + --name \ + --state-storage-url \ + --key \ + [---watch] + +``` + +If `--watch` is specified, the CLI tool keeps running to get the latest value of the provided `state-key`. + + +## Example + +The example of `WordCountFunction` demonstrates how `state` is stored within Pulsar Functions. + +````mdx-code-block + + + + +The logic of {@inject: github:`WordCountFunction`:/pulsar-functions/java-examples/src/main/java/org/apache/pulsar/functions/api/examples/WordCountFunction.java} is simple and straightforward: + +1. The function splits the received `String` into multiple words using regex `\\.`. +2. For each `word`, the function increments `counter` by 1 via `incrCounter(key, amount)`. + + ```java + + import org.apache.pulsar.functions.api.Context; + import org.apache.pulsar.functions.api.Function; + + import java.util.Arrays; + + public class WordCountFunction implements Function { + @Override + public Void process(String input, Context context) throws Exception { + Arrays.asList(input.split("\\.")).forEach(word -> context.incrCounter(word, 1)); + return null; + } + } + + ``` + + + + +The logic of this `WordCount` function is simple and straightforward: + +1. The function first splits the received string into multiple words. +2. For each `word`, the function increments `counter` by 1 via `incr_counter(key, amount)`. + + ```python + + from pulsar import Function + + class WordCount(Function): + def process(self, item, context): + for word in item.split(): + context.incr_counter(word, 1) + + ``` + + + +```` diff --git a/site2/docs/functions-develop-tutorial.md b/site2/docs/functions-develop-tutorial.md index 8592db40a4d21..98f33b9f8d877 100644 --- a/site2/docs/functions-develop-tutorial.md +++ b/site2/docs/functions-develop-tutorial.md @@ -12,7 +12,7 @@ The following example is a stateful function. By default, the state of a functio ::: -1. Write the function in Java using the [SDK for Java](functions-develop-api-sdk.md). +1. Write the function in Java using the [SDK for Java](functions-develop-api.md). ```java @@ -53,7 +53,7 @@ The following example is a stateful function. By default, the state of a functio ## Write a function for content-based routing -1. Write the function in Python using the [SDK for Python](functions-develop-api-sdk.md). +1. Write the function in Python using the [SDK for Python](functions-develop-api.md). ```python @@ -103,7 +103,7 @@ Currently, window function is only available in Java. ::: -This example demonstrates how to use the [language-native interface](functions-develop-api-language-native.md) to write a window function in Java. +This example demonstrates how to use the [language-native interface](functions-develop-api.md) to write a window function in Java. Each input message is a sentence that is split into words and each word counted. The built-in counter state is used to keep track of the word count in a persistent and consistent manner. diff --git a/site2/docs/functions-develop-context-user-defined-configs.md b/site2/docs/functions-develop-user-defined-configs.md similarity index 94% rename from site2/docs/functions-develop-context-user-defined-configs.md rename to site2/docs/functions-develop-user-defined-configs.md index a4f9a95b2f237..928aa0f9edb2f 100644 --- a/site2/docs/functions-develop-context-user-defined-configs.md +++ b/site2/docs/functions-develop-user-defined-configs.md @@ -1,5 +1,5 @@ --- -id: functions-develop-context-user-defined-configs +id: functions-develop-user-defined-configs title: Pass user-defined configurations sidebar_label: "Pass user-defined configurations" --- @@ -96,7 +96,7 @@ class WordFilter(Function): ``` -The [`Context`](functions-develop-context) object of Python SDK enables you to access key/value pairs provided to functions via the command line (as JSON). The following example passes a key/value pair. +The context object of Python SDK enables you to access key/value pairs provided to functions via the command line (as JSON). The following example passes a key/value pair. ```bash diff --git a/site2/docs/functions-develop.md b/site2/docs/functions-develop.md index c9f5e37019cc6..5ffb54032baee 100644 --- a/site2/docs/functions-develop.md +++ b/site2/docs/functions-develop.md @@ -1,7 +1,7 @@ --- id: functions-develop title: Develop Pulsar Functions -sidebar_label: "Develop Pulsar Functions" +sidebar_label: "How to develop" --- :::note @@ -14,9 +14,11 @@ Develop functions in Java, Python, or Go. To develop Pulsar Functions, you can leverage the following tools and features. * [APIs](functions-develop-api) -* [Schema registry](functions-schema-registry) -* [SerDe](functions-develop-serde) -* [Context object](functions-develop-context) +* [User-defined configs](functions-develop-user-defined-configs) +* [Logs](functions-develop-log) * [Metrics](functions-develop-metrics) * [Security](functions-develop-security) -* [Stage storage](functions-develop-state) \ No newline at end of file +* [Stage storage](functions-develop-state) +* [Admin APIs](functions-develop-admin-api) +* [Schema registry](functions-schema-registry) +* [SerDe](functions-develop-serde) \ No newline at end of file diff --git a/site2/docs/functions-overview.md b/site2/docs/functions-overview.md index 3c1775f9fa3f5..d8054edb12707 100644 --- a/site2/docs/functions-overview.md +++ b/site2/docs/functions-overview.md @@ -61,7 +61,7 @@ This figure illustrates the process of implementing the classic word count examp ### Content-based routing example -For example, a function takes items (strings) as input and publishes them to either a `fruits` or `vegetables` topic, depending on the item. If an item is neither fruit nor vegetable, a warning is logged to a [log topic](functions-develop-context-log.md). +For example, a function takes items (strings) as input and publishes them to either a `fruits` or `vegetables` topic, depending on the item. If an item is neither fruit nor vegetable, a warning is logged to a [log topic](functions-develop-log.md). This figure demonstrates the process of implementing a content-based routing using Pulsar Functions. diff --git a/site2/docs/functions-package-python.md b/site2/docs/functions-package-python.md index fd15f7e8372f7..290798480c9a1 100644 --- a/site2/docs/functions-package-python.md +++ b/site2/docs/functions-package-python.md @@ -5,13 +5,13 @@ sidebar_label: "Package Python Functions" --- Python functions support the following three packaging formats: -- One python file +- One Python file - ZIP file - PIP -## One python file +## One Python file -To package a Python function into **one python file**, complete the following steps. +To package a Python function into **one Python file**, complete the following steps. 1. Write a Python function. diff --git a/site2/docs/functions-package.md b/site2/docs/functions-package.md index 576f34a83a851..2d68ad902f784 100644 --- a/site2/docs/functions-package.md +++ b/site2/docs/functions-package.md @@ -1,7 +1,7 @@ --- id: functions-package title: Package Pulsar Functions -sidebar_label: "Package Pulsar Functions" +sidebar_label: "How to package" --- If you want to submit and run functions in cluster mode, you need to package your functions first. diff --git a/site2/docs/functions-runtime-java-options.md b/site2/docs/functions-runtime-java-options.md index c1598ffb41da1..efc4f2a466641 100644 --- a/site2/docs/functions-runtime-java-options.md +++ b/site2/docs/functions-runtime-java-options.md @@ -6,13 +6,13 @@ sidebar_label: "Customize Java runtime options" :::note -This setting only applies to process runtime and Kubernetes runtime. +This setting **only** applies to process runtime and Kubernetes runtime. ::: -To pass additional arguments to the JVM command line for every process started by a function worker, you can configure the `additionalJavaRuntimeArguments` in the `conf/functions_worker.yml` file. -- add JMV flags, like `-XX:+ExitOnOutOfMemoryError` -- pass custom system properties, like `-Dlog4j2.formatMsgNoLookups` +To pass additional arguments to the JVM command line for every process started by a function worker, you can configure the `additionalJavaRuntimeArguments` in the `conf/functions_worker.yml` file as follows. +- Add JMV flags, like `-XX:+ExitOnOutOfMemoryError` +- Pass custom system properties, like `-Dlog4j2.formatMsgNoLookups` ```yaml diff --git a/site2/docs/functions-runtime-kubernetes.md b/site2/docs/functions-runtime-kubernetes.md index 433e2140a53ec..1a0ddd0fe44f3 100644 --- a/site2/docs/functions-runtime-kubernetes.md +++ b/site2/docs/functions-runtime-kubernetes.md @@ -6,6 +6,7 @@ sidebar_label: "Configure Kubernetes runtime" The Kubernetes runtime works when a function worker generates and applies Kubernetes manifests. The manifests generated by a function worker include: * a `StatefulSet` + By default, the `StatefulSet` manifest has a single pod with a number of replicas. The number is determined by the [parallelism](functions-deploy-cluster-parallelism.md) of the function. The pod downloads the function payload (via the function worker REST API) on pod boot. The pod's container image is configurable if the function runtime is configured. * a `Service` (used to communicate with the pod) * a `Secret` for authenticating credentials (when applicable). diff --git a/site2/docs/functions-runtime.md b/site2/docs/functions-runtime.md index 9e433558c8d9b..67739377e7d86 100644 --- a/site2/docs/functions-runtime.md +++ b/site2/docs/functions-runtime.md @@ -1,18 +1,18 @@ --- id: functions-runtime -title: Configure Functions runtime -sidebar_label: "Configure Functions runtime" +title: Configure function runtime +sidebar_label: "Configure function runtime" --- -You can configure a specific [function runtime](functions-concepts.md#function-runtime) for your functions. +Pulsar supports three types of [function runtime](functions-concepts.md#function-runtime) with different costs and isolation guarantees to maximize deployment flexibility of your functions. The following table outlines the supported programming languages for each type of function runtime. -| Function runtime | Supported programming languages of functions | -| —---------------------------------------------------|----------------------------------------------| -| [Thread runtime](functions-runtime-thread) | Java | -| [Process runtime](functions-runtime-process) | Java, Python, Go | -| [Kubernetes runtime](functions-runtime-kubernetes) | Java, Python, Go | +| Function runtime | Supported programming languages of functions | +|----------------------------------------------------|----------------------------------------------| +| [Thread runtime](functions-runtime-thread) | Java | +| [Process runtime](functions-runtime-process) | Java, Python, Go | +| [Kubernetes runtime](functions-runtime-kubernetes) | Java, Python, Go | :::note diff --git a/site2/docs/functions-worker-corun.md b/site2/docs/functions-worker-corun.md index d5368820ae583..68027f231b66c 100644 --- a/site2/docs/functions-worker-corun.md +++ b/site2/docs/functions-worker-corun.md @@ -6,7 +6,7 @@ sidebar_label: "Run function workers with brokers" The following diagram illustrates the deployment of function workers running along with brokers. -![assets/functions-worker-corun.svg](/assets/functions-worker-corun.svg) +![assets/functions-worker-corun.svg](/assets/function-workers-corun.svg) :::note @@ -17,7 +17,7 @@ The `Service URLs` in the illustration represent Pulsar service URLs that Pulsar To set up function workers to run with brokers, complete the following steps: 1. [Enable function workers](#enable-function-workers-to-run-with-brokers) 2. [Configure function workers](#configure-function-workers-to-run-with-brokers) -3. [Start function workers](#start-function-workers-with-brokers-to-run-with-brokers) +3. [Start function workers](#start-function-workers-to-run-with-brokers) ### Enable function workers to run with brokers diff --git a/site2/docs/functions-worker-run-separately.md b/site2/docs/functions-worker-run-separately.md index 2016c0ce838dd..a75ceba274dfa 100644 --- a/site2/docs/functions-worker-run-separately.md +++ b/site2/docs/functions-worker-run-separately.md @@ -6,11 +6,11 @@ sidebar_label: "Run function workers separately" The following diagram illustrates how function workers run as a separate process in separate machines. -![assets/functions-worker-separated.svg](/assets/functions-worker-separated.svg) +![assets/functions-worker-separated.svg](/assets/function-workers-separated.svg) :::note -The `---Service URLs---` in the illustration represent Pulsar service URLs that Pulsar client and Pulsar admin use to connect to a Pulsar cluster. +The `Service URLs` in the illustration represent Pulsar service URLs that Pulsar client and Pulsar admin use to connect to a Pulsar cluster. ::: @@ -233,7 +233,13 @@ Before starting function workers, make sure [function runtime](functions-runtime When you are running function workers in a separate cluster, the admin rest endpoints are split into two clusters as shown in the following figure. The `functions`, `function-worker`, `source`, and `sink` endpoints are now served by the worker cluster, while all the other remaining endpoints are served by the broker cluster. This requires you to use the right service URL accordingly in the `pulsar-admin` CLI. To address this inconvenience, you can start a proxy cluster that serves as the central entry point of the admin service for routing admin rest requests. -![assets/functions-worker-separated-proxy.svg](/assets/functions-worker-separated-proxy.svg) +![assets/functions-worker-separated-proxy.svg](/assets/function-workers-separated-with-proxy.svg) + +:::tip + +If you haven't set up a proxy cluster yet, follow the [instructions](administration-proxy.md) to deploy one. + +::: To enable a proxy for routing function-related admin requests to function workers, you can edit the `conf/proxy.conf` file to modify the following settings: @@ -243,9 +249,3 @@ functionWorkerWebServiceURL= functionWorkerWebServiceURLTLS= ``` - -:::tip - -If you haven't set up a proxy cluster yet, follow the [instructions](administration-proxy.md) to deploy one. - -::: diff --git a/site2/docs/functions-worker.md b/site2/docs/functions-worker.md index 5312d377fb674..c832baa105b0c 100644 --- a/site2/docs/functions-worker.md +++ b/site2/docs/functions-worker.md @@ -5,7 +5,14 @@ sidebar_label: "Set up function workers" --- You have two ways to set up [function workers](function-concepts.md#function-worker). -- [run function workers with brokers](functions-worker-corun.md). Use it when: +- [Run function workers with brokers](functions-worker-corun.md). Use it when: - resource isolation is not required when running functions in process or thread mode; - you configure the function workers to run functions on Kubernetes (where the resource isolation problem is addressed by Kubernetes). -- [run function workers separately](functions-worker-run-separately.md). Use it when you want to separate functions and brokers. +- [Run function workers separately](functions-worker-run-separately.md). Use it when you want to separate functions and brokers. + +**Optional configurations** +* [Enable stateful functions](functions-worker-stateful) +* [Configure function workers for geo-replicated clusters](functions-worker-for-geo-replication) + +**Reference** +* [Troubleshooting](functions-worker-troubleshooting) \ No newline at end of file diff --git a/site2/website/sidebars.json b/site2/website/sidebars.json index 2961629a2fa3b..54ca3f423b30d 100644 --- a/site2/website/sidebars.json +++ b/site2/website/sidebars.json @@ -44,12 +44,111 @@ "label": "Pulsar Functions", "items": [ "functions-overview", - "functions-runtime", - "functions-worker", - "functions-develop", - "functions-package", - "functions-debug", - "functions-deploy", + "functions-concepts", + { + "type": "category", + "label": "Set up function workers", + "link": { + "type": "doc", + "id": "functions-worker" + }, + "items": [ + "functions-worker-corun", + "functions-worker-run-separately", + "functions-worker-stateful", + "functions-worker-for-geo-replication", + "functions-worker-troubleshooting" + ] + }, + { + "type": "category", + "label": "Configure function runtime", + "link": { + "type": "doc", + "id": "functions-runtime" + }, + "items": [ + "functions-runtime-thread", + "functions-runtime-process", + "functions-runtime-kubernetes", + "functions-runtime-java-options" + ] + }, + { + "type": "category", + "label": "How-to: Deploy", + "link": { + "type": "doc", + "id": "functions-deploy" + }, + "items": [ + "functions-deploy-arguments", + "functions-deploy-localrun", + { + "type": "category", + "label": "Deploy a function in cluster mode", + "link": { + "type": "doc", + "id": "functions-deploy-cluster" + }, + "items": [ + "functions-deploy-cluster-resource", + "functions-deploy-cluster-parallelism", + "functions-deploy-cluster-encryption", + "functions-deploy-cluster-package" + ] + }, + "functions-deploy-trigger" + ] + }, + { + "type": "category", + "label": "How-to: Develop", + "link": { + "type": "doc", + "id": "functions-develop" + }, + "items": [ + "functions-develop-api", + "functions-develop-user-defined-configs", + "functions-develop-log", + "functions-develop-metrics", + "functions-develop-security", + "functions-develop-state", + "functions-develop-admin-api", + "functions-develop-schema-registry", + "functions-develop-serde", + "functions-develop-tutorial" + ] + }, + { + "type": "category", + "label": "How-to: Debug", + "link": { + "type": "doc", + "id": "functions-debug" + }, + "items": [ + "functions-debug-stderr", + "functions-debug-unit-test", + "functions-debug-localrun", + "functions-debug-log-topic", + "functions-debug-cli" + ] + }, + { + "type": "category", + "label": "How-to: Package", + "link": { + "type": "doc", + "id": "functions-package" + }, + "items": [ + "functions-package-java", + "functions-package-python", + "functions-package-go" + ] + }, "functions-cli", "window-functions-context" ] From b95f005244c573ebe464c032496f4731bdb86aca Mon Sep 17 00:00:00 2001 From: momo-jun Date: Wed, 8 Jun 2022 16:31:59 +0800 Subject: [PATCH 4/9] updates --- site2/docs/functions-develop-security.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/site2/docs/functions-develop-security.md b/site2/docs/functions-develop-security.md index ca30d5eab177c..4b0eb19766c30 100644 --- a/site2/docs/functions-develop-security.md +++ b/site2/docs/functions-develop-security.md @@ -13,19 +13,22 @@ import TabItem from '@theme/TabItem'; If you want to enable security on functions, you need to [enable security settings](functions-worker.md#enable-security-settings) on function workers first. -## Procedures -To use the secret APIs from the context, you need to set `secretsProviderConfiguratorClassName` and `secretsProviderConfiguratorConfig` for function workers. +## Configure function workers -The `org.apache.pulsar.functions.secretsproviderconfigurator.SecretsProviderConfigurator` interface is used by function workers to choose the `SecretProvider` class name (if any) and its associated configurations at the time of starting the function instances. +To use the secret APIs from the context, you need to set the following two parameters for function workers. +* `secretsProviderConfiguratorClassName` +* `secretsProviderConfiguratorConfig` Pulsar Functions provided two types of `SecretsProviderConfigurator` implementation and both can be used as the value of `secretsProviderConfiguratorClassName` directly: * `org.apache.pulsar.functions.secretsproviderconfigurator.DefaultSecretsProviderConfigurator`: This is a barebones version of a secrets provider which wires in `ClearTextSecretsProvider` to the function instances. * `org.apache.pulsar.functions.secretsproviderconfigurator.KubernetesSecretsProviderConfigurator`: This is used by default for running in Kubernetes and it uses kubernetes built-in secrets and bind them as environment variables (via `EnvironmentBasedSecretsProvider`) within the function container to ensure that the secrets are available to the function at runtime. -You can also implemet your own `SecretsProviderConfigurator` if you want to use different `SecretsProvider` for function instances. +Function workers use the `org.apache.pulsar.functions.secretsproviderconfigurator.SecretsProviderConfigurator` interface to choose the `SecretsProvider` class name and its associated configurations at the time of starting the function instances. + +Function instances use the `org.apache.pulsar.functions.secretsprovider.SecretsProvider` interface to fetch the secrets. The implementation that `SecretsProvider` uses is determined by `SecretsProviderConfigurator`. -The `org.apache.pulsar.functions.secretsprovider.SecretsProvider` interface is used by the function instances/containers to actually fetch the secrets. The implementation that `SecretsProvider` uses is determined by `SecretsProviderConfigurator`. +You can also implemet your own `SecretsProviderConfigurator` if you want to use different `SecretsProvider` for function instances. :::note From d2a0cbc5b964c433147959e89d6ffcd9087eabbf Mon Sep 17 00:00:00 2001 From: momo-jun Date: Thu, 9 Jun 2022 14:37:19 +0800 Subject: [PATCH 5/9] minor updates --- site2/docs/functions-develop-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site2/docs/functions-develop-state.md b/site2/docs/functions-develop-state.md index ab9d3ccd0722d..2441c73389edc 100644 --- a/site2/docs/functions-develop-state.md +++ b/site2/docs/functions-develop-state.md @@ -27,7 +27,7 @@ Pulsar Functions expose APIs for mutating and accessing `state`. These APIs are The following table outlines the states that can be accessed within Java and Python functions. -| State-related API | API for Java | Python | +| State-related API | Java | Python | |-----------------------------------------|----------------------------------------|----------------| | [Increment counter](#increment-counter) | `incrCounter`
`incrCounterAsync` | `incr_counter` | | [Retrieve counter](#retrieve-counter) | `getCounter`
`getCounterAsync` | `get_counter` | From 42c7cbd399dc586d240a70d8644f284784d99474 Mon Sep 17 00:00:00 2001 From: momo-jun Date: Fri, 10 Jun 2022 15:51:59 +0800 Subject: [PATCH 6/9] add a new topic "Get started" --- site2/docs/functions-quickstart.md | 576 ++++++++++++++++++++++++++++- site2/website/sidebars.json | 1 + 2 files changed, 575 insertions(+), 2 deletions(-) diff --git a/site2/docs/functions-quickstart.md b/site2/docs/functions-quickstart.md index 722d5bca2f659..c8a170b188468 100644 --- a/site2/docs/functions-quickstart.md +++ b/site2/docs/functions-quickstart.md @@ -1,5 +1,577 @@ --- id: functions-quickstart title: Getting started with Pulsar Functions -sidebar_label: "Getting started" ---- \ No newline at end of file +sidebar_label: "Get started" +--- + +This hands-on tutorial provides step-by-step instructions and examples on how to create and validate functions in a [standalone Pulsar](getting-started-standalone.md), including stateful functions and window functions. + +## Prerequisites + +- JDK 8+. For more details, refer to [Pulsar runtime Java version recommendation](https://github.com/apache/pulsar#pulsar-runtime-java-version-recommendation). +- Windows OS is not supported. + +## Start standalone Pulsar + +1. Start Pulsar locally. + + ```bash + bin/pulsar standalone + ``` + + All the components (including ZooKeeper, BookKeeper, broker, and so on) of a Pulsar service start in order. You can curl those Pulsar service endpoints to make sure the Pulsar service is up and running correctly. + + If you have started Pulsar successfully, you can see the INFO-level log messages like this: + + ```text + 2022-06-01 14:46:29,192 - INFO - [main:WebSocketService@95] - Configuration Store cache started + 2022-06-01 14:46:29,192 - INFO - [main:AuthenticationService@61] - Authentication is disabled + 2022-06-01 14:46:29,192 - INFO - [main:WebSocketService@108] - Pulsar WebSocket Service star + ``` + +2. Check the Pulsar binary protocol port. + + ```bash + telnet localhost 6650 + ``` + +3. Check the Pulsar Function cluster. + + ```bash + curl -s http://localhost:8080/admin/v2/worker/cluster + ``` + + **Output** + + ```json + [{"workerId":"c-standalone-fw-localhost-6750","workerHostname":"localhost","port":6750}] + ``` + +4. Make sure a public tenant and a default namespace exist. + + ```bash + curl -s http://localhost:8080/admin/v2/namespaces/public + ``` + + **Output** + + ```json + ["public/default","public/functions"] + ``` + +5. Make sure the table service is enabled successfully. + + ```bash + telnet localhost 4181 + ``` + + **Output** + + ```text + Trying ::1... + telnet: connect to address ::1: Connection refused + Trying 127.0.0.1... + Connected to localhost. + Escape character is '^]'. + ``` + +## Start functions + +:::note + +Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). + +::: + +1. Create a tenant and a namespace. + + ```bash + bin/pulsar-admin tenants create test + bin/pulsar-admin namespaces create test/test-namespace + ``` + +2. In the same terminal window as step 1, verify the tenant and the namespace. + + ```bash + bin/pulsar-admin namespaces list test + ``` + + **Output** + + This output shows that both tenant and namespace are created successfully. + + ```text + "test/test-namespace" + ``` + +3. In the same terminal window as step 1, create a function named `examples`. + + :::tip + + You can see both the `example-function-config.yaml` and `api-examples.jar` files under the `examples` folder of the Pulsar’s directory on your local machine. + + ::: + + ```bash + bin/pulsar-admin functions create \ + --function-config-file examples/example-function-config.yaml \ + --jar examples/api-examples.jar + ``` + + **Output** + + ```text + Created Successfully + ``` + +4. In the same terminal window as step 1, verify the function's configurations. + + ```bash + bin/pulsar-admin functions get \ + --tenant test \ + --namespace test-namespace \ + --name example + ``` + + **Output** + + ```text + { + "tenant": "test", + "namespace": "test-namespace", + "name": "example", + "className": "org.apache.pulsar.functions.api.examples.ExclamationFunction", + "userConfig": "{\"PublishTopic\":\"test_result\"}", + "autoAck": true, + "parallelism": 1, + "source": { + "topicsToSerDeClassName": { + "test_src": "" + }, + "typeClassName": "java.lang.String" + }, + "sink": { + "topic": "test_result", + "typeClassName": "java.lang.String" + }, + "resources": {} + } + ``` + +5. In the same terminal window as step 1, verify the function's status. + + ```bash + bin/pulsar-admin functions status \ + --tenant test \ + --namespace test-namespace \ + --name example + ``` + + **Output** + + `"running": true` shows that the function is running. + + ```text + { + "numInstances" : 1, + "numRunning" : 1, + "instances" : [ { + "instanceId" : 0, + "status" : { + "running" : true, + "error" : "", + "numRestarts" : 0, + "numReceived" : 0, + "numSuccessfullyProcessed" : 0, + "numUserExceptions" : 0, + "latestUserExceptions" : [ ], + "numSystemExceptions" : 0, + "latestSystemExceptions" : [ ], + "averageLatency" : 0.0, + "lastInvocationTime" : 0, + "workerId" : "c-standalone-fw-localhost-8080" + } + } ] + } + ``` + +6. In the same terminal window as step 1, subscribe to the **output topic** `test_result`. + + ```bash + bin/pulsar-client consume -s test-sub -n 0 test_result + ``` + +7. In a new terminal window, produce messages to the **input topic** `test_src`. + + ```bash + bin/pulsar-client produce -m "test-messages-`date`" -n 10 test_src + ``` + +8. In the same terminal window as step 1, the messages produced by the `example` function are returned. + + **Output** + + ```text + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ``` + +## Start stateful functions + +The standalone mode of Pulsar enables BookKeeper table service for stateful functions. For more information, see [Configure state storage](functions-develop-state.md). + +The following example provides instructions to validate counter functions. + +:::note + +Before starting stateful functions, you need to [start Pulsar](#start-standalone-pulsar). + +::: + +1. Create a function named `word_count`. + + ```bash + bin/pulsar-admin functions create \ + --function-config-file examples/example-function-config.yaml \ + --jar examples/api-examples.jar \ + --name word_count \ + --className org.apache.pulsar.functions.api.examples.WordCountFunction \ + --inputs test_wordcount_src \ + --output test_wordcount_dest + ``` + + **Output** + + ```text + Created Successfully + ``` + +2. In the same terminal window as step 1, get the information of the `word_count` function. + + ```bash + bin/pulsar-admin functions get \ + --tenant test \ + --namespace test-namespace \ + --name word_count + ``` + + **Output** + + ```text + { + "tenant": "test", + "namespace": "test-namespace", + "name": "word_count", + "className": "org.apache.pulsar.functions.api.examples.WordCountFunction", + "inputSpecs": { + "test_wordcount_src": { + "isRegexPattern": false + } + }, + "output": "test_wordcount_dest", + "processingGuarantees": "ATLEAST_ONCE", + "retainOrdering": false, + "userConfig": { + "PublishTopic": "test_result" + }, + "runtime": "JAVA", + "autoAck": true, + "parallelism": 1, + "resources": { + "cpu": 1.0, + "ram": 1073741824, + "disk": 10737418240 + }, + "cleanupSubscription": true + } + ``` + +3. In the same terminal window as step 1, get the status of the `word_count` function. + + ```bash + bin/pulsar-admin functions status \ + --tenant test \ + --namespace test-namespace\ + --name word_count + ``` + + **Output** + + ```text + { + "numInstances" : 1, + "numRunning" : 1, + "instances" : [ { + "instanceId" : 0, + "status" : { + "running" : true, + "error" : "", + "numRestarts" : 0, + "numReceived" : 0, + "numSuccessfullyProcessed" : 0, + "numUserExceptions" : 0, + "latestUserExceptions" : [ ], + "numSystemExceptions" : 0, + "latestSystemExceptions" : [ ], + "averageLatency" : 0.0, + "lastInvocationTime" : 0, + "workerId" : "c-standalone-fw-localhost-8080" + } + } ] + } + ``` + +4. In the same terminal window as step 1, query the state table for the function with the key `hello`. This operation watches the changes associated with `hello`. + + ```bash + bin/pulsar-admin functions querystate \ + --tenant test \ + --namespace test-namespace \ + --name word_count -k hello -w + ``` + + :::tip + + For more information about the `pulsar-admin functions querystate options` command, including flags, descriptions, default values, and shorthands, see [Admin API](admin-api-functions#fetch-state-associated-with-a-function). + + ::: + + **Output** + + ```text + key 'hello' doesn't exist. + key 'hello' doesn't exist. + key 'hello' doesn't exist. + ... + ``` + +5. In a new terminal window, produce 10 messages with `hello` to the **input topic** `test_wordcount_src` using one of the following methods. The value of `hello` is updated to 10. + + * **Method 1** + + ```bash + bin/pulsar-client produce -m "hello" -n 10 test_wordcount_src + ``` + + * **Method 2** + + ```bash + bin/pulsar-admin functions putstate \ + --tenant test \ + --namespace test-namespace \ + --name word_count hello-word \ + ``` + + :::tip + + For more information about the `pulsar-admin functions putstate options` command, including flags, descriptions, default values, and shorthands, see [Admin API](admin-api-functions/#put-state-associated-with-a-function). + + ::: + +6. In the same terminal window as step 1, check the result. + + The result shows that the **output topic** `test_wordcount_dest` receives the messages. + + **Output** + + ```json + { + "key": "hello", + "numberValue": 10, + "version": 9 + } + ``` + +7. In the terminal window as step 5, produce another 10 messages with `hello`. The value of `hello` is updated to 20. + + ```bash + bin/pulsar-client produce -m "hello" -n 10 test_wordcount_src + ``` + +8. In the same terminal window as step 1, check the result. + + The result shows that the **output topic** `test_wordcount_dest` receives the value of 20. + + ```text + value = 10 + value = 20 + ``` + +## Start window functions + +Window functions are a special form of Pulsar Functions. For more information, see [concepts](functions-concepts.md#window-function). + +:::note + +Before starting window functions, you need to [start Pulsar](#start-standalone-pulsar). + +::: + +1. Create a tenant and a namespace. + + ```bash + bin/pulsar-admin tenants create test + bin/pulsar-admin namespaces create test/test-namespace + ``` + +2. In the same terminal window as step 1, verify the tenant and the namespace. + + ```bash + bin/pulsar-admin namespaces list test + ``` + + **Output** + + This output shows that both tenant and namespace are created successfully. + + ```text + "test/test-namespace" + ``` + +3. In the same terminal window as step 1, create a function named `example`. + + :::tip + + You can see both `example-window-function-config.yaml` and `api-examples.jar` files under the `examples` folder of the Pulsar’s directory on your local machine. + + ::: + + ```bash + bin/pulsar-admin functions create --function-config-file \ + examples/example-window-function-config.yaml \ + --jar examples/api-examples.jar + ``` + + **Output** + + ```text + Created Successfully + ``` + +4. In the same terminal window as step 1, verify the function's configurations. + + ```bash + bin/pulsar-admin functions get \ + --tenant test \ + --namespace test-namespace \ + --name example + ``` + + **Output** + + ```text + { + "tenant": "test", + "namespace": "test-namespace", + "name": "example", + "className": "org.apache.pulsar.functions.api.examples.ExclamationFunction", + "userConfig": "{\"PublishTopic\":\"test_result\"}", + "autoAck": true, + "parallelism": 1, + "source": { + "topicsToSerDeClassName": { + "test_src": "" + }, + "typeClassName": "java.lang.String" + }, + "sink": { + "topic": "test_result", + "typeClassName": "java.lang.String" + }, + "resources": {} + } + ``` + +5. In the same terminal window as step 1, verify the function’s status. + + ```bash + bin/pulsar-admin functions status \ + --tenant test \ + --namespace test-namespace \ + --name example + ``` + + **Output** + + `"running": true` shows that the function is running. + + ```text + { + "numInstances" : 1, + "numRunning" : 1, + "instances" : [ { + "instanceId" : 0, + "status" : { + "running" : true, + "error" : "", + "numRestarts" : 0, + "numReceived" : 0, + "numSuccessfullyProcessed" : 0, + "numUserExceptions" : 0, + "latestUserExceptions" : [ ], + "numSystemExceptions" : 0, + "latestSystemExceptions" : [ ], + "averageLatency" : 0.0, + "lastInvocationTime" : 0, + "workerId" : "c-standalone-fw-localhost-8080" + } + } ] + } + ``` + +6. In the same terminal window as step 1, subscribe to the **output topic** `test_result`. + + ```bash + bin/pulsar-client consume -s test-sub -n 0 test_result + ``` + +7. In a new terminal window, produce messages to the **input topic** `test_src`. + + ```bash + bin/pulsar-client produce -m "test-messages-`date`" -n 10 test_src + ``` + +8. In the same terminal window as step 1, the messages produced by the window function `example` are returned. + + **Output** + + ```text + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ----- got message ----- + test-messages-Thu Jul 19 11:59:15 PDT 2018! + ``` \ No newline at end of file diff --git a/site2/website/sidebars.json b/site2/website/sidebars.json index 54ca3f423b30d..f71b47687ef34 100644 --- a/site2/website/sidebars.json +++ b/site2/website/sidebars.json @@ -45,6 +45,7 @@ "items": [ "functions-overview", "functions-concepts", + "functions-quickstart", { "type": "category", "label": "Set up function workers", From 19305d5c5f190698481f63f7a7aee15a6229f2f8 Mon Sep 17 00:00:00 2001 From: momo-jun Date: Mon, 13 Jun 2022 14:29:46 +0800 Subject: [PATCH 7/9] update broken links --- site2/docs/functions-deploy-cluster-package.md | 2 +- site2/docs/functions-quickstart.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/site2/docs/functions-deploy-cluster-package.md b/site2/docs/functions-deploy-cluster-package.md index 97ca754f016be..0295a785e6cca 100644 --- a/site2/docs/functions-deploy-cluster-package.md +++ b/site2/docs/functions-deploy-cluster-package.md @@ -6,7 +6,7 @@ sidebar_label: "Enable package management service" [Package management service](admin-api-packages) enables both version management and simplified upgrade/rollback processes for functions, sinks, and sources. When using the same function, sink, and source in different namespaces, you can upload them to a common package management system. -With the package management service enabled, you can [upload your function package](admin-api-packages.md#upload-a-package) to the service and get the [package URL](admin-api-packages.md#package-url). Thus you can create the function by setting `--jar`, `--py`, or `--go` to the package URL with the [`pulsar-admin`](/tools/pulsar-admin/) CLI. +With the package management service enabled, you can [upload your function package](/tools/pulsar-admin/) to the service and get the package URL. Thus you can create the function by setting `--jar`, `--py`, or `--go` to the package URL. By default, the package management service is disabled. To enable it in your cluster, set the properties in the `conf/broker.conf` file as follows. diff --git a/site2/docs/functions-quickstart.md b/site2/docs/functions-quickstart.md index c8a170b188468..87f8fd76fe952 100644 --- a/site2/docs/functions-quickstart.md +++ b/site2/docs/functions-quickstart.md @@ -350,7 +350,7 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone :::tip - For more information about the `pulsar-admin functions querystate options` command, including flags, descriptions, default values, and shorthands, see [Admin API](admin-api-functions#fetch-state-associated-with-a-function). + For more information about the `pulsar-admin functions querystate options` command, including flags, descriptions, default values, and shorthands, see [Admin API](/tools/pulsar-admin/). ::: @@ -382,7 +382,7 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone :::tip - For more information about the `pulsar-admin functions putstate options` command, including flags, descriptions, default values, and shorthands, see [Admin API](admin-api-functions/#put-state-associated-with-a-function). + For more information about the `pulsar-admin functions putstate options` command, including flags, descriptions, default values, and shorthands, see [Admin API](/tools/pulsar-admin/). ::: From a7b23dc5f115e772c26de5523314b467b746f2ee Mon Sep 17 00:00:00 2001 From: momo-jun Date: Fri, 17 Jun 2022 15:19:52 +0800 Subject: [PATCH 8/9] add a new task topic to config temp file path --- site2/docs/functions-worker-temp-file-path.md | 14 ++++++++++++++ site2/docs/functions-worker.md | 7 ++++--- site2/website/sidebars.json | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 site2/docs/functions-worker-temp-file-path.md diff --git a/site2/docs/functions-worker-temp-file-path.md b/site2/docs/functions-worker-temp-file-path.md new file mode 100644 index 0000000000000..5bc43874c75ce --- /dev/null +++ b/site2/docs/functions-worker-temp-file-path.md @@ -0,0 +1,14 @@ +--- +id: functions-worker-tmp-file-path +title: Configure temporary file path +sidebar_label: "Configure temporary file path" +--- + +Function workers use `java.io.tmpdir` in the JVM as the default temporary file path, which is also used as the default extraction file path for each NAR package. NAR packages require a local file path to extract and load to the Java class loader. + +If you want to change the default extraction file path for NAR packages to another directory, you can add the following parameter with the desired directory in the `functions_worker.yml` file. The configuration varies depending on the [function runtime](functions-concepts.md#function-runtime) you are using. + +| Function runtime | Configuration for temporary file path | +|:------------------------|:-------------------------------------------------| +| [Thread runtime](functions-runtime-thread.md)
[Process runtime](functions-runtime-process) | `narExtractionDirectory` | +| [Kubernetes runtime](functions-runtime-kubernetes) | `functionRuntimeFactoryConfigs.narExtractionDirectory` | diff --git a/site2/docs/functions-worker.md b/site2/docs/functions-worker.md index f1a2adf1b8dc7..c785c05cf3662 100644 --- a/site2/docs/functions-worker.md +++ b/site2/docs/functions-worker.md @@ -11,8 +11,9 @@ You have two ways to set up [function workers](function-concepts.md#function-wor - [Run function workers separately](functions-worker-run-separately.md). Use it when you want to separate functions and brokers. **Optional configurations** -* [Enable stateful functions](functions-worker-stateful) -* [Configure function workers for geo-replicated clusters](functions-worker-for-geo-replication) +* [Configure temporary file path](functions-worker-tmp-file-path.md) +* [Enable stateful functions](functions-worker-stateful.md) +* [Configure function workers for geo-replicated clusters](functions-worker-for-geo-replication.md) **Reference** -* [Troubleshooting](functions-worker-troubleshooting) +* [Troubleshooting](functions-worker-troubleshooting.md) diff --git a/site2/website/sidebars.json b/site2/website/sidebars.json index f71b47687ef34..be4f3b0d796a9 100644 --- a/site2/website/sidebars.json +++ b/site2/website/sidebars.json @@ -56,6 +56,7 @@ "items": [ "functions-worker-corun", "functions-worker-run-separately", + "functions-worker-tmp-file-path", "functions-worker-stateful", "functions-worker-for-geo-replication", "functions-worker-troubleshooting" From acf1ba8508b6b8c7fd132fc3c22c24f61bab97a4 Mon Sep 17 00:00:00 2001 From: momo-jun Date: Fri, 17 Jun 2022 15:36:51 +0800 Subject: [PATCH 9/9] update "quickstart" as per review comments --- site2/docs/functions-quickstart.md | 166 +++++++++++++++++++++++------ 1 file changed, 132 insertions(+), 34 deletions(-) diff --git a/site2/docs/functions-quickstart.md b/site2/docs/functions-quickstart.md index 87f8fd76fe952..93d655468786a 100644 --- a/site2/docs/functions-quickstart.md +++ b/site2/docs/functions-quickstart.md @@ -16,63 +16,87 @@ This hands-on tutorial provides step-by-step instructions and examples on how to 1. Start Pulsar locally. ```bash - bin/pulsar standalone - ``` - All the components (including ZooKeeper, BookKeeper, broker, and so on) of a Pulsar service start in order. You can curl those Pulsar service endpoints to make sure the Pulsar service is up and running correctly. - - If you have started Pulsar successfully, you can see the INFO-level log messages like this: + bin/pulsar standalone - ```text - 2022-06-01 14:46:29,192 - INFO - [main:WebSocketService@95] - Configuration Store cache started - 2022-06-01 14:46:29,192 - INFO - [main:AuthenticationService@61] - Authentication is disabled - 2022-06-01 14:46:29,192 - INFO - [main:WebSocketService@108] - Pulsar WebSocket Service star ``` + All the components (including ZooKeeper, BookKeeper, broker, and so on) of a Pulsar service start in order. You can use the `bin/pulsar-admin brokers healthcheck` command to make sure the Pulsar service is up and running. + 2. Check the Pulsar binary protocol port. ```bash + telnet localhost 6650 + ``` 3. Check the Pulsar Function cluster. ```bash - curl -s http://localhost:8080/admin/v2/worker/cluster + + bin/pulsar-admin functions-worker get-cluster + ``` **Output** ```json + [{"workerId":"c-standalone-fw-localhost-6750","workerHostname":"localhost","port":6750}] + ``` -4. Make sure a public tenant and a default namespace exist. +4. Make sure a public tenant exists. ```bash - curl -s http://localhost:8080/admin/v2/namespaces/public + + bin/pulsar-admin tenants list + ``` **Output** ```json - ["public/default","public/functions"] + + "public" + + ``` + +5. Make sure a default namespace exists. + + ```bash + + bin/pulsar-admin namespaces list public + + ``` + + **Output** + + ```json + + "public/default" + ``` -5. Make sure the table service is enabled successfully. +6. Make sure the table service is enabled successfully. ```bash + telnet localhost 4181 + ``` **Output** ```text + Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. + ``` ## Start functions @@ -86,14 +110,18 @@ Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). 1. Create a tenant and a namespace. ```bash + bin/pulsar-admin tenants create test bin/pulsar-admin namespaces create test/test-namespace + ``` 2. In the same terminal window as step 1, verify the tenant and the namespace. ```bash + bin/pulsar-admin namespaces list test + ``` **Output** @@ -101,7 +129,9 @@ Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). This output shows that both tenant and namespace are created successfully. ```text + "test/test-namespace" + ``` 3. In the same terminal window as step 1, create a function named `examples`. @@ -113,29 +143,36 @@ Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). ::: ```bash + bin/pulsar-admin functions create \ --function-config-file examples/example-function-config.yaml \ --jar examples/api-examples.jar + ``` **Output** ```text + Created Successfully + ``` 4. In the same terminal window as step 1, verify the function's configurations. ```bash + bin/pulsar-admin functions get \ --tenant test \ --namespace test-namespace \ --name example + ``` **Output** ```text + { "tenant": "test", "namespace": "test-namespace", @@ -156,15 +193,18 @@ Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). }, "resources": {} } + ``` 5. In the same terminal window as step 1, verify the function's status. ```bash + bin/pulsar-admin functions status \ --tenant test \ --namespace test-namespace \ --name example + ``` **Output** @@ -172,6 +212,7 @@ Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). `"running": true` shows that the function is running. ```text + { "numInstances" : 1, "numRunning" : 1, @@ -193,18 +234,23 @@ Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). } } ] } + ``` 6. In the same terminal window as step 1, subscribe to the **output topic** `test_result`. ```bash + bin/pulsar-client consume -s test-sub -n 0 test_result + ``` 7. In a new terminal window, produce messages to the **input topic** `test_src`. ```bash + bin/pulsar-client produce -m "test-messages-`date`" -n 10 test_src + ``` 8. In the same terminal window as step 1, the messages produced by the `example` function are returned. @@ -212,26 +258,28 @@ Before starting functions, you need to [start Pulsar](#start-standalone-pulsar). **Output** ```text + ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! + ``` ## Start stateful functions @@ -249,6 +297,7 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone 1. Create a function named `word_count`. ```bash + bin/pulsar-admin functions create \ --function-config-file examples/example-function-config.yaml \ --jar examples/api-examples.jar \ @@ -256,26 +305,32 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone --className org.apache.pulsar.functions.api.examples.WordCountFunction \ --inputs test_wordcount_src \ --output test_wordcount_dest + ``` **Output** ```text + Created Successfully + ``` 2. In the same terminal window as step 1, get the information of the `word_count` function. ```bash + bin/pulsar-admin functions get \ --tenant test \ --namespace test-namespace \ --name word_count + ``` **Output** ```text + { "tenant": "test", "namespace": "test-namespace", @@ -302,20 +357,24 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone }, "cleanupSubscription": true } + ``` 3. In the same terminal window as step 1, get the status of the `word_count` function. ```bash + bin/pulsar-admin functions status \ --tenant test \ --namespace test-namespace\ --name word_count + ``` **Output** ```text + { "numInstances" : 1, "numRunning" : 1, @@ -337,15 +396,18 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone } } ] } + ``` 4. In the same terminal window as step 1, query the state table for the function with the key `hello`. This operation watches the changes associated with `hello`. ```bash + bin/pulsar-admin functions querystate \ --tenant test \ --namespace test-namespace \ --name word_count -k hello -w + ``` :::tip @@ -357,10 +419,12 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone **Output** ```text + key 'hello' doesn't exist. key 'hello' doesn't exist. key 'hello' doesn't exist. ... + ``` 5. In a new terminal window, produce 10 messages with `hello` to the **input topic** `test_wordcount_src` using one of the following methods. The value of `hello` is updated to 10. @@ -368,16 +432,20 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone * **Method 1** ```bash + bin/pulsar-client produce -m "hello" -n 10 test_wordcount_src + ``` * **Method 2** ```bash + bin/pulsar-admin functions putstate \ --tenant test \ --namespace test-namespace \ --name word_count hello-word \ + ``` :::tip @@ -393,17 +461,21 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone **Output** ```json + { "key": "hello", "numberValue": 10, "version": 9 } + ``` 7. In the terminal window as step 5, produce another 10 messages with `hello`. The value of `hello` is updated to 20. ```bash + bin/pulsar-client produce -m "hello" -n 10 test_wordcount_src + ``` 8. In the same terminal window as step 1, check the result. @@ -411,8 +483,10 @@ Before starting stateful functions, you need to [start Pulsar](#start-standalone The result shows that the **output topic** `test_wordcount_dest` receives the value of 20. ```text + value = 10 value = 20 + ``` ## Start window functions @@ -428,14 +502,18 @@ Before starting window functions, you need to [start Pulsar](#start-standalone-p 1. Create a tenant and a namespace. ```bash + bin/pulsar-admin tenants create test bin/pulsar-admin namespaces create test/test-namespace + ``` 2. In the same terminal window as step 1, verify the tenant and the namespace. ```bash + bin/pulsar-admin namespaces list test + ``` **Output** @@ -443,7 +521,9 @@ Before starting window functions, you need to [start Pulsar](#start-standalone-p This output shows that both tenant and namespace are created successfully. ```text + "test/test-namespace" + ``` 3. In the same terminal window as step 1, create a function named `example`. @@ -455,29 +535,36 @@ Before starting window functions, you need to [start Pulsar](#start-standalone-p ::: ```bash + bin/pulsar-admin functions create --function-config-file \ examples/example-window-function-config.yaml \ --jar examples/api-examples.jar + ``` **Output** ```text + Created Successfully + ``` 4. In the same terminal window as step 1, verify the function's configurations. ```bash + bin/pulsar-admin functions get \ --tenant test \ --namespace test-namespace \ --name example + ``` **Output** ```text + { "tenant": "test", "namespace": "test-namespace", @@ -498,15 +585,18 @@ Before starting window functions, you need to [start Pulsar](#start-standalone-p }, "resources": {} } + ``` 5. In the same terminal window as step 1, verify the function’s status. ```bash + bin/pulsar-admin functions status \ --tenant test \ --namespace test-namespace \ --name example + ``` **Output** @@ -514,6 +604,7 @@ Before starting window functions, you need to [start Pulsar](#start-standalone-p `"running": true` shows that the function is running. ```text + { "numInstances" : 1, "numRunning" : 1, @@ -535,18 +626,23 @@ Before starting window functions, you need to [start Pulsar](#start-standalone-p } } ] } + ``` 6. In the same terminal window as step 1, subscribe to the **output topic** `test_result`. ```bash + bin/pulsar-client consume -s test-sub -n 0 test_result + ``` 7. In a new terminal window, produce messages to the **input topic** `test_src`. ```bash + bin/pulsar-client produce -m "test-messages-`date`" -n 10 test_src + ``` 8. In the same terminal window as step 1, the messages produced by the window function `example` are returned. @@ -554,24 +650,26 @@ Before starting window functions, you need to [start Pulsar](#start-standalone-p **Output** ```text + ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! ----- got message ----- - test-messages-Thu Jul 19 11:59:15 PDT 2018! + test-messages-Thu Jul 19 11:59:15 PDT 2021! + ``` \ No newline at end of file

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%0A9pf!+>T~a_xDf5d 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 literal 0 HcmV?d00001 diff --git a/site2/docs/assets/function-instance.svg b/site2/docs/assets/function-instance.svg new file mode 100644 index 0000000000000..16c1b3b3d72bb --- /dev/null +++ b/site2/docs/assets/function-instance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site2/docs/assets/function-overview.svg b/site2/docs/assets/function-overview.svg new file mode 100644 index 0000000000000..3d391ae6a783a --- /dev/null +++ b/site2/docs/assets/function-overview.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site2/docs/assets/function-sliding-window.png b/site2/docs/assets/function-sliding-window.png new file mode 100644 index 0000000000000000000000000000000000000000..bf66a761819e43e1635f16fb1c30dd12c675e1be GIT binary patch literal 150032 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 S3kIe7SbE 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