不相信自己的人,连努力的价值都没有。 每日签到 收藏本站
登陆 / 注册 搜索

USERCENTER


查看:3385   回复: 5

[# 网络基础] 科普贴——什么是“服务”

[复制链接]
发新帖
跳转到指定楼层
楼主
仗剑天涯吾是土豪 发表于 2017-9-13 23:42:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

        小明的公司向电子商务领域进军,开发了一个电商系统,功能没什么新奇的,无非就是用户管理、商品管理、订单管理、商品详情页、库存管理、支付管理等等。 ( T2 M) m; t- @& E* D% A

! U: s' n3 M& J3 i) U9 N( `        系统刚开发的时候,所有的功能都放在一起,部署在一个机器上,这种应用被称为单体应用(monolithic application) , 由于公司也没什么名气,流量也不大,单体应用可以轻松应对。
" O# O0 X) @" U- \9 x* f
& l$ W4 |6 n/ I% H9 I3 w8 N
 1-单体应用.png 科普贴——什么是“服务”

7 A# _. r6 U5 E: x( A' z        随着公司加大宣传力度, 流量越来越大, 这种单体应用的弊端越来越明显。 0 y0 j1 F- y* D9 Q* K
& Q3 O- I# V3 V1 H& {( O3 x+ B
        比如上周搞了一个宣传活动,注册用户送优惠券,那个用户管理的模块访问量暴涨, 小明虽然添加了几台虚拟服务器来做负载均衡应急, 但是这些新的服务器除了用户管理模块外,不得不连带其他模块一起部署(单体应用嘛), 真是一种巨大的浪费。- ^3 i: G( `' \" b* ?$ y' l+ ~9 l

. P9 Y  Q$ p7 z# z; D        小明不由地想: 要是能把用户管理单独拎出来就好了, 这样的话一个机器上就不部署别的应用了,专门部署用户管理,一个机器上可以部署好几个! 多节省机器啊。0 u& \' [' Z. S- x+ |& X7 K$ H
) k0 g; a- d9 B" C
        此外,随着逻辑的增加,应用变得越来越大,快长成一个接近200M的“大胖子”了, 各个模块之间也建立了千丝万缕的联系,慢慢地业务逻辑绞成了一团,原先定义良好的接口也变得混乱不堪,每次代码修改和系统上线都是一次重大挑战。
7 D$ W. C. ?( `6 b2 t- P8 V' V* t
& r2 L# P, @; M        小明向领导建议: 把各个模块拆分成小应用吧, 让他们可以独立开发,灵活的部署。
+ R' V7 S( W1 u+ s9 w
+ _5 H. X( h* Q/ f4 `' ?* ~" P# z8 q
 2-模块拆分.jpg 科普贴——什么是“服务”

4 p0 B" y7 b* Y- X5 I* m  l        如果哪个应用流量比较大,那就多部署几个,哪个应用用得少, 就少部署几个。
+ K! C; b: h' Q
0 V/ O7 W5 S! s* J* v0 e        每个小应用可以独立开发、部署,非常灵活。
& R) q) u( M( r* p0 w) z3 T" G" k. V% ~8 s' d& W
        当然,应用之间还少不了交互,每个应用都得对外提供接口让别人访问, 例如想获得一个用户的信息就得访问这个URL : 7 \8 d4 t% h' e9 S+ a: w

! R) [( a9 K' _5 w' Ghttp://192.168.0.10/user/<userID>; k$ m9 N/ n' I2 U1 L% s
) ]4 k, w2 G. W. m. N% ^( x& x+ u' Y$ z
        这样的每个接口可以称为服务(Service)。
( @# ~9 H' z+ Z# T1 D6 X
6 F8 {$ H, a0 j0 ^        可是问题来了,对于每个应用来说,如果部署了多份,每个服务也会有多个实例, 有多个URL, 到底要调用哪一个呢?
# x, ^$ U0 A3 Z; J, M
9 |, V; n% e' @! h. x( e2 i        http://192.168.0.10/user/<userID>
, S0 U& t! l7 _7 K# A( X4 p- n$ K        http://192.168.0.12/user/<userID>7 R% ?5 z1 e" U: c+ B9 ?) @
        http://192.168.0.13/user/<userID>/ I3 E* N, s: @# O

% g1 S: a! I; n8 L; g7 `6 _        更烦人的是, 刚刚调用了192.168.0.13这个机器上的服务,过了一会儿, 由于流量小,不需要那么多机器, 这个机器上的服务实例下线了,就无法进行第二次调用了。
% [$ ?) _9 P2 W3 S" K5 N3 v9 ?
5 H% H1 U) T' K1 v8 M  g' g        看来一个应用不能和特定机器上的服务绑死啊!
, {0 z* Z3 o( N; D' [3 Y, I# u) D' K9 K8 ~3 {+ @9 P
        小明想了一个办法: 想要调用服务之前,先在一个叫做注册中心的地方根据名称查找一个服务,比如想查看用户信息了,可以这么干:
" J# p9 s% H0 v2 B
2 h- C, t$ i% C. d        支付管理:给哥们来个getUserInfo的服务!
8 ?2 W7 V+ g$ C3 n( A) w. [3 Z0 x4 Y, s! F
        注册中心(忙活了半天): 用这个吧 http://192.168.0.12/user/<userID>, 他的负载比较小。
; F( I8 ^7 e" k8 a" l5 {$ v; L7 J- D( ^: U3 j7 t7 y
        ......支付管理开心地使用.....6 ?& y: p( @6 j

) Q) m  ]+ K; x        支付管理:再给哥们来个getUserInfo的服务。) q5 l8 z# y9 Y* ]' s2 M

& z' x6 \4 h6 _        注册中心: 用这个吧 http://192.168.0.13/user/<userID>, 刚才那个半天都不给我联系了,估计是下线了。5 t) T% E: Q' _, r1 N! \* ^

$ s9 e3 X; e' w, z% c  K' M
#f464:

0 J+ M& d8 n+ S) H! }: A: Y        但是注册中心怎么知道有哪些服务呢?    d1 l2 |7 o# v1 I% [; Q' c5 O

+ q/ b% k/ y4 G. z! v: t4 N        小明早已想到这一层,他让各个服务主动前来报到,注册。) a  _' V* p' k/ v( ^! L9 E- z
- ]- y! }, m. P2 }
        注册了还不算完, 各个服务必须定期前来签到(行业黑话叫做心跳),让注册中心知道服务还活着。( [2 T3 U9 f  `* f5 M$ q

4 q. H3 V, K% z% ]) K4 k6 t: a
 3-心跳.jpg 科普贴——什么是“服务”

5 K* L; o& B/ |4 j        这种办法其实就叫做服务的注册和发现。
/ ]; d- r6 |! }9 v6 q. z. }2 w5 v% K* l+ `: t! z7 H1 \' Q. X
        小明充分发挥了抽象的能力,他把调用方称为服务的消费者(Consumer), 用户管理、订单管理、商品管理这些应用称为服务提供者(Provider), 得到了下面这个图:8 M5 L. C  G: T( Z7 |2 e: y
% Q+ @2 r& c# e9 M1 P
 4-soa.png 科普贴——什么是“服务”
0 }2 N0 R- e1 s1 q
        小明很得意:“看看我这个抽象多漂亮!”! E# E' ^, h6 @7 s+ r2 R6 o1 k1 f$ c9 r
  x  ]3 j+ ^/ v* }, G9 ~3 z% \% Z
        他马上把这个宝图“献”给了领导, 领导看了一眼说: 这个图看着好眼熟啊, 奥,对了,我在Dubbo那里见过, 还有,当年我做SOA的时候也是用这种思路做服务的注册和查找, 看来我们现在遇到的问题和当年很类似嘛!
' c2 V$ }2 ~" x$ {5 ~/ j; N# W" r( x0 M5 I- g
        小明听了以后有点失望,失望之余又大为感慨: 看来我又造了一次轮子,技术在变, 但是基本的思想一直没变啊!
0 \8 |3 k4 L4 K" c7 v# r2 [* p$ I7 N% ~0 m! D3 f, A: x8 Q3 k0 ?
本文来自微信公众号:码农翻身(有重新排版)
作者:老刘

+ c. e& t$ a" d5 b

清风霁月「出类拔萃」 发表于 2017-9-13 23:46:13 来自手机 | 只看该作者
火钳刘明。
soarcloud「出类拔萃」 发表于 2017-9-14 10:32:25 | 只看该作者
姚明,郭敬明,黄晓明都没这个小明有名
暮色里的白雪檐「出类拔萃」 发表于 2017-9-17 20:38:27 来自手机 | 只看该作者
看了楼主的帖子,不由得精神为之一振,自觉七经八脉为之一畅,七窍倒也开了六巧半,自古英雄出少年,楼主年纪轻轻,就有经天纬地之才,定国安邦之智,古人云,卧龙凤雏得一而安天下,而今,天佑我大中华,沧海桑田5000年,中华神州平地一声雷,飞沙走石,大舞迷天,朦胧中,只见顶天立地一金甲天神立于天地间,这人英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒.得此大英雄,实耐之幸也,民之福也,怎不叫人喜极而泣.......古人有少年楼主说为证,少年之楼主如红日初升,其道大光;河出伏流,一泻汪洋;潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶;鹰隼试翼,风尘吸张;奇花初胎,皇皇;干将发硎,有作其芒;天戴其苍,地履其黄;纵有千古,横有八荒;小生对楼主之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心.
降临1994「出类拔萃」 发表于 2018-1-20 22:41:56 来自手机 | 只看该作者
在遇到你之前,我对人世间是否有真正的圣人是怀疑的;而现在,我终于相信了!我曾经忘情于两汉的歌赋,我曾经惊讶于李杜的诗才,我曾经流连于宋元的词曲。但现在,我才知道我有多么浅薄!楼主,你的高尚情操太让人感动了。在现在这样一个物欲横流的金钱社会里,竟然还能见到楼主这样的性情中人,无疑是我这辈子最大的幸运。让我深深感受到了人性的伟大。楼主的帖子,就好比黑暗中刺裂夜空的闪电,又好比撕开乌云的阳光.
凉冬空巷龙战于野 发表于 2018-1-21 23:35:20 来自手机 | 只看该作者
昨天接到一陌生来电,她说是联通公司的,问我是不是185……的机主,我说是啊,她又问我贵姓,我说姓付,又问我名我说单字一个亲,然后她说付亲你好……,她停顿半刻,随即把电话挂了。对付骗子就要这样!#y454:
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

关于我们|小黑屋|手机版|Archiver|古黑论

GMT+8, 2019-9-21 06:29 , Processed in 0.058052 second(s), 34 queries , Gzip On, Redis On.

© 2015-2019 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表