专栏首页分母为零什么是微服务?

什么是微服务?

微服务

微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说是微服务的元年;

微服务是分布式系统中最近比较流行的架构模型,也是 SOA 架构的一个进化。它用于描述一种独立部署的软件应用设计方式。

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

单体应用程序可以是成功的,但人们日益对他们感到挫败,尤其是随着更多的应用程序被部署在云上。变更周期被捆绑在一起 —— 即使只变更应用程序的一部分,也需要重新构建并部署整个单体。长此以往,通常将很难保持一个良好的模块架构,这使得很难变更只发生在需要变更的模块内。程序扩展要求进行整个应用程序的扩展而不是需要更多资源的应用程序部分的扩展。

这些挫败导向了微服务架构风格:构建应用程序为服务套件。除了服务是可独立部署、可独立扩展的之外,每个服务都提供一个固定的模块边界。甚至允许不同的服务用不同的的语言开发,由不同的团队管理。

微服务架构的特征

通过服务组件化

当谈到组件时,我们遭遇困难的定义:组件是什么。我们的定义是:组件是一个可独立替换和独立升级的软件单元。

服务是一种进程外的组件,它通过web服务请求或rpc(远程过程调用)机制通信,服务是可独立部署的。

围绕业务功能进行组织

当想要把大型应用程序拆分成部件时,通常管理层聚焦在技术层面,导致UI团队、服务侧逻辑团队、数据库团队的划分。当团队按这些技术线路划分时,即使是简单的更改也会导致跨团队的时间和预算审批。一个聪明的团队将围绕这些优化,两害取其轻 - 只把业务逻辑强制放在它们会访问的应用程序中。

微服务采用不同的分割方法,划分成围绕业务能力组织的服务。这些服务采取该业务领域软件的宽栈实现,包括用户接口、持久化存储和任何外部协作。因此,团队都是跨职能的,包括开发需要的全方位技能:用户体验、数据库、项目管理。

!

去中心化数据管理

当对概念模式下决心进行分散管理时,微服务也决定着分散数据管理。微服务让每个服务管理自己的数据库:无论是相同数据库的不同实例,或者是不同的数据库系统。

对跨微服务的数据来说,去中心化责任对管理升级有影响。处理更新的常用方法是在更新多个资源时使用事务来保证一致性。

使用事务是因为它能够帮助处理一致性问题,但对时间的消耗是严重的,这给跨服务操作带来难题。分布式事务非常难以实施,因此微服务架构强调服务间事务的协调,并清楚的认识一致性只能是最终一致性以及通过补偿运算处理问题。

基础设施自动化

基础设施自动化技术在过去几年中得到了长足的发展:云计算,特别是AWS的发展,减少了构建、发布、运维微服务的复杂性。

许多用微服务构建的产品或系统是由在持续部署和它的前身持续集成有丰富经验的团队构建的。团队用这种方式构建软件,广泛使用了基础设施自动化。如下面的构建管线图所示:

参考:

http://blog.cuicc.com/blog/2015/07/22/microservices/#

https://martinfowler.com/articles/microservices.html

本文分享自微信公众号 - 分母为零(gmg1014),作者:gmg

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么要使用微服务

    单体模式所有的功能打包在一个包里,包含了 DO/DAO,Service,UI等所有逻辑。

    分母为零
  • 十二要素

    一份基准代码(Codebase),多份部署(deploy) 尽管每个应用只对应一份基准代码,但可以同时存在多份部署。每份 部署 相当于运行了一个应用的实例。

    分母为零
  • 如何具体实践微服务

    服务框架是一个比较成熟的领域,有太多可选项。Spring Boot/Cloud,由于 Spring 社区的影响力和 Netflix 的背书,目前可以认为是构建 ...

    分母为零
  • 微服务的一些概念

    传统的单体架构,把所有的功能都集中在一起,打包为一个war包,或者是可执行程序。部署的时候,需要部署一个完整的应用,升级时,也需要替换整个war包或是可执行程序...

    Tencent JCoder
  • [微服务架构 ] 微服务- 生存还是毁灭!

    上周,我谈到了作为一系列微服务开发的产品技术架构。谈话几分钟后,很明显团队已经支付了微服务高级版,但没有明显的投资回报。这组微服务是由一个由10名工程师组成的团...

    首席架构师智库
  • 不管你是开发还是运维,微服务这些你得知道!

    这几年在Java工程师招聘时,会看到很多人的简历都写着使用了Spring Cloud做微服务实现,使用Docker做自动化部署,并且也会把这些做为自己的亮点。而...

    kubernetes中文社区
  • 微服务的隐性收益

    微服务是一种构建分布式系统的方法,在微服务系统中,服务只能通过API来公开,这是一个API的世界(可以参考没有被了解的API?一个老码农眼中的API世界)。在微...

    半吊子全栈工匠
  • 架构设计之「 微服务入门 」

    微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务。一方面这些团队确实很好的推动了微服务的应用和发展,另一方面也可以看到一些盲目追技术热点的行...

    黄泽杰
  • 企业架构中的坑:你是否搞混了“服务”?

    IT 就像是个巴别塔,建的人多了,讲不清楚的概念也多了。于是,天天挂在嘴边的概念,不同人却能讲出不同的说法。结果就是侃侃而谈了半天,发现是鸡同鸭讲。本文就讲一个...

    深度学习与Python
  • 微服务概览与治理

    基本上在产品的最开始阶段,为了快速构建产品,都是单体架构,尽快我们也会按照业务划分模块,但是这个样子始终最终部署的时候还是单体式应用。

    后场技术

扫码关注云+社区

领取腾讯云代金券