微服务指南走北(五):什么样的服务才可以说是微服务?

最近有朋友提出了问题:“是不是拥有了服务发现就是微服务了?”,对于这个问题,很难回答,毕竟微服务的定义在每个人心里都是不一样的,就像“互联网思维”一样,我们说得清“互联网”,却总也说不清楚什么是“互联网思维”(在这个思想开放的互联网时代,你我都是哈姆雷特,但是也是交流沟通便利性的时代)。今天总结这篇文章呢,来说说我对微服务的理解,以及再来探讨下微服务的定义。

首先,微服务是什么?

其实回头看看我之前写的《微服务指南走北》系列的第一篇《微服务指南走北(一):微服务是什么》中描述的:微服务是基于Restful风格的,基于资源及资源操作一组API的集合,可以实现模块儿或者说是特定的业务范围内的一个完全独立、细粒度、自包含的一个服务。每个微服务提供一组API,供其他微服务或者应用客户端所用。

其中,包含如下几个要点:

  1. 基于资源
  2. 模块儿化或者业务独立

微服务的“微”究竟是什么意思

几个误区:

  1. 模块儿化:不得不说,微服务确实可以天然实现模块儿化,将不同的模块划分为不同的服务。但是这里存在一个误区,就是很多人想要借用微服务来实现模块化,从而去分解庞大的系统;不能说这样做有什么问题,但是从解决问题的角度来说,微服务的主旨并不是为了实现模块化,并且只要架构合理,单体应用也可以做好模块化。同理,架构模式不合理,必然导致微服务管理上的灾难(以后单独写文章来聊聊这个问题)。
  2. 服务微小化:微服务并不是说要将服务拆分成多个微小的服务,举个例子,假设java单体应用本来有2个功能,一个是账户管理,一个是订单管理。运行起来的WebServer一共占用内存是50M,假设其中20M是WebServer自身占用的内存,那么分为两个微服务以后,就需要单独启动两个WebServer,那么就需要多占用20M的内存(当然这里拿WebServer来讲,并不是很合适,毕竟jvm中自身有优化),如果进一步结合docker来使用,那么在docker中,还需要增加额外的内存,关于这个问题,就不详解了,想了解的朋友可以参考如下文章Analyzing java memory usage in a Docker container。内存还仅仅是一方面,由于服务拆分而导致的HA、维护等成本的开销也会增加很多。

我的理解

我认为微服务的“微”主要体现在业务的分离上,也许一个服务会占用较大内存,但是业务相对独立,每个服务负责相应的业务;就像我们常见的公司的组织架构一样,不同的部门来完成不同的任务,不同部门之间相互配合又相互独立。

微服务的优点

我们先来回顾下之前我所总结的微服务的优点(摘自《微服务指南走北(一):微服务是什么》):

  1. 可以解决复杂性的问题,在功能不变的情况下,分解为多个相互协作的微服务,通过rest API定义边界,这样极大易于开发、理解和维护。

  2. 微服务架构是的每个服务可以由专门的开发团队或者个人开发者进行开发,开发者可以自由选择技术,不必受制于规定的技术和框架,只要API服务协议好交互方式即可(如restful)。这样即使重新技术过时的微服务模块儿或者重写以前的代码,也不是很困难。

  3. 微服务架构模式使得每个微服务独立部署,且每个服务独立扩展,开发者不再需要协调其它服务部署对本服务的影响。微服务架构模式使得持续化部署成为可能。

这里我再补充几个优点:

  1. 微服务可以结合docker相关服务,易于实现HA(比如kubernetes + docker + 微服务),使得可以服务不会受到单点故障的影响。

我认为的微服务应该具备的特点

以下是我实际应用微服务架构需要保证的特点:

  1. 所有的服务都尽量保证无状态或者有状态的可以做状态转移(如session等数据,可以转移到redis集群中)
  2. 业务的相对分离
  3. 使用API网关(尽量不要将微服务的各个服务暴露出去,以免造成安全问题)
  4. 服务间采用统一的通信模式(restful、Thrift等)
  5. 能够脱离开发语言,即不受制于特定的开发语言
  6. 微服务中的各个服务尽量不要有强依赖(即不会因为某个服务的停止,而导致整个服务或者其他服务不可用)
  7. 具有易于实现HA的特质,即不存在单点故障,同时运行多个实例提供服务并实现了负载均衡

什么样的服务才可以说是微服务?

对于这个问题,到这里,我也无法做出定论,但是比较确定的是微服务是在特定情境下使用的架构思想,既然是思想,就如开篇所说的,大家都是哈姆雷特,我也只能对我自己的理解进行描述,无法对你心里的思想进行固化,不过如果你感觉比较模糊,可以借鉴我再实际应用中总结的微服务需要保证的特点(即上一章描述的)。

相关文章链接:


by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.liuyingguang.cn

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容