From 8057def371604ea6c437eb739d39103b1987afe8 Mon Sep 17 00:00:00 2001 From: yanglbme Date: Wed, 9 Jan 2019 17:44:12 +0800 Subject: [PATCH] docs: update hystrix-timeout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 基于 timeout 机制为服务接口的调用超时提供安全保护 --- README.md | 3 +- docs/high-availability/hystrix-timeout.md | 104 +++++++++++++++++- .../images/220px-Internet_dog.jpg | Bin 0 -> 19199 bytes images/220px-Internet_dog.jpg | Bin 0 -> 19199 bytes 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 docs/high-availability/images/220px-Internet_dog.jpg create mode 100644 images/220px-Internet_dog.jpg diff --git a/README.md b/README.md index 68b0ff7..e89f507 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,8 @@ ### 降级 - 如何进行降级? -## 微服务架构【额外新增,待补充】 +## 微服务架构 +- [微服务架构整个章节内容属额外新增,会陆续补充完善]() - [关于微服务架构的描述](/docs/micro-services/microservices-introduction.md) ### Spring Cloud 微服务架构 \ No newline at end of file diff --git a/docs/high-availability/hystrix-timeout.md b/docs/high-availability/hystrix-timeout.md index 83fe326..8911b7c 100644 --- a/docs/high-availability/hystrix-timeout.md +++ b/docs/high-availability/hystrix-timeout.md @@ -1 +1,103 @@ -## 基于 timeout 机制为服务接口调用超时提供安全保护 \ No newline at end of file +## 基于 timeout 机制为服务接口调用超时提供安全保护 +一般来说,在调用依赖服务的接口的时候,比较常见的一个问题就是**超时**。超时是在一个复杂的分布式系统中,导致系统不稳定,或者系统抖动。出现大量超时,线程资源会被 hang 死,从而导致吞吐量大幅度下降,甚至服务崩溃。 + +你去调用各种各样的依赖服务,特别是在大公司,你甚至都不认识开发一个服务的人,你都不知道那个人的技术水平怎么样,对那个人根本不了解。 + +Peter Steiner 说过,"[On the Internet, nobody knows you're a dog](https://en.wikipedia.org/wiki/On_the_Internet,_nobody_knows_you%27re_a_dog)",也就是说在互联网的另外一头,你都不知道甚至坐着一条狗。 + +![220px-Internet_dog.jpg](/images/220px-Internet_dog.jpg) + +像特别复杂的分布式系统,特别是在大公司里,多个团队、大型协作,你可能都不知道服务是谁的,很可能说开发服务的那个哥儿们甚至是一个实习生。依赖服务的接口性能可能很不稳定,有时候 2ms,有时候 200ms,甚至 2s,都有可能。 + +如果你不对各种依赖服务接口的调用做超时控制,来给你的服务提供安全保护措施,那么很可能你的服务就被各种垃圾的依赖服务的性能给拖死了。大量的接口调用很慢,大量的线程被卡死。如果你做了资源的隔离,那么也就是线程池的线程被卡死,但其实我们可以做超时控制,没必要让它们全卡死。 + +### TimeoutMilliseconds +在 Hystrix 中,我们可以手动设置 timeout 时长,如果一个 command 运行时间超过了设定的时长,那么就被认为是 timeout,然后 Hystrix command 标识为 timeout,同时执行 fallback 降级逻辑。 + +`TimeoutMilliseconds` 默认值是 1000,也就是 1000ms。 + +```java +HystrixCommandProperties.Setter() + ..withExecutionTimeoutInMilliseconds(int) +``` + +### TimeoutEnabled +这个参数用于控制是否要打开 timeout 机制,默认值是 true。 + +```java +HystrixCommandProperties.Setter() + .withExecutionTimeoutEnabled(boolean) +``` + +## 实例 Demo +我们在 command 中,将超时时间设置为 500ms,然后在 run() 方法中,设置休眠时间 1s,这样一个请求过来,直接休眠 1s,结果就会因为超时而执行降级逻辑。 + +```java +public class GetProductInfoCommand extends HystrixCommand { + + private Long productId; + + private static final HystrixCommandKey KEY = HystrixCommandKey.Factory.asKey("GetProductInfoCommand"); + + public GetProductInfoCommand(Long productId) { + super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ProductInfoService")) + .andCommandKey(KEY) + .andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter() + .withCoreSize(8) + .withMaxQueueSize(10) + .withQueueSizeRejectionThreshold(8)) + .andCommandPropertiesDefaults(HystrixCommandProperties.Setter() + .withCircuitBreakerEnabled(true) + .withCircuitBreakerRequestVolumeThreshold(20) + .withCircuitBreakerErrorThresholdPercentage(40) + .withCircuitBreakerSleepWindowInMilliseconds(3000) + // 设置是否打开超时,默认是true + .withExecutionTimeoutEnabled(true) + // 设置超时时间,默认1000(ms) + .withExecutionTimeoutInMilliseconds(500) + .withFallbackIsolationSemaphoreMaxConcurrentRequests(30))); + this.productId = productId; + } + + @Override + protected ProductInfo run() throws Exception { + System.out.println("调用接口查询商品数据,productId=" + productId); + + // 休眠1s + TimeUtils.sleep(1); + + String url = "http://localhost:8081/getProductInfo?productId=" + productId; + String response = HttpClientUtils.sendGetRequest(url); + System.out.println(response); + return JSONObject.parseObject(response, ProductInfo.class); + } + + @Override + protected ProductInfo getFallback() { + ProductInfo productInfo = new ProductInfo(); + productInfo.setName("降级商品"); + return productInfo; + } +} +``` + +在测试类中,我们直接发起请求。 + +```java +@SpringBootTest +@RunWith(SpringRunner.class) +public class TimeoutTest { + + @Test + public void testTimeout() { + HttpClientUtils.sendGetRequest("http://localhost:8080/getProductInfo?productId=1"); + } +} +``` + +结果中可以看到,打印出了降级商品相关信息。 + +```c +ProductInfo(id=null, name=降级商品, price=null, pictureList=null, specification=null, service=null, color=null, size=null, shopId=null, modifiedTime=null, cityId=null, cityName=null, brandId=null, brandName=null) +{"id": 1, "name": "iphone7手机", "price": 5599, "pictureList":"a.jpg,b.jpg", "specification": "iphone7的规格", "service": "iphone7的售后服务", "color": "红色,白色,黑色", "size": "5.5", "shopId": 1, "modifiedTime": "2017-01-01 12:00:00", "cityId": 1, "brandId": 1} +``` \ No newline at end of file diff --git a/docs/high-availability/images/220px-Internet_dog.jpg b/docs/high-availability/images/220px-Internet_dog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3db14cabaa00b1458ff332e37125e2ff20a74083 GIT binary patch literal 19199 zcmV)qK$^e**#F=F5K2Z#MgRc;0RTt4U6b8mHWV`VxZXmoUNIxjC} zZZ3CeYiV$0WNBe8Z*pfZcWG;BFGgu>WjaZ2bY*gGWprO;Z)YxQaA*J907C!<1O)~K z1O^5L1_uWQ2nrAi3JD1c6b=sz5Em2}7#9>478)HT9~v7Y92OQJEFdE$Cn+i^86Pb$ zEhsQ0C@CoazyJ#f0QLaf0Ra&J|HJ?t000350|5a5000000000000saA1qT5G2m%TJ z!~jVU00IF61OWpA0|f*K0tX2I0RjUA1rY!S5+N}M6G0+T6f$856>))~BSKP<78fKl zVuG>3lENlKa-y=c@Fz4xQ*@J*(c=Hw00;pA002J#>VR@GG>?O&tQE*Q&**f#d}woj z?#exvwQBE`@k=yN7|=x#P|nWb6bzhsIX|E$Q+E2HSwjUvfCPve0fPX3Mn{}!#+H_r zfOjp%x}S3HcoIpTnmxZyJTR<m`~uJqKD(~X>2rACpW{p7rq3}6f)3{HMLeCi6} z>#f15;#x~34IONr-}Y5iFDoc~eS8&HDh5xH<67zcWxYyjB5FwHsEF}+=xy^((Xarp zAqxzQ{E#qyNIG#(>lMN1>Z&G;!tpBmaT`TjdxW+Q2tWoGv7aaO(CxqWhTOE*84~xj zqmqx@bcn|s^s*2EJ^PBwo;W0AU>!}+{?atFRWvmlKJu8ya7`4w{0_>G>#2%w+AC=@ ztaX;_{Un7;Flt4RC>i8(jCvS3)Z8ArdUGVAHr#6jga!*yNjzO1!OI{TEwFDbx44`o ziu-J@l#KgS^(fDe{ha6eYJW>uDh{)s82QpYjbL_8Nb{xoYd?Jt?^)%hv%xeHv`n`e z5X=~ip{j{ke*&b8YM%8{nnU|4(9}Gv^U>2=>Urn3Z*c)R{{Woo^0Ca7Hn=B=8Z?-D zs*JcQ8|ugP^Yf?rT3T8FzChD@msJZwvc*%jrCdMdVzZB=^nd)#P`;PYM^_Hwk`X;E z#*((D+H_tm9%OI^N9OH_Bf#t9IybWJ3#DBQEqbU$r-h1``z#%Jg=XWB-%%m4=k)_R zjk_(*8zV7{;O}5R1rfp z(B3KwnNAGM5;NNmC%(Qr_|&CmsQbE(Nm{1cZ}uZopJF7Hfdl^l)c|wWhW`L*T8o5U znQhAJg+%oAwRPMoBcmUO4kf2>RnR-~!VWp)en*3TFBkVgC%+)84#o}vKLj0In>%~&9fwDY)boUE;v(ruqLdsP1 zNFamQAc8-Zp5$PDy3bkG20q`%OzP{F305f4=bew_Om+H`@HDDgW6z9$C>{X+0PF3c ze^F|oU7J?%N*!aC2^;GF00l&6qx_D9H@yIx_GP=#Fwfzw&bS{22|xb;8n8V)sQgCG zv&y+CB@H}^Pm&rXCqJ%pqD?I=EeYIQN9vV{Td`4SuUr$?(={pa{{S)71+ZXdy>EMc z6fXd$xz{7Q5~gU@a6;sQI^~1?>>j*oV`JPY1r(4=RZ~n-Nfpq{9n*_tn3WhOusZ0g zV0WoWFO3~^DMctmD*piOAv_Y_Nl-_9f}mvKbDy0E?*k3ND(WGQa`6&kdUoW24`Gjg zk(-dn9eikJ`}jrM6cNtERZBUj;Gp4ob?!LqcY%dHk3D?Zf3iu6KTP*UG_x!bCDu}8 zm9fEE2*6^%uiMBY^dnB|o|EyCMwQ80(RrE`s0zT3g4Y$m`{z+UzSA>$BefmYNY*>l z5)j3K;L9)s6D+3(kRXX0uODpzuGD6>TPi71p&_m;l1?KCB~Hp884HoxeezF7K$oda zk8spdTZHgKfRe_?Brxr=a58#59f4x)E;eD=+)c(0;Z+Nzd{dEr?V8-jCutA?G>w)Z{%^KN+f6P~I~I&#zPu1e9y!1b{{T^_ z9pyl78#eI*MhpHDWPehB{nrlV*h8;8-I%|l9Ao~bUd$H?U7N0pQMI^*=l zq&*6%{8yzLUCRan-3kMb@PdSA=e0UM($dnMqEWhJEI(r7!*vU=n{{XZmW8 z*()gD`|bk6k-FTS;As{}pDhyxWc>zv=pP47_T{q|8`vC@v)q>xkQOr=DJ#Y>K7xC| z&Oz*IQt?lkKq{i9WL`!H7#E&ZgS-9kG74)5BR!B0XIojw)hi56z_a4hIt_L=)IPH2T$rw52ebt;9*p zOo$y7nT`Z(Nd>?IypUCfdl=Of>Xj{QH-u>+{4_#WMK2jF-Gk%|GUW7pcaE`*82-+C z>YriSZ^=<_p1z{4wiuE)C5dDtM%V!hbAPwe4nA@7(Ay(=Pj{_o>#dg>XsS6)1ItHR zc$^YYv(m>JuMyYQ-Sv}^u6p!)VA*a~YfZwsjVo&F7~|fNfCllHC*DJJXhMiVJi#1-$Ab zhictgc>UNKnpAda5;Opz9kUPs?;51`p8Kbyuh}(}^ift;Hq`tii5*I0vNbsX@eEhK zeG#7j0FI5}^**kuc_XFTwbICg>ptC40E6QzOhFxa8Ph9<{M>SJW!duvC%jTzXUE&G z!=UhguDmAd-gTv^(#XEsrv^zj{aOZ6F^)|tj|WozgiBFA*R6u+AQfKhO(Za*BE+Ve zB=*Q+Pasi)cZ`BZT4DP#v%~471-+5;K{Z_~yEZ{(sAG^m*kC{9KYd%;T3T8W-=xQL z*|RHgWWFFBc@0fE5&li8V!=eTezkAt5+E9CrXNWIm%R$V5J<*z-+gp``Yy9=+Bqbx zd6?8KMCNH(!mAvfJa7hhp9JI(KstLq*rtjIqBF|g^o09Px!^+a;zlyx&-6d8s}1ex z{e3pwx>H%MMo8;Fw5EWs9?%fOu9pBGp8j%mUu`R!+%5ZWXHi@QwxZ*3jZIv!^J;f2 zPf7?<-sUh#2fTi|zwKU-?uuBjckon_GLl3r$@K;wP-E_#{{SzM{BtD-rFZ4!@9(+f zB?5xBxK!kLZpq2VUG@5By=trUj^NSzhj`p2k~l<4t3gV+3QGXFTm#t|KOKB%5{~sY z+x05JU z!{mh{;E-}pVCPbPjl)-ZqTN>7CAtvv($yEGrTj_aqC~`zhd|5q1Audpp7E=r(TWNh zJ>5}BQW_hiF|ZLdb&)f5^<`bXzXWzO`gqlS=_NHpJ7a7+%oVC9huWC9Sd@F<2&4dK zJ#>3LfN(W?)*ydDDJG06L$sSgCBuA*P!^1#qnr4F&~t?_S2o+PBM1R-1j z&RLja^x{|i^xx44{{RLzbqsMVNe1Y+#-N;@1f!@Q$%ma~5%m?;7`Ej@4n`~G z7+=u47_hzwrLL^XX-R>vXVG)urZI zZ+fb&RbGW#*+r<5KWLKuu=etLADDSP=(eY0-5Qj~NqwV=T;*hISZ?~yEJ&rZj2`>Y zrtG#{_RKL=T&@&#qN=u%hzfdHsQ8Ix;hdSBTZkFqfzZxId#U$LZKiKfHnUp46*Sh{ z)i5hE1c(pB;QM3A48)v~o`*nVT}8VtmA2Ta1-dn9Wt$FOlA>^^2WJqe!Ok(rf#*>x zx$dEWl8Xq$fXi;LC&$S4dj9}DIkH~vHCL$MtIy%&M=GmktA~jgAhgn9M_KERPsfdO zPpg}5vhC|8_q$NZ!6_P+0>I#cX;V4*107^{=i@qax4j#uuBK_)>Y-v~ktBjuW;Yi{D_`vudr^bNxL?)Nk{{T{uxnWZUwxACFpX}sZe^2YDKA&)=^$XN` zDES2!T6&BR9Hpa;k6*+cSh`wTS`zglFLK>xY%%ulcK7S!{hn8cmpT((LbaR=VH?&WubU(*9CaiLc^-rvZVh2d*i(i+BZdIZsp!K zTa`d-tP)N8wP@<5jaeg5cwvv`0I4JnImidCZT+T}Nj)#8XyR$vE>w@jbC&wQ&s^bE zB2vp|sfk@=r?^8qaZWtQoiOEa4<#U>`0@AGUT)3j`;NXUD5z(7-b@CXH%O#j9Gly4 z4oJw)Uw^iRsy##9CC}k3HnIRYNvmEq9x>kxAD`)>A5OO=^7}o>Z}j%MZ)sy_BBPQ? z9|t^(mH|h201o;&_|;9gDJt%J-_&^0Nkj`<6Z=uJaO9Lr_2s-D%gFd%v`y*9rJEkB z(;c}b-qQh^zTE_qxtd5CW@HX|adFGCar$FKF#2uj)ve-|D8C3{#{##igbR-Ve{0}< zylZ71(c1Sq$yUvMtg0qOlBOu{(@azVKqLD?LFJCm>+_*6Nba{vt+ll#z1&TF@~o5jG!?mH@K9FOR9X;xrnMsuFX@vgD;Mrtb}t;H<%s*3uiNZzX9JTOJUGD4P; zL?yc<0iT@d*2$-~UiNi0)~4OJrl^r*VrUXMULKOSFPXK!vB=z9=)H~7C)q1V!MFdzd$@p1<073?8Af&ne@H~GY@34L~ zIc>LF?*4&oWx8A*)Uev<%2uRG?+b)M(vU$17$Y7tpqcg#$q2F4?rPafF;&f?n66Kp z0}eBzZ%1ugUu|A%={G#Gp^C9e&m2Kq5(yanN1axCphZdQUFb)T zcA_1S(5-mIojeoS>V@BaWv4w<(q ze_!T7pKh;h$2Xq2!&J-P@|bGL($dn(y+ydR$Raq0(r?eyI{ zR^euq(GsXACD)SuF0Fz;UO4`G1>RODZ~mHGtt}izwqn$&3Y9D>Iq_0ktRKtB;~%Cq zYcGM47>}RVNmWroqJ>f50fDGWeWzunuNAOS@Tn3Bd5L8F!#(4cK2Cw|c8J&33)MjO zm8$I&k{*a9!_60Dd=Y?1?*IX(7E5IS^m5H_zkck4@X#zV8x%Qk%m6A*OB(o&8K$UzkFWmVztLsOrzO}CqC$dA4@W%Oh!m- zV4UEcVwZScf6_{sW7&0yG|{R%v(x}W=L7>zGv^u3q$b`wmNj8Xvnt=`iiThQAfrQ( zT=zxO)!ma*xOVZg(Fkr7@JMG@X(EU*q|Y>yOh`7wf9lx7N*-MZA}8)K|!ka1D7u_%(8H6w9Bu$1HINqQHZq9oOmx z*4nhvOM1N0!tt`9f;RVNM*g@>w5`>ZP*hff9X(A{A~DUE7QHLw`tavhU;B%YF3ngw1^eG z>DkUm4E#`o@ENn%8r5mM?v2YsC2roD>sLYVO$>9%TSHE=nB*u(QB3TrO0gLv<5IF) z_q)USW#%$C{{2PI^AviC{lmRdsb&?QlD^IB(As9+^AqhNs*9<<>7{MQcNB! zym;rn#)|gl{i$1&7M)?n<)0#j(DqQIL2~7F*}2C&kp*l zq`B5jZKqTbz>qROyb)eP;FSy{3V9Xm00AB6LA8FM(AldYM5JnCW(%iD})VW)t3GX&D(?83u2qiN|?7en)*av--tFVy-tE zKE$)7Su#RiJIs89Uz?AX@4+V+`)FrpN4Mmpw9j2rK{eWAHaNSr1gpFsrQ9223C&cx35$%t^iQt z80E%CefvcB_R%$lmK&z|JA#&i=@BW#=c|OmtcD<r z$w;)ZEYmR$m*mV;FHPgTofJYJ+FyHzxq-`vjQ*ddhPQl2{UO{W+~S~hcve#Xprl@OWxFS^4pU8~t6d?POSROxY>9s`F70*r{FLq*!5(v=pVctIE zpZfqj0jBX&&pOKR!7RcAGRjd42-FZcHU~o_44<56!*Tk1TW8q&OLWoIyTPcmWGXQS#^pL1ET&roXf8I>YH5f6EQ){>k0uU z82T9>?jAI+skC*Oqy8oZ~;!t#b#fG#|V6UfG8+ zJw?82lxVXyRlu)>3LFfTDsh4OeYIg_#%+OB*vS5me@N`K<;82scP?`p)jQCp>@;ay2fEjr`r zmL+8$1EMq;KH%6?X(ni(DH(M>&6ZbDgT=d8i1IP0X?JI*)zu;iw%@)~Wxd-OZX@mo z1DyVvdv4zQ65kR0JtPz)5_vR{%f$HqI> z&E>kr*LrzssHB>O<9B&uamX^`2&?i>XS@N8JlnU~Z%oYATdlqjf!0dc(mq7_ULlJD zKT(ZEdW}=~R@(9sFmJT6_x}JNH2(n2sNYwr5|XQ8O(Uu=`b8W?m;x~L)eD248O}5D z=TH4l+V8zRIIgk9Sq&tWF~q`m1*2XLuh{t*Q|I*8Jbux2)*ZdIEt?l*{ss$r$d&cK zhM8HXJaC1AlgOL~C9&Z#k>aEDn|495eL%P0>gn2OY0`8k5EliaWl{!5$r!`*DXEL zAqfMVk(a`@LHbBzoM8U|4O~EIUw1+zzwGyB#~YNYJNwa8`2PScMS2%A&*=`;Y;hun zG*DNMN;r?6{CWA&rCl(rrFwd#f@mdP62~HPS5wha55XUOMbufU;-M7wDyl0(2LzaC z6_lv*IPx9-zZ#LY!B2hRk;=6{@EPC zfgT70$IhkJ<5^p^=;~r68P#9v;f7-B1`oi&%9cG2n3IiT@e677Q)t|2p)fs7Yg?vX zN}^cig|d18l;;u=p0cD2YoG=Q>}$(I6Q>qME8`gW*Q8ZNRYeM*U;)+!vyZttSpGlf ztd52TuzZ8oHLjmL2qPa+K69L(ItJXWbSMuvezKQC2BFKeC-%kLIC=@gr4t?RWdWPfu;})>nwCmg5}s^n9?@d_h-H z_6n|8vFLU3MyPtt*STS(p@QSODn%W>nINNr*Ea}|L_(`N=j+HB4B(T4)~fRmi8wQW zzwXMmRIW}#5&D7WOr`)nIr3s~KplTAKDKS!)z-Ms+pTrA6<~8Pq%Ft~f=9-?pZ0MV zTYsk%whhNeJq_B@?Gr&hIT)OoBXNWIaLm8O7<_8e(6;n`7mb*C1rg+l z$T9jwWT$hPDO#eL#xOySqD8^}Kx)U*($_fpyk4VYT_KAJJJsHZ>$g>y0tfNRpXH{T zX5&wC+R(`yWmcd28mQJW9|E8_5B64m$M-?+&JLVzHioZp>^5eIN&b^lF;Fohbnl#w zhaQyt9TGgV3NiIKJ^|DXlWTgBPfqd8y)2aKWR_5{*-XPSNX|}7i}J@r zRMw5<2?h6Eu5*lHOCbyVewo3~^V3S`eM^ns_kF`>R4Bn!o`R|z{)CC2AIAsyY9jZ( zcYf5jOINx!YE{!hIWA9LO=+plodUoZ2?_{OPo?7Np* zRLLt6f^e$1@#n0aLtHAMtGv}!NS@j<<)c%8&JWHGeEHNpV{=|)63dXqml+;F{XTUX z!GnfULuagXbFZL2itiD+w$&8(SgGT_Nl6s)&H@j{L<=C4W8^xrvi|^ezeZg7-j}Oh z#q}c3c(182#kmnJ6T}7pc-XX4lZ;_~#zx7`9Z2Xltlb5Ap;1k5rrWnF>4X&YSGres zEEPvSQ00l}DED$t*l2TNZY0}Q>YFlJv&St%$b>1KUp!m`^!W!G zB^&ym+z8ftsnSIwM+xuG8wks19SMAol<4)HYL4x;?X)!%miwKu zq>d-rj%bfODC6JB$CW)Cf_1%U(zAQ|dq}VD3F~CKo+VwPiW+9&mLHipNU9shcpAP) z>s|`yBP3_-t(nr&($hMdoed^`7h6jSUXQsdu0PD`Dx-PrT2~R&Zd)8I-GzGil$`wb z+8(Fe7F*YG<5JuEYd1P8kcutfS?SL zPw>#pKB8>tX_BEgHJrfe7)kh~3O|X@NAxu{vtkcumxOl83cZ#I_oWu zvu<`fuHxG?k-W7VUa(y3Zz=xDvXZ1_=^v26Qez$C>5)T!cLsZOY^&d@H>)jG!K&;w ziW*9YCTfUKR8<+*jEayF>lPC$?lTjUl^q5*H5DvWR8;h|;e;?ou^?tFc&Nb1J)Vb? zuX4tc#?i{E=)(-GG6?<}YSycJapglw!F*;F>-uX!+tyOtjiTIJInUu!IsX7H0$%oo zn`qsCebHMeB(zsn#~sRsdUSM+=5>rzLP#YDVw{)qmB|1R+;^^2)_tL{YOCzqPi{|e zmDZjyJ+>!BTr;yUz|IvIjP;ynTYVw)+SNlH9`CH8qmKDsNUR~Dh(k+D6Rt#Pi_@GD zmwrT%k&d*})(=eRWUCwE!)dqF-fgj&YOU22>h$+G6;C8(AmUCr;@Ca_KLi%~TW8sZ z!$r8ZU6S8J9mb!RyA&!V3Qk%!Z#^>Lu5p$9G;%z3<4a2#T3T9!t=m@msh(eIIAoBP zc8UmrcK-koB?%|_>8kA75Xen+>k0r19nN@H{{ReZqxxzVyKm9h_s-Y3QpsG#c`7aP zHC24|9XuvQ$GYu~;Kx|(jS+9TCyQim2`M63s#4!j(Z<=su#K?2ef(;@lXYHgo}Zi6 z(*4&pl8#s{w(1&+cQRA~By{5vte6C`U^1Ox6V{#jWeQSyo$5SMiX~Yq;$ak6M?fHi z=Z-rE-0bJ`1NY9YDRJ$R-Uol>uby6`LTER}?4cPj!E=@<)s6^NcH@Kd(f)cF;!3&? zqF@8?$3q@Ybi!9aNMIO)o`y8@ZNXPnyDb#<#S+%bR|-He`JA}p{c*3S2Tkg$DQMMN zuA&-sW5rCa5EJ$p)}wZ}D`Bn_VEMkzks4dHu{#K+Xu)Mz90Edv`HzvONmstP9#(C#26_VRQP}?g_}+C3dA4u6 z-NGpDG@EH`aY+?GqlUhJa%p2=>LifCk8Coj;uI5%6O4l+cc9!C%2lSlZQZ$3Op>h1 zhVeKYm%$_O-aPf-gRI!;cQuCGv{crcM3iuzG|?NppX~AAVlc*^B}c}53=fS#?+VXS zZq|vYZ2NxKYm#DPmZ`2QP~s9W#uX}qpLqq2I{k75c1NmvFJSHQwN}@;D5SH=Boe_r zD4t$ixid4yN@TPA91P%fjZVS)Ky4{&X{iMr{bs10Dc79`03FBx9JlHYo~opUnKQt&Xsh&=$-(O*=OWOSB$g+NL=PK+tgO8d zdL#U`NLuJ4xB4exwbQH9BwLyqXo@!@7+c8zg4xLce1bnis}p8y(YJ2*%cWh`uIq8S zP9&0|qBV@FghUI30Z&Lf0C*Z8zgCNVn!2yqdCW00h?6;Uj+A5M_}9*j({i5iyf0S^ zltpH!tdd7hl{q~h{=PKC;npbQEX)-0!R&=^82-9vD2$LvWm258#Am-B{eK->KeH~+ zt-Nme_a!Ya;-TB%O&vPSu^Nho1Vn|K@~HZlw|y=!bE}WkuT(2Gy3I|wE2dkT#;%sD zPAQ|1mmsUu7HPo8VZufaUw)~Hy+zyCy7N2wb7+>SP%Bj2uC)_)-_-2q>g|t`N$b9b zF6Y@*OBDrGh8aH%aHobxhLVM0YGmLtB?hr`Ar0Xa_#o%byv?(3uv;cmX{^4~2@H_M zQlgg$lk~I2SH*|hAif9$9BGgGC4HuqUM-h$qgRGkli9q%JANV9d=+ft;m|0-`hmuj zG&e~klA3!Z@{X{;p2VzEgs$BT;*)~5M}{h$mfIflBSAqW01dQ7PA{0C4m`mMaH zHy+-VW0uKf7fN_4p_XA*^2XAlICm%l^xb0zT@Jg~Y#W5s18~|u9SoAkB{{5&Iy7s_ zKvy{&KqURJbK_jsb)llE-#fxts%d?-zDp~q;~@a5@o|C)9I^@npCp6Fs0b{uTklqy z4|bxOTHC!9EOk*1e}`c(Vna7YmnDmkROcTW>F-K+JznIn*8cNormwbKYAthBK!GBw zXqW*q43Gl?GBeTSG;81!@#k66($*Ap-<>S{ADu^E?NqnBJ!P`uj?|TLn4}TN(YF)! zWgv|XC#O4gOnF-V zA+h>5{rWlINqjZKli2^xT(U_N*`Da|P`OX3U11CCv zw|3p0JZ(mYt)@6ixZM40{ zA-abOasl(lv)_GnrxhNqeh>w?`e(LT!7*WK5OO*Esy(CU&+s|c`fph+23AJ&p4@?A zcO_?owF{OQF%Gf*dWoCWFHS2Y6J7l@mLdlRnwDtUlz8KnWjM+4kToS&C!`dVw#v%A zvAXSX+?C~`cl-zm2wM5YNV`GaSO z@@arr8CscANKLZ_~ew1EE^<@f-{T)4so4ZyKB^Y?6-#8r~}XvGhG_EaA5anROzzube2vuCygARHd^pN&{nOI12j#Voe-ibw!y<5gl|KTGn@&PW`-K^XC= zyImDSA*6X}ga$@37H(3Z#u-38eJDb!F zWxg?}{mrzgY9Xeor>02S755dP3QrY1h44DT%OA`J2BN(+^zAo}NsbhO&*OKn=7OyT8v-2O6<{q@QJ0JFUnER~z9X%%m7^SA!4dCL`f5c&Nl7{^^|r@qZ4HI~;{ttaCWks*>Y z*!G!N#y|k)vZSy*^3ZBR&g~dT{m=`sW(pKzo(KPq<^4tz`ur900ts%}|0@ zKjDrn@^?Aw0|Vsf^L*H8;j>uMmX=d#w93>D?x4s_z~R^c32sC94<2;~=_Tfl$8p>= z_b+);ri3yGP`UR~LG=YV$pEup{kzl zNjZ+1sgEyl$_9w9V5#GQgd~PP48s{1(Y?9~Qx#20$t>~!3XuU)pdNq#eL+JKx$+K9 zHHvy#w5~$~mxtUTMmhaINmV3yIs1&T^UykVaFHUW_u8&t%Z#8LLNeuMR#y+5Y>&NWFbfl-Izin!orGn^}C$C7I z&ne+_QIzr6WbYmU!SkILde+y{)Ns%lr?yK?I5zmLrl?m{<$ai))N+A*pKul9#GXKb zp^fXYrQH_ixb51jom|#>$!*I?d9E)VPz;MGf_Ej=i>Qw!yC}ecoa&;Q&X?(~Effh$ zR`O31Q@7H~BDew|je(GI7a7JoJ~TG8Gf7W86|Xo(pWB9^6lG#j#|8d!dLzz2#*22e zZ&f96t`k$&RK(F!E4bj(CV2Azau0!mxflm0twmm`WVuyO1>D7g5>vLCesU>J=P~qoc^Pldh$jSagvNgziuX%3YPR_k0bT@9|`EEM!o){0?I4CQA`FCM}7BlCnp%rwb}P23Xngs+9BVgbR6;{V!73KG|w+Tal~=5uq~cPBRyxY zK1k88rWEvdo7KL^(M1K)YG;j};X0&p$=?-?f}gL6OlQ2QJ>)K}%dL*S+gt2bQ3{Eq zm`^9*u2ias+xkiCj3Pf2sh5XE- zMhpkR@`U;CLig)E)-|bWi&o~h#6jgGc6LZWY;@d9XZ8D$oDD`;>go3W_oJ$i-0S}U z7bz7fB@C3amR$Q&Q*vCH)Rw^h^5qVB9d>0D@l{b%Pfa?{45*SvDiMhkfI|#*f;;|t z;cI89_uFe;cFN5hv=#SHayFMN^zsU^Cp0<0B!YZ-!T8mqxvUgd9pS%eV=%|~YpT?> zEkguJ1hnz90{A6;$IdwSlb^n{OK)a>DPp$k{o27*aAqvA8xbruGt*`2`5VljO++-% zNj*fV6furY?r;=+$=2O@J^(&XU1|$@?n*tSwkxkUBJBk-^%@Mk&PWLwkCtX254LmQ zYmol{XbT49wC{>*h4SYO*7JOfEi4qVzxy)aFSQzUotvPC>>FdN}#UhPFQTwb{2_(*1khwHJA7ph{^eqp z);+OVS0yzH*VN94Si>4ck^mkvARZ2X>!2@JH+I(Dn`A%=~u)SI1AYN~2AOc=@c1Z-3&3Rn@u5=bZD`il*0O9jIH z8TZ9JUgM1Gui5tFbXptM+rC2-bK2)w=}au9Gfg>mRYD2rU1R`! z3@^s2FH-#}+x9O~t8aIW-)gnk=c^UpfKF1^GZqZ-q)I#%&KPF^jEzj~J;g)0uO6b- z*?sC7)|g#sVYo0?nl+77m5g@0S~et%GyQ;G|)#$Unq_oEam;kmn_Ju z*;nQDC<6vl{ zt+=TA!EYz?VMmMtPQBUv%B}Hg631UeEmhRgRaa9*B=P|6BZv+t6j4HI>#F9csJX`TMjm*gm9r7!&w&_r&qL}MV`#eWV^Ku3*Squ3 zRNQ^bCApPksFE;VoZrVGIut@Pl??$xJ zmPIVc5EJefPA-5bB}hGjG<9vc(_AQEs)Af3(WIeY3d$Kn0KoPR7Ko%M3c_Z(Gt2598xT5tM^enAV^$Tw0G$Y!;Z*f2p2OtyVjggPs&;nMC9HzDXGG8VuWQ0{WA-@hZ|2R3vGm zP<%xBzyy+~#~+^>v#O|QW}2Q#*i9?Q%HHp_g#<1T0D4d|NKi47RGi~cb670vM;;!W z)0YJii=ahfPC#NxjIKa#`yhZZsF~tg1ydjrDyepnr82h<1cCF&WMp|AU}HLaPgcK< zNf9PxRTC~{<;pcuN7hIMKpuQ~0OvZ@QCU*bA_|ESrV_~@JxHo>MnN7x?Npxt9ePNn zMU>56wDG42Dkqi&I6|YA0rShRpQs#?G)YNpywg$|x~dqSl9?IAsR(3f{&GiStPtPf z=pUU#-JK}*%|%TeJXJG@fl6w5q*thRZ=>nPPC*B+wmj+wXxleV;=fhfcCBqfI?@H2 zSkh};FB;GNo65wrjmVkC00-$la!9har|j)dNTN&a=#wJmXl-x^3o$t$&fKJB{RbU; z^^5PK03oCLWe#-bY!ZjQ@$YMPj;B7&h9 z@}4M<_Wk`52+MhHfko{b&qq2lwN(4ISEp(?!^R~n%%I53oI@#6agu*AIO2O6uJ81u zJ5|z8HDx-=(kjL=_*Taz&Q5a2tYf@sSg#S>H`d*ztgWh~w^z?kPjGap{4z}daKTxS zjBz8QkVksyo#_Xs+k)LsK|b`hTOp=-362}21PJAf#_{oxus~6;yg(`CaiE&rr)83g z=|g7qFK)N*BLygyT8K>IiZdFBnS&7OsEh(Aj5%ZO7Vl1f)g4VV`)=nz@os1$xz^Q7 z5UNy+B;yJ7o|yq(?Fa?ipaBXOM%y=FUn8TqRBnyWa!ajceDyLds$mQvOJO=7lk}?N zCn0#R_jPBF8Vuatp4xBMR<5WI43g4IM>&V5c-l6NLb3duR!MqMf?p@V(N#P#Q^)O7 z!jVP^AtO+rXR>fVT%BycSmaI@B#(jCdimAi`yx-DQg1Q)YJu$qi4DlHS)8&*+e1{3?H3%9q(;iez#MRJGEeZ;XHQKmUZ`4VC8i>=FD4llA~>rOM@0PhkaP5b z^Q&sL>`LxZB~9pok>PD#E9xY%xEfKiwmsK^l{h5;y~~j$~EjBn{IkBrIwO z<<<+~Mga_4?W|BmS#_F{Kiv_?YK9(01%d!Ti07_J*8PmU1V;rtOB`qkB;iy5J0$-AJv!3( z@6MKy?@L1a-E%hIVxf>+(l-a~Br`;R`I_Jdki$H%*84=VySd-sqrbTdwRPhVWEcP?sp0sJ|p3(IWbko%Zq1(stbZtX1TB%or ze)35h07)Ey1ZN*4b}^yY{Vcj}jrVoj*4k@3tT$IewY3vMzU(Da+(n3T1&Wr#9*^Hs zSFNM!V>DFJTK3IU2{OneHFFhU6y->6_?#|$caMzdehr7}l1&neC4xZ=OcCdu$jc9` zfDcSa&yKprG}cc{{ZbVZ6KLDa2deI&#Xi_}< zNX*5OzG%l|u0C;(kG4*l)LA#px|NcrWztnsw1?bEThKg|t_lG0oFOEhKP2dHb6)PY zl!><%&9A0_IAx5_Pa%){j7zQ#2*@P#Go4uf0JD``X&v^8DtT!jsg*7;Q^;5QFjv`i z99gmfiB5BzFwfl7Keb&Ye%t0kmI0OWFNU5%`70?nseE;oXuX!f$0MIQX-814Uo=(HDX)5l4;5+Q7<1Wk z*a}F-6dWmEzgpX}t@H09d>J0ZZBt=+3lsV zo(AOL{{ZrF0h$VB^{q2qZ}CJ~w&0b({IFNXbNma1{{Xh8t@6!13=-8-H7xFdo(6E{ zGxDXEqmQ`LjV&!LMqY3Bn=i61*9vM!oRx+-TnCtpWFq-<*y%y@q067b~Nq}AQz{3?ZxK*alaXTbpeV49$+y(HTe4J};TitTr!49z5#N+{u^fihT=Q7f46 z0XaO$>shpKN*_)42$N)sb=uc07^bPW8i>-SNm55-e{v{_76HnDNhE!M8abo&KXH12 zben2fcC{_8>}ZnX_^SJncwtUShXORrpO|0*0VlqJ(cPDBZu>nIY;>2K2ftBP^-S{H zWprZ7nE^!0z;X@NTgdNCXT9(1O*6@SwcBP0Ki*ntrm074AMW!KDDj*lWA)TUx7F!q zsFDdS)_Lcr!qmq{bC63D6VNfu1b7(9&nyggsmecAwzQtuyGv1LSwJz#Ul0(;3C2Xo zT0Cd2*lNIu)rrVa5mO&i0yNXEAfT)Mvrf^&jIXs8)BTT(uu(!ZpY<_=c7l0 zkq7_*$(c|uWPlG{=r`aQkO)YCl;j?WZN^v5+@%Oq*m0QQ&aU^Cf#LCb3*aNme58gi{S=%<(LuK1G z`U_Q5^>i^un5rh5-f068+>3ZVdIJCsfCH^fX=!O_Lvo>A`?IH4kat^7KtD?cggy`R zjAKDnbX1AEuA9~Q%WR>>dVyS_OucVoH*y<`*(&9|X5$2Df^_=@qZknpp1kil}LC zW)%@thB84@7nKeH?01mkzrP`Ys*BK{O*dt`)JP$|(AQ8~ZIk{jpCuz_UO`G9o=2m^ z_NND~wb0(N#qRoba{!RY^z$iPu5uJh@ZLreT)B88{=a)AZJ3wW`O( zrkX|s5YFt!uKrKlooY)%#XPSSLHhi1$zk#ae!%zo{GDs9qONLsh?YT76rWGGFJq4! z5#OAi`|vu@ygMG2I5Wp|-~{uc@A@`*4agGSW*c8DETJ>SZqO0mp>{qQg+uI?5Ym zGf%g7rN)AiNeL7`=;Wr69FkjvMFYp2lZ9|HbB!6&`kl4mh8QdFk-cvcSS<|kGXeAM zl`Nyipldxr+n4*l?k20G+*X^5G*Z*i!y&1o;-!m7fMmuBkF0Sj#eDf1YB!Cl*DXX- zdXsUdM(Q~37Nz9^f$+u^C-}a6eD|84eR}D+Hr3uLUB9{QdydxeEQwtuy;aL(f{YZX zK06=|kKAa((|_7ditkpGThiW^a=abEi7m6 zta#RQq zx=3mzh6q*Sq>bIxanFeN7Bo!ck?!}{)Lz7;-LzG7^i`29JrvW;ajK~NB93yqlPmxR z=zESz$a`f29ci=_dy*T?+Vy6)trJ|XZTPV*3cT_{h6o`eEWb|yG`*bnk2-%HPWPHH zw2{3m@<^2gSJEts7HL>}K%;=77{ceW%zMDkUY_T^Vyk*qq>04x7-6auB*#t~MpTwS zB+FrAST-^N^MKM%4==au2I)D%m%GWc_{=!6no}>YiOG>D=$I_t+)w&z7mI1$%&*)7bhH)J>5 z)=qoVIyoA8Ig(N z961DIjz|MIJ@F$1dYgN0TFYcruvrSE)R0s}4HV6hFBQqb_-y?HEyVIXK>D}TZY%UD zOM9iU)U0#SOI2M-QyjkJDI4Mll}AEW4#mz60u$H@44unz-Y6Q)KyAMD%B`XIrl+Qw zN@Ncw6ZHX=!iHj7$I>u)WJK?Ovvr+fJxyQ z$PLt{*xeO-imu^HQBMsNF|?FipqR-jR3?4J$Q(xz-hSr;I65h^Tg|H3Pef}f>wT3Y z->Z|{mHQ_w-zUH6r`lRtT3T9KT3T9KT38=prKP2%rKYr$6x4FmNlgkzB}4m?upPU7 z$s2aHVQ`xWurr1feGf2O~KC9yH(#06G{R2D7E4d}=PsV7FNWpSvlR6C$K! a@@6~}JQF0GD)KlU26ZW=rKP2%um9Pt3@!`+ literal 0 HcmV?d00001 diff --git a/images/220px-Internet_dog.jpg b/images/220px-Internet_dog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3db14cabaa00b1458ff332e37125e2ff20a74083 GIT binary patch literal 19199 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 a@@6~}JQF0GD)KlU26ZW=rKP2%um9Pt3@!`+ literal 0 HcmV?d00001