精华内容
下载资源
问答
  • 微服务(Microservice)虽然是当下刚兴起的比较流行的新名词,但本质上来说,微服务并非什么新的概念。 实际上,很多 SOA(面向服务的架构)实施成熟度比较好的企业,已经在使用和实施微服务了。只不过,它们只是在...

    微服务(Microservice)虽然是当下刚兴起的比较流行的新名词,但本质上来说,微服务并非什么新的概念。

    实际上,很多 SOA(面向服务的架构)实施成熟度比较好的企业,已经在使用和实施微服务了。只不过,它们只是在闷声发大财,并不介意是否有一个比较时髦的名词来明确表述 SOA 的这个发展演化趋势罢了。

    微服务其实就是服务化思路的一种最佳实践方向,遵循 SOA 的思路,各个企业在服务化治理的道路上走的时间长了,踩的坑多了,整个软件交付链路上各个环节的基础设施逐渐成熟了,微服务自然而然就诞生了。

    当然,之所以叫微服务,是与之前的服务化思路和实践相比较而来的。

    早些年的服务实现和实施思路是将很多功能从开发到交付都打包成一个很大的服务单元(一般称为 Monolith),而微服务实现和实施思路则更强调功能趋向单一,服务单元小型化和微型化。

    如果用“茶壶煮饺子”来打比方的话,原来我们是在一个茶壶里煮很多个饺子,现在(微服务化之后)则基本上是在一个茶壶煮一个饺子,而这些饺子就是服务的功能,茶壶则是将这些服务功能打包交付的服务单元,如图 1 所示。

    论茶壶里煮“饺子”的不同形式
    图 1  论茶壶里煮“饺子”的不同形式


    所以,从思路和理念上来讲,微服务就是要倡导大家尽量将功能进行拆分,将服务粒度做小,使之可以独立承担对外服务的职责,沿着这个思路开发和交付的软件服务实体就叫作“微服务”,而围绕着这个思路和理念构建的一系列基础设施和指导思想,笔者将它称为“微服务体系”。

    微服务是怎么来的?

    微服务的概念我们应该大体了解了,那么微服务又是怎么来的?原来将很多功能打包为一个很大的服务单元进行交付的做法不能满足需求吗?

    实际上,并非原来“大一统”(Monolith)的服务化实践不能满足要求,也不是不好,只是,它有自己存在的合理场景。

    对于 Monolith 服务来说,如果团队不大,软件复杂度不高,那么,使用 Monolith 的形式进行服务化治理是比较合适的,而且,这种方式对运维和各种基础设施的要求也不高。

    但是,随着软件系统的复杂度持续飙升,软件交付的效率要求更高,投入的人力以及各项资源越来越多,基于 Monolith 的服务化思路就开始“捉襟见肘”。

    在开发阶段,如果我们遵循 Monolith 的服务化理念,通常会将所有功能的实现都统一归到一个开发项目下,但随着功能的膨胀,这些功能一定会分发给不同的研发人员进行开发,造成的后果就是,大家在提交代码的时候频繁冲突并需要解决这些冲突,单一的开发项目成为了开发期间所有人的工作瓶颈。

    为了减轻这种苦恼,我们自然会将项目按照要开发的功能拆分为不同的项目,从而负责不同功能的研发人员就可以在自己的代码项目上进行开发,从而解决了大家无法在开发阶段并行开发的苦恼。

    到了软件交付阶段,如果我们遵循 Monolith 的服务化理念,那么,我们一定是将所有这些开发阶段并行开发的项目集合到一起进行交付。

    这就涉及服务化早期实践中比较有名的“火车模型”,即交付的服务就像一辆火车,而这个服务相关的所有功能对应的项目成果,就是要装上火车车厢的一件件货物,交付的列车只有等到所有项目都开发测试完成后才可以装车出发,完成整个服务的交付。

    很显然,只要有一个车厢没有准备好货物(即功能项目未开发测试完成),火车就不能发车,服务就不能交付,这大大降低了服务的交付效率。如果每个功能项目可以各自独立交付,那么就不需要都等同一辆火车,各自出发就可以了。

    顺着这个思路,自然而然地,大家逐渐各自独立,每一个功能或者少数相近的功能作为单一项目开发完成后将作为一个独立的服务单元进行交付,从而在服务交付阶段,大家也能够并行不悖,各自演化而不受影响。

    所以,随着服务和系统的复杂度逐渐飙升,为了能够在整个软件的交付链路上高效扩展,将独立的功能和服务单元进行拆分,从而形成一个一个的微服务是自然而然发生的事情。

    这就像打不同的战役一样,在双方兵力不多、战场复杂度不高的情况下,Monolith 的统一指挥调度方式是合适的。而一旦要打大的战役(类似于系统复杂度提升),双方一定会投入大量的兵力(软件研发团队的规模增长),如果还是在狭小甚至固定的战场上进行厮杀,显然施展不开!

    所以,小战役有小战役的打法,大战役有大战役的战法,而微服务实际上就是一种帮助扩展组织能力、提升团队效率的应对“大战役”的方法,它帮助我们从软件开发到交付,进而到团队和组织层面多方位进行扩展。

    总的来说,一方面微服务可以帮助我们应对飙升的系统复杂度;另一个方面,微服务可以帮助我们进行更大范围的扩展,从开发阶段项目并行开发的扩展,到交付阶段并行交付的扩展,再到相应的组织结构和组织能力的扩展,皆因微服务而受惠。


    返回《Spring Boot框架入门教程(快速学习版)》目录

    更多Spring Boot教程>>

    展开全文
  • 都说基于云的微服务为什么微服务要基于云呢?云又是什么? 什么是云? "云"这个词现在已经被过度使用了,甚至是滥用。好像一提到哪个公司设计到云,我们就觉得这个公司很厉害,什么技术前沿什么的。那么云到底是...
    都说基于云的微服务,为什么微服务要基于云呢?云又是什么?

    什么是云?

    "云"这个词现在已经被过度使用了,甚至是滥用。好像一提到哪个公司设计到云,我们就觉得这个公司很厉害,什么技术前沿什么的。那么云到底是个什么呢?
    互联网领域的云这个概念,又叫云服务,包含云计算和云存储。简单来说,就是把主要的存储和计算工作放到远端的服务器上,让服务器来完成海量的存储和繁琐的计算,服务器也是计算机,是有专业用途的计算机,而你的计算机就被解放出来,只需要接收服务器的处理结果,你想要的结果。
    云服务器是集中的,是遥远的,就好像飘在天上的云一样,所以用云这个词来描述这种服务形式。集中起来就会产生规模效应,意味着更低的成本,更高的效率。
    更重要的是云服务上的硬件资源是弹性的,云供应商可以快速的为我们提供新的虚拟机和容器(就相当于扩充硬件性能),如果服务需求下降我们又可以快速的关闭虚拟机和容器,而不会产生额外的费用。
    而基于云的微服务优势是以弹性的概念为中心的,微服务架构的核心概念之一就是每个服务都被打包成一个个独立的商品。服务实例应该可以快速启动和关闭,服务的每一个实例都是完全相同的。

    为什么要用微服务呢?

    先来说说传统服务

    1.庞然大物

    做过传统项目的道友都有这种感觉,如果层次功能划分的不是太清晰的话,如果你是从立项开始做还好,但如果你是半道加入这个项目的人,那么你上手的话将会非常困难,要从头先把整个项目架构,分层都理一遍,否则写出来的东西非常糟糕。随着业务的增长,整个系统各个功能依赖关系错综复杂,经常会出现拆东墙补西墙的问题。还会有莫名其妙的Bug,这对我们维护和升级造成极大的困扰,更坑的是整个系统就是一个war包,稍微对项目有一点改动需要重新部署更新(也有可能是替换class文件)。

    2.系统脆弱

    传统项目一旦某一个点出了问题,那么结果就是整个系统完全崩溃。造成系统的可用性和稳定性非常低。

    3.移植差

    传统项目如果想要升级,迁移新平台,或者更换语言,这是非常困难的。

    4.伸缩性差

    传统项目做不到当实物量突然增加,系统可以快速的进行服务器扩增,在实物量少的时候做到服务器收缩。

    (以上是我做项目自己总结的一些,网上说的也非常好,大家可以多查一下)

    基于云的微服务技术应运而生,并且改变了我们构建应用的方式

    接触了微服务之后,也确信这是一个历史的拐点。悲叹生于这个时代,但又庆幸活在这个时代。

    通俗来讲微服务就是把传统项目分离成各个独立的模块,但他们单独又以独立的服务存在,各个服务通过api接口来交互,大家共同完成某个请求。(类比现在的手机行业,有造cpu的,有造电池的,有造主板的,完了大家一块拼起来就完成一部手机了)

    各个服务之间没有必要的联系,他们独立的负责单独的模块功能,不会造成某一个服务出现问题造成整个系统崩溃。

    不用再对整个系统进行负载均衡,我们可以针对某一项服务进行负载均衡。

    扩展非常方便,添加一个新模块就是新增加一个服务。

    展开全文
  • 二、为什么要用微服务? 通常我们把微服务说成是一个技术架构的进化,从第一代的单体架构,到期第二代SOA架构,第三代微服务架构。 第三代的出现,一定是为了解决第一代和第二代的不足之处的: 第一代的主要...

    一、微服务是什么?

          定义:微服务是一些协同工作的小而自治的服务,这个服务是高凝聚力和松散耦合的。

          微服务有以下特征:

         1.一组小的服务(大写没有特别的标准,只要同一个团队的工程师理解服务的标识一致即可)。

          2.独立的进程

         3.轻量级的通信(不是soap,是http协议)

         4.基于业务能力

         5.独立部署(迭代速度快)

         6.无集中式管理(无须统一技术栈)

    二、为什么要用微服务?    

       通常我们把微服务说成是一个技术架构的进化,从第一代的单体架构,到期第二代SOA架构,第三代微服务架构。

    第三代的出现,一定是为了解决第一代和第二代的不足之处的:

    第一代的主要问题:太过耦合,部署成本过高(修改一行,均要全部改),重复做轮子,完全封闭的架构。

    第二代的主要问题:ESB总线进行集成,扩容困难,集中式的。

    第三代:松散耦合,专注某个业务的小团队(2个比萨的成员数),升级按天/周进行发布,全自动化,扩展弹性,高可用。

     

    三、微服务特点及价值:

      价值:(1) 高频发布或升级 (2)可复用  (3)分布式易扩容,满足高并发需求。

      特点:一句“高凝聚力和松散耦合”。

          特点解释:(1)专注某个业务  (2)自治性  (3)它是一个独立的实体  (4)对微服务有专门的划分原则及治理技术手段,避免把多个服务部署在同一台机器。

     

         

    展开全文
  • 为什么我们需要微服务架构  最近这几年,伴随着云计算技术的进步以及服务的增长,微服务逐渐成为在博客、媒体讨论组和会议演讲中出现的热门话题,这也让它被更多的人重点关注。尽管微服务架构存在着非常多争论,但...

    为什么我们需要微服务架构

      最近这几年,伴随着云计算技术的进步以及服务的增长,微服务逐渐成为在博客、媒体讨论组和会议演讲中出现的热门话题,这也让它被更多的人重点关注。尽管微服务架构存在着非常多争论,但这并不影响它正在为敏捷部署以及复杂企业应用实施提供着巨大的帮助的事实。为什么我们需要微服务架构?与传统SOA相比,微服务架构有哪些优势?在使用微服务架构时,我们又将面临哪些挑战?本文将一一为你揭晓!

      一、关于微服务的理解

      2012年微服务这一概念大致开始出现,是因软件作者Martin Fowler而流行,围绕业务、自动化部署、终端智能以及语言和数据的分散控制有一些常见的新特性。随着云计算技术的进步和服务的增长,微服务架构越来越多的受到了人们的关注。微服务也是一项在云中部署应用和服务的新技术。虽然也存在着许多不同的争论,微服务架构模式却正在为敏捷部署以及复杂企业应用实施提供着巨大的帮助。

      一般来说,我们的开发也是模块化设计逻辑,程序完成后会打包并部署为一个个具体的应用。每个具体的格式依赖于相应的应用语言和框架。举个例子,Java应用通常会被打包为WAR格式,部署在Tomcat或者Jetty上,而另外一些Java应用会被打包成自包含的JAR格式,同样,Rails和Node.js会被打包成层级目录。这种应用开发风格很常见,也很易于调试,只需要简单运行此应用,用些工具链接UI就可以完成端到端测试。打包好的应用拷贝到服务器端,通过在负载均衡器后端运行多个拷贝就可以轻松实现应用扩展。在早期这类应用运行的都很好,但一个简单的应用会随着时间推移逐渐变大。几年后,这个小而简单的应用会变成了一个巨大的怪物。一旦你的应用变成一个庞大而又复杂的怪物,那开发团队肯定会很痛苦。敏捷开发和部署举步维艰,其中最主要问题就是这个应用太复杂,以至于任何单个开发者都不可能搞懂它。因此,修正bug和正确的添加新功能将变的非常困难,并且很耗时。

      当一个应用越大,启动时间就会越长。那么大部分时间就要在等待中渡过,生产效率会受到极大影响。

      另外,一个应用在不同模块发生资源冲突时,扩展将会十分的困难。应用的另外一个问题是可靠性。当所有模块都运行在一个进程中,任何一个模块中的一个bug,比如说,内存泄露,将会有可能弄垮整个进程。除此之外,因为所有应用实例都是唯一的,这个bug将会影响到整个应用的可靠性。

      如果采用微服务处理结构模式则可以很好的解决上述问题。微服务架构的思想不是开发一个复杂巨大的应用,而是将应用分解为若干小的、互相连接的微服务。

      二、微服务的六大优势

      微服务架构相对于传统的SOA,优势也很明显:

      优势1、功能特定:一个微服务一般完成某个特定的功能,比如消息管理、客户管理等等。每一个微服务都有自己的业务逻辑和适配器。一些微服务还会发布API给其它微服务和应用客户端使用。其它微服务完成一个Web UI,运行时,每一个实例可能是一个云VM或者是Docker容器。

      优势2、复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。

      优势3、独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。

      优势4、技术选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,当需要对技术栈进行升级时所面临的风险较低,甚至完全重构一个微服务也是可行的。

      优势5、容错:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。

      优势6、扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。

      三、微服务的三大挑战

      挑战1:波及多个服务:最后一个问题在于,微服务架构模式应用的改变将会波及多个服务。比如,假设你在完成一个项目案例,需要修改服务A、B、C,而A依赖B,B依赖C。在单个应用中,你只需要改变相关模块,整合变化,部署就好了。相比之下,微服务架构模式就需要考虑相关改变对不同服务的影响。比如,你需要更新服务C,然后是B,最后才是A,幸运的是,许多改变一般只影响一个服务,而需要协调多服务的改变很少。

      挑战2:固有的复杂性:微服务架构有很多优点,当然也有其不足。比如微服务应用是分布式系统,由此会带来固有的复杂性。开发者需要在RPC或者消息传递之间选择并完成进程间通讯机制。更甚于,他们必须写代码来处理消息传递中速度过慢或者不可用等局部失效问题。

      挑战3:分区的数据库架构:另外一个关于微服务的挑战来自于分区的数据库架构。在商业交易系统中同时给多个业务分主体更新消息很普遍。这种交易对于单个应用来说很容易,因为只有一个数据库。而在微服务架构应用中,需要更新不同服务所使用的不同的数据库。使用分布式交易并不一定是好的选择,不仅仅是因为CAP理论,还因为今天高扩展性的NoSQL数据库和消息传递中间件并不支持这一需求。最终你不得不使用一个最终一致性的方法,从而对开发者提出了更高的要求和挑战。

      使用微服务构建适合云的新型应用是很有意义的,因为它让你既利用了横向扩展架构,也利用了纵向扩展架构,还额外得到API的组合,且在整个业务中可重复利用。可能在每一分钟都在交付新服务,这样你就会拥有一个敏捷的且即时响应的应用程序平台,当然这一平台一直在不断改进中,微服务架构也在前进着。

      四、微服务的主要周边技术

      1)、微服务与PAAS

      2)、DOCKER容器

      3)、微服务与数据库

      4)、微服务与数据一致性

      5)、微服务与分布式

      6)、微服务架构与SOA

      7)、云VM

      8)、微服务与Mesos或者Kubernetes

      9)、微服务与自动化部署

      10)、微服务层面如何提供缓存、权限控制、API统计和监控

     

    http://www.023dns.com/aliyunyingyong/4010.html

    展开全文
  • 什么微服务

    万次阅读 多人点赞 2017-11-27 09:53:12
     在介绍微服务时,首先得先理解什么微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO...
  • 前言 为什么要有微服务呢?...架构的演变,即为什么会出现微服务技术 什么是微服务,即微服务的标准概念 微服务要解决什么问题,即微服务中那么多的组件都是干嘛的 从单体到微服务「小故事讲...
  • 为什么要用分布式架构,又为什么要用微服务

    万次阅读 多人点赞 2018-01-20 14:43:31
    上次面试时经常被问到一个问题,你为什么要用dubbo? 由于经验尚浅,实在是没说得明明白白。 我用了dubbo后,我就可以这样调接口,巴拉巴拉,说到底还是争不过面试官问:那照你这么说,我不用分布式架构也可以完成...
  • 本文是《微服务治理实践》系列篇的第七篇文章,大家介绍微服务治理+测试:基于服务契约信息,降低云上微服务测试成本。该系列文章基于阿里云商业化产品 MSE 的微服务实践,如果您的团队具备较强...
  • 技术每年都会有新的概念产生,这也是说为什么it行业需要终生学习的原因。不过如果不出现大的技术变革,计算机的原理没变,那么学习各种技术相对还是比较容易,大多还是从设计理念上的改进。即使是这样,每年也都有很...
  • 微服务是将应用程序拆分多个服务的一种架构类型,这些服务具备构成整个应用程序的细粒度功能。每个微服务将具备针对您的应用程序的不同逻辑功能。与应用程序的所有组件和功能都在单个实例中的单体架构相比,微服务...
  • 微服务(一):为什么需要微服务 微服务出现的原因 单体架构存在不足 业务越来越复杂,单体应用的代码量越来越大,代码的可读性、可维护性、可拓展性下降,新人接手代码所需的时间成倍增加,业务扩展带来的代价极大。...
  • 为什么使用微服务

    2019-08-01 21:56:36
    2,微服务的定义 3,微服务的优点 1.服务拆分 2.数据一致性 3.服务通信 4.服务网关 6.可靠性 单体的优缺点 单体应用就是将应用程序的所有功能都打包成一个独立的单元,最终以一个WAR包或JAR包存在,没有外部...
  • 2、代码提交合并频繁出现冲突; 3、核心业务和非核心业务耦合严重,牵一发而动全身; 4、业务流量逐渐加大,横向扩展愈加复杂,服务治理迫不及待; 当单体服务的痛点足够大,微服务便势在必行了。但是我们一定要充分...
  • 今天在知乎上看到这样一个问题:"为什么游戏公司的 Server 不愿意微服务化? 背景介绍: 最近面试了一家游戏公司(满大间的,有上市),我问他,公司有没有做微服务架构的打算及考量? 他很惊讶的说: 我没听说过微服务耶...
  • 面试时候,一个面试官问:为什么要采用微服务架构? 我说了一通网上百度到的,他还是不满意。 https://www.jianshu.com/p/b9e58893bbc0 网上很多都说了 微服务 的优点,但是都不是最关键的, 因为 很多问题,对...
  • 微服务 微服务

    2017-12-11 15:34:27
    解析微服务架构系列文章将分几...为什么需要微服务架构 “微服务”架构是近期软件应用领域非常热门的概念。让我们先来看看传统IT架构面临的一些问题:   使用传统的整体式架构(Monolithic Architecture
  • 微服务

    2018-08-12 10:35:16
     在介绍微服务时,首先得先理解什么微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释...
  • 主要功能查看文章-什么微服务微服务挺好微服务出现,仿佛秋天里的第一杯奶茶,给了互联网企业初恋的感觉,仿佛所有的问题都迎刃而解了。整个企业都在推进微服务的改革。“某个技术难题攻克不了,大概是系统...
  • 什么微服务微服务就是一些协同工作的小而自制的服务。1. 很小,专注于做好一件事随着新功能的增加,代码库越来越大。时间久了代码库非常庞大,以至于想要知道该在什么地方修改都很困难。尽管我们想在巨大的...
  • 微服务架构场景中,一个客户端发起的请求要经过多个服务的调用最终聚合数据结构返回给客户端,但我们不知道这个请求不知道经过哪些服务,调用哪个服务出现了问题,每个服务的输入输出是什么,这给我们定位问题带来...
  • 【编者按】 近几年,随着云计算技术的进步和服务的增长,微服务越来越成为在博客、媒体讨论组和会议演讲中出现的热门话题,被更多的人重点关注...究竟我们为什么需要微服务架构?与传统SOA相比,微服务架构有哪些优...
  • 为什么使用微服务

    万次阅读 2017-12-22 10:28:12
    那么面对这些问题为什么还要做分布式服务呢?因为在未来只有砥砺前行,才能走的更高更远。不过看到这些问题不要气馁,先不管这些问题,让我们一步步来梳理下现存有什么问题,我们要完成什么目标,问题自然迎刃而解...
  • 讲解为什么微服务需要 API 网关 对网关我们并不陌生,网关的概念来源于计算机网络,表示不同网络之间的关口。在系统设计中,网关也是一个重要的角色,其中最典型的是各大公司的开放平台,开放平台类网关是企业内部...
  • 十年阿里架构师告诉你为什么要使用微服务! 别打我飞 2018-08-02 22:41:33 单体的优缺点 单体应用就是将应用程序的所有功能都打包成一个独立的单元,最终以一个WAR包或JAR包存在,没有外部的任何依赖,里面...
  • 微服务架构(一):什么微服务

    万次阅读 多人点赞 2017-07-30 22:39:29
    解析微服务架构系列文章将分几...为什么需要微服务架构 “微服务”架构是近期软件应用领域非常热门的概念。让我们先来看看传统IT架构面临的一些问题:   使用传统的整体式架构(Monolithic Architecture

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,307
精华内容 37,722
关键字:

为什么会出现微服务