1、微服务架构介绍

微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。

概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

定义:围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。

本质:用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。

2、模式描述

不管你使用何种实现风格和拓扑,有几个通用的核心概念应用在这种架构模式上。首先是分隔发布单元(separately deployed units)。

如图所示,每一个微内核的组件都被分隔成一个独立的单元。

微服务包含服务组件(service component)。不要考虑微内核的单个服务,而是最好考虑服务组件,从粒度上讲它可以是单一的模块或者一个一个大的应用程序,代表单一功能(提供天气预报或者图片存储)。

正确设计服务组件的粒度是一个很大的挑战。

另一个关键概念是微内核是分布式的。这意味着服务组件可能是远程方法(通过JMS, AMQP, REST, SOAP, RMI......等等)。分布式意味着这种模式可以建立大规模的应用。

另一个值得兴奋的特性是它可以从其它有问题的架构模式中演化出来,而不是直接创建出来等待问题发生。当你遇到一些无法解决的问题,特别是互联网企业的规模扩大时,是很好的引入微服务架构的时机。

一般会从两个模式中演化:

  • 一种就是一开始就是整体的应用,所有的模块都是紧耦合的;

  • 另外一种是面向服务的架构模式(SOA,service-oriented architecture pattern)。SOA不是不好,但是太昂贵了,不好理解和实现。

3、模式拓扑

有很多实现微服务的方式。最通用最流行的三个方式是: API REST-based, applicaiton REST-based 和 中心化的消息。API REST-based 适合网站提供小规模的,自包含的服务。很多互联网网站都提供这样的服务,比如OAuth2服务。

application REST-based不同于上面的架构,客户端看到的是web界面或者富客户端程序,而不是调用API。UI层独立发布,可以访问服务组件。

中心消息模式,它类似前面的模式,但是使用一个轻量级的消息broker取代RESTful的服务调用。这个轻量级的broker不会执行服务的编排,传输和路由,这和SOA不同,不要把它看作SOA的简化版。

4、架构考量

微服务架构解决了无架构的整体编码的应用的问题以及SOA的问题。同时它还可以提供实时的产品发布。它是一个分布式架构,也会有上面分布式的问题。

微服务模式优劣分析:

  • 总体灵活性: 高

  • 发布易用性: 高

  • 可测试性: 高

  • 性能: 低

  • 规模扩展性: 高

  • 开发容易度: 高

5、总结

微服务作为单一整体的程序和面向服务架构的替代者, 微服务架构模式在工业界很快赢得了地位。这种模式还在进化之中,在业界对于它的特性和实现还有些困惑。对于我们的思考,更多的是思维上的转变。对于微服务架构:技术上不是问题,意识比工具重要。

软件架构模式之微服务架构相关推荐

  1. java 熔断器模式_微服务架构熔断器机制的概念以及常用组件类型

    熔断器机制是我们在学习微服务编程开发的时候需要重点掌握的一个编程技术知识点,而今天我们就通过案例分析来了解一下,熔断器机制的概念以及常用组件类型都有哪些. 所谓熔断器机制,即类似电流的保险器,当然电压 ...

  2. 如何基于DDD构建微服务架构

    微服务构建本质上是软件构建过程中长期演进积累的一系列理念.架构原则.工具和最佳实践. 领域驱动设计的软件思想体系和方法论可以用于指导微服务建模.微服务划分.微服务架构设计等相关工作,它可以促使技术人员 ...

  3. 微服务架构到底是什么鬼?

    戳蓝字"CSDN云计算"关注我们哦! 摘自<微服务架构设计模式> 作者::[美] (Chris Richardson) 译者:喻勇 导语:微服务架构如何与更广泛的软件架 ...

  4. python 微服务架构实战_《分布式服务架构:原理、设计与实战》第一章分布式微服务架构设计原理...

    1.从传统单体架构到服务化架构 1.1 JEE架构 JEE将企业级软件架构分为三个层级 : Web 层.业务逻辑层和数据存取层.对应的职能团队,主要包括:用户 交互 UI 团队.后台业务逻辑处理团 队 ...

  5. 技术研究院005---如何基于DDD构建微服务架构

    微服务构建本质上是软件构建过程中长期演进积累的一系列理念.架构原则.工具和最佳实践. 领域驱动设计的软件思想体系和方法论可以用于指导微服务建模.微服务划分.微服务架构设计等相关工作,它可以促使技术人员 ...

  6. 微服务架构的核心要点和实现原理

    https://blog.csdn.net/qiansg123/article/details/80131044 微服务架构中职能团队的划分 传统单体架构将系统分成具有不同职责的层次,对应的项目管理也 ...

  7. 微服务架构的核心要点和实现原理解析

    摘要:本文中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务在读者正在工作的项目中起到积极的作用. 微服务架构中职能团队的划分 传统单体架构将系统分成具 ...

  8. 宜信微服务架构落地及其演进

    一.应用服务架构演进及微服务架构介绍 1.1 应用架构的演进历程 应用服务架构一直处于不断演进的过程中,上图通过对比 5 种比较主流的架构模式,展示应用架构的演进历程和变化. 单体架构(All in ...

  9. saas系统的微服务器,基于微服务架构的SaaS服务应用的研究与实践

    摘要: SaaS(Software as a Service)应用作为一种新型的软件服务模式,在日常生产生活中越来越重要.在SaaS应用的落地过程中传统的的单体架构不能满足SaaS应用的需求,于是微服 ...

最新文章

  1. Oracle --获取绑定变量的值.
  2. [置顶] 面向业务开发应用
  3. 07.GitHub实战系列~7.Git之VS2013团队开发(如果不想了解git命令直接学这篇即可)...
  4. 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
  5. AutoML大提速,谷歌开源自动化寻找最优ML模型新平台Model Search
  6. 650服务器raid配置_DELL R730服务器配置RAID及安装服务器系统
  7. boost::range::istream_range相关的测试程序
  8. 算法是怎样决定你的职业生涯的
  9. 【转】逆变与协变详解
  10. 【机器学习】Softmax和Sigmoid
  11. php对smarty的使用,[ php ] php smarty使用!
  12. [BZOJ2118] 墨墨的等式(最短路)
  13. 初始化和清理(垃圾回收器)
  14. 安装Pygame的方法
  15. itools电脑显示服务器维护,win10系统iTools无法打开且服务无法启动的具体技巧
  16. 数据结构c语言版李冬梅PDF,数据结构(C语言版) 习题答案 严蔚敏 李冬梅 吴伟民 23490数据结构习题答案.pdf...
  17. 推荐几个不错第 Java 学习网站
  18. 复数 实数 有理数 无理数
  19. win10服务器密码怎么修改,教你windows10密码更改
  20. 怎么训练神经网络模型,神经网络模型训练过程

热门文章

  1. 裸辞3个月扛不住后,随便接了offer更惨!
  2. make/Makefile的用法
  3. 关于Angry Birds不能在我的板子上执行的探索
  4. Unity自定义工具之引用查找
  5. A095_Html5入门
  6. mysql如何存储表情,表情在 MySQL 的存储详解
  7. 与佛论禅,rot-13,base64
  8. 字符界面的收银台管理系统测试用例
  9. linux中ugo什么权限,Linux权限机制:UGO | 昆特斯的控
  10. leetcode java解题_leetcode解题技巧及相关Java知识(定期更新)