您现在的位置是:首页 > 技术笔记 > Go语言Go语言

微服务(microservices)

冰山2019-03-29【Go语言】人已围观

简介1.什么是微服务?
2.微服务概念的由来?
3.微服务与微服务架构是一回事吗?
4.微服务架构和整体式架构的区别?
4.1整体式结构的特性
4.2微服务架构的特性
4.3微服务架构的缺点
5.为什么还要使用微服务架构

近几年,微服务这个词闯入了我们的视线范围,在百度与谷歌中随便搜一搜也有几千万条的结果。那么,什么是微服务呢?微服务的概念是怎么产生的呢?下面,就让我们就来了解一下Go语言与微服务的千丝万缕与来龙去脉。
 

1.什么是微服务?


顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务"?



微(micro)狭义来讲就是体积小,著名的"2 pizza 团队"很好的诠释了这一解释,这里说一下这个神奇的"2 pizza 团队","2 pizza 团队"最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计时间,所有参与人从设计、开发、测试、运维所有人加起来 只需要吃2个披萨的时间就够了。​ 服务(service)一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。

那么广义上来讲,微服务是一种分布式系统解决方案,推动细粒度服务的使用,这些服务协同工作。
 

2.微服务概念的由来?


说到微服务概念的由来,要从一群技术大牛的一次讨论会上说起,据说,早在2011年5月,在威尼斯附近的软件架构师讨论会上,就有人提出了微服务架设计的概念,用它来描述与会者所见的一种通用的架构设计风格。时隔一年之后,在同一个讨论会上,大家决定将这种架构设计风格用微服务架构来表示。起初,对微服务的概念,没有一个明确的定义,大家只能从各自的角度说出了微服务的理解和看法。

在2014年3月,詹姆斯·刘易斯(James Lewis)与马丁·福勒(Martin Fowler)所发表的一篇博客中,总结了微服务架构设计的一些共同特点,这应该是一个对微服务比较全面的描述,原文链接 https://martinfowler.com/articles/microservices.html 。

​ 这篇文章中认为:“微服务架构风格是将单个应用程序作为一组小型服务开发的方法,每个服务程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务是围绕业务功能构建的。可以通过全自动部署机器独立部署。这些服务器可以用不同的编程语言编写,使用不同的数据存储技术,并尽量不用集中式方式进行管理。”
 

3.微服务与微服务架构是一回事吗?


看完上面的文章,我们极容易把微服务与微服务架构给混淆了,我认为这应该是两个不同的概念,而我们平时所说的微服务可能就已经包含了这两个概念了,所以我们要需要把两者区分清楚。微服务架构是一种设计方法,而微服务这是应该指使用这种方法而设计的一个应用。
 
微服务架构是将复杂的系统使用组件化的方式进行拆分,并使用轻量级通讯方式进行整合的一种设计方法。微服务是通过这种架构设计方法拆分出来的一个独立的组件化的小应用。

微服务架构定义的精髓,可以用一句话来描述,那就是“分而治之,合而用之”。将复杂的系统进行拆分的方法,就是“分而治之”。分而治之,可以让复杂的事情变的简单,这很符合我们平时处理问题的方法。使用轻量级通讯等方式进行整合的设计,就是“合而用之”的方法,合而用之可以让微小的力量变动强大。
 

4.微服务架构和整体式架构的区别?

 

4.1整体式结构的特性




三层架构(MVC)的具体内容如下:

1)表示层(view): 用户使用应用程序时,看到的、听见的、输入的或者交互的部分。
2)业务逻辑层(controller): 根据用户输入的信息,进行逻辑计算或者业务处理的部分。
3)数据访问层(model): 关注有效地操 作原始数据的部分,如将数据存储到存储介质(如数据库、文件系统)及从存储介质中读取数据等。

虽然现在程序被分成了三层,但只是逻辑上的分层,并不是物理上的分层。也就是说,对不同层的代码而言,经过编译、打包和部署后,所有的代码最终还是运行在同一个进程中。而这就是所谓的单块架构。

单体架构在规模比较小的情况下工作情况良好,但是随着系统规模的扩大,它暴露出来的问题也越来越多,主要有以下几点:复杂性逐渐变高,技术债务逐渐上升,维护成本大,持续交付周期长,技术选型成本高,可扩展性差。

 1/3    1 2 3 下一页 尾页

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

文章评论

本站推荐