我不知道将去何方,但我已在路上。 收藏本站
登陆 / 注册 搜索

阅读: 5.4K   回复: 5

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

仗剑天涯论坛大牛 2017-9-13 23:42 |显示全部楼层

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

主题破百
        小明的公司向电子商务领域进军,开发了一个电商系统,功能没什么新奇的,无非就是用户管理、商品管理、订单管理、商品详情页、库存管理、支付管理等等。
0 {( c- A3 g  p; a, C$ U. }& `+ p0 h/ f+ O+ L9 @% `* x
        系统刚开发的时候,所有的功能都放在一起,部署在一个机器上,这种应用被称为单体应用(monolithic application) , 由于公司也没什么名气,流量也不大,单体应用可以轻松应对。
8 J# ^" W! Y  m, K% u- p8 S% p  N2 O& U0 E" |* x' {) R
科普贴——什么是“服务” 1-单体应用.png

! c; N2 T" q% W, s. h  h& t' P% G        随着公司加大宣传力度, 流量越来越大, 这种单体应用的弊端越来越明显。 $ F/ `, ^% n8 l" Z- j+ @

* t' b. {( [- o" D9 `        比如上周搞了一个宣传活动,注册用户送优惠券,那个用户管理的模块访问量暴涨, 小明虽然添加了几台虚拟服务器来做负载均衡应急, 但是这些新的服务器除了用户管理模块外,不得不连带其他模块一起部署(单体应用嘛), 真是一种巨大的浪费。5 b" }/ Q1 k* ?; d+ l0 P6 ^
7 {5 C) [' p( Y  ^+ M
        小明不由地想: 要是能把用户管理单独拎出来就好了, 这样的话一个机器上就不部署别的应用了,专门部署用户管理,一个机器上可以部署好几个! 多节省机器啊。
+ C+ ^6 O4 H/ ?$ O5 j0 h: k7 V# n2 o# R- p% `. n* j
        此外,随着逻辑的增加,应用变得越来越大,快长成一个接近200M的“大胖子”了, 各个模块之间也建立了千丝万缕的联系,慢慢地业务逻辑绞成了一团,原先定义良好的接口也变得混乱不堪,每次代码修改和系统上线都是一次重大挑战。 , R: M5 _9 [6 ?4 k4 u
  \' |6 r; |( S  x/ W4 c# e
        小明向领导建议: 把各个模块拆分成小应用吧, 让他们可以独立开发,灵活的部署。
" ]: h& P; e* r" ?/ T
/ {! p' e6 e) @, I
科普贴——什么是“服务” 2-模块拆分.jpg

3 i! s" g1 W' R. `* U        如果哪个应用流量比较大,那就多部署几个,哪个应用用得少, 就少部署几个。
$ V4 W, p: c. V& f% h, R  J# d
% [* K) c5 Z- A        每个小应用可以独立开发、部署,非常灵活。 1 [8 j! e$ X8 O- w& D% \7 K3 C3 ^

- S" o5 b- p! H4 M5 o2 J- F7 v/ B        当然,应用之间还少不了交互,每个应用都得对外提供接口让别人访问, 例如想获得一个用户的信息就得访问这个URL : # ?* w! l. D/ J' N; r  H

# S8 u* b8 d# }$ {8 Q; i8 [http://192.168.0.10/user/<userID>2 S+ n( Z5 v* x" o1 T% m" R: ?, [
, Y7 Z  G% z5 m1 [
        这样的每个接口可以称为服务(Service)。 1 n7 `+ g( D3 u( _' J

- V4 ~& G' p! p( S4 g' e. f6 w        可是问题来了,对于每个应用来说,如果部署了多份,每个服务也会有多个实例, 有多个URL, 到底要调用哪一个呢?
. o9 Z  d' O" B' |$ q* [) B! I9 |: B) l9 d) h" C9 Q: p
        http://192.168.0.10/user/<userID>
! v9 N+ c* f! U6 S        http://192.168.0.12/user/<userID>  r8 n; k/ ?! ?6 z( k) [1 n
        http://192.168.0.13/user/<userID>8 g0 ?  ?& `6 h5 x+ C
1 O& p% E7 {6 [  j- Q% v
        更烦人的是, 刚刚调用了192.168.0.13这个机器上的服务,过了一会儿, 由于流量小,不需要那么多机器, 这个机器上的服务实例下线了,就无法进行第二次调用了。. H% E. g& m9 a1 Y

$ j: A9 G% [( Y) F' O  q        看来一个应用不能和特定机器上的服务绑死啊!
* n7 E  T; I% r$ R9 w+ @( m
  F* k# N: }6 m4 V. O  `, ^9 t7 p        小明想了一个办法: 想要调用服务之前,先在一个叫做注册中心的地方根据名称查找一个服务,比如想查看用户信息了,可以这么干:
0 `9 J8 S* N3 q% Z( x2 f/ O+ d5 X6 @5 E
        支付管理:给哥们来个getUserInfo的服务!
( C$ b% M" Q* Z" F
4 i5 [, a4 G2 f, X* H  G        注册中心(忙活了半天): 用这个吧 http://192.168.0.12/user/<userID>, 他的负载比较小。
3 X0 S' V$ i" h3 G( A7 g4 \8 [+ M& s
        ......支付管理开心地使用.....
7 P0 f, l/ w4 |. j3 k6 c
' D4 y/ c: U5 H& }5 q* X; c        支付管理:再给哥们来个getUserInfo的服务。
* I) D9 O* Y# |. G5 i: c# X; ^1 T/ ?* O6 o
        注册中心: 用这个吧 http://192.168.0.13/user/<userID>, 刚才那个半天都不给我联系了,估计是下线了。! s( O# m8 c  Q
2 z# k% p2 b8 D
#f464:
6 m- @& S! P7 m
        但是注册中心怎么知道有哪些服务呢?  . N1 q( C, R2 f% x$ z0 q# b3 E
9 I5 F/ z+ A, t  h( k
        小明早已想到这一层,他让各个服务主动前来报到,注册。' P4 `& L( a, t( Y
, w! I  W2 b- u
        注册了还不算完, 各个服务必须定期前来签到(行业黑话叫做心跳),让注册中心知道服务还活着。
* ^: O8 @( z. W3 n; `
% ?6 S' I/ a' G8 X) g
科普贴——什么是“服务” 3-心跳.jpg
. w+ `' [+ K4 Y) u
        这种办法其实就叫做服务的注册和发现。
3 M$ C4 y0 h* w$ R# S; L
: U' O$ ?7 J, s        小明充分发挥了抽象的能力,他把调用方称为服务的消费者(Consumer), 用户管理、订单管理、商品管理这些应用称为服务提供者(Provider), 得到了下面这个图:
7 N$ T: Y6 ]7 L0 p7 N9 Y" C
8 y  y* I. H7 d/ Z8 d) }2 {
科普贴——什么是“服务” 4-soa.png
: A  T2 A9 C" l3 N* {7 {
        小明很得意:“看看我这个抽象多漂亮!”) h. X3 R) `" J1 t

9 [; N% [! H* T$ G5 Q        他马上把这个宝图“献”给了领导, 领导看了一眼说: 这个图看着好眼熟啊, 奥,对了,我在Dubbo那里见过, 还有,当年我做SOA的时候也是用这种思路做服务的注册和查找, 看来我们现在遇到的问题和当年很类似嘛!9 P& k% T8 U! c* y. u! x! C6 {
) O; x3 D' E+ R7 Q5 _
        小明听了以后有点失望,失望之余又大为感慨: 看来我又造了一次轮子,技术在变, 但是基本的思想一直没变啊!
* j1 |' ^& g( W! p  x( X5 a" z6 t2 s. I# [% P3 {7 J3 ^9 R! s4 R
本文来自微信公众号:码农翻身(有重新排版)
作者:老刘

$ ]5 q% P6 H& T9 {! t
上一篇
下一篇


清风霁月 「出类拔萃」 2017-9-13 23:46 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

火钳刘明。
soarcloud 「龙战于野」 2017-9-14 10:32 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

姚明,郭敬明,黄晓明都没这个小明有名
soarcloud在网吧通宵,花了 2 个 金币.
暮色里的白雪檐 「出类拔萃」 2017-9-17 20:38 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

看了楼主的帖子,不由得精神为之一振,自觉七经八脉为之一畅,七窍倒也开了六巧半,自古英雄出少年,楼主年纪轻轻,就有经天纬地之才,定国安邦之智,古人云,卧龙凤雏得一而安天下,而今,天佑我大中华,沧海桑田5000年,中华神州平地一声雷,飞沙走石,大舞迷天,朦胧中,只见顶天立地一金甲天神立于天地间,这人英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒.得此大英雄,实耐之幸也,民之福也,怎不叫人喜极而泣.......古人有少年楼主说为证,少年之楼主如红日初升,其道大光;河出伏流,一泻汪洋;潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶;鹰隼试翼,风尘吸张;奇花初胎,皇皇;干将发硎,有作其芒;天戴其苍,地履其黄;纵有千古,横有八荒;小生对楼主之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心.
降临1994 「出类拔萃」 2018-1-20 22:41 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

在遇到你之前,我对人世间是否有真正的圣人是怀疑的;而现在,我终于相信了!我曾经忘情于两汉的歌赋,我曾经惊讶于李杜的诗才,我曾经流连于宋元的词曲。但现在,我才知道我有多么浅薄!楼主,你的高尚情操太让人感动了。在现在这样一个物欲横流的金钱社会里,竟然还能见到楼主这样的性情中人,无疑是我这辈子最大的幸运。让我深深感受到了人性的伟大。楼主的帖子,就好比黑暗中刺裂夜空的闪电,又好比撕开乌云的阳光.
凉冬空巷 「龙战于野」 2018-1-21 23:35 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

昨天接到一陌生来电,她说是联通公司的,问我是不是185……的机主,我说是啊,她又问我贵姓,我说姓付,又问我名我说单字一个亲,然后她说付亲你好……,她停顿半刻,随即把电话挂了。对付骗子就要这样!#y454:
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2021-6-20 02:31 , Processed in 0.028048 second(s), 22 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表