微服务架构系列

高并发架构系列:服务注册与发现的实现原理、及实现优劣势比较

阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

阿里P8架构师谈:微服务技术架构、监控、Docker、服务治理等体系

阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景

阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解

阿里P8架构师谈:Docker容器的原理、特征、基本架构、与应用场景

什么是微服务

微服务的概念源于Martin Fowler所写的一篇文章“Microservices”。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful
API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

SOA和微服务的区别

Martin Fowler提出来这一概念可以说把SOA的理念继续升华,精进了一步。 微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。

从服务粒度上,既然是微,必然微服务更倡导服务的细粒度,重用组合,甚至是每个操作(或方法)都是独立开发的服务,足够小到不能再进行拆分。而SOA没有这么极致的要求,只需要接口契约的规范化,内部实现可以更粗粒度,微服务更多为了可扩充性、负载均衡以及提高吞吐量而去分解应用,但同时也引发了打破数据模型以及维护一致性的问题。

从部署方式上,这个是最大的不同,对比以往的Java
EE部署架构,通过展现层打包WARs,业务层划分到JARs最后部署为EAR一个大包,而微服务则把应用拆分成为一个一个的单个服务,应用Docker技术,不依赖任何服务器和数据模型,是一个
全栈应用,可以通过自动化方式独立部署,每个服务运行在自己的进程。

如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。

微服务架构优势

1.粒度更细(可维护和效率)

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

2.独立部署

由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。

3.容错

在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。

4.扩展

单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。

什么是Spring Boot

Spring
Boot 框架是由 Pivotal 团队提供的全新框架,其设计目的是用来简化基于 Spring
应用的初始搭建以及开发过程。SpringBoot
框架使用了特定的方式来进行应用系统的配置,从而使开发人员不再需要耗费大量精力去定义模板化的配置文件。

什么是Spring Cloud

Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等,是微服务的一种实现。

Spring Cloud的核心成员

1.Spring Cloud Netflix

Spring Cloud Netflix 集成众多Netflix的开源软件:Eureka, Hystrix, Zuul, Archaius,组成了微服务的最重要的核心组件。

2.Netflix Eureka

服务中心,用于服务注册与发现,一个基于 REST 的服务,用于定位服务。

3.Netflix Hystrix

熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

4.Netflix Zuul

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。

5.Netflix Archaius

配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能,可以实现动态获取配置。

6.Spring Cloud Config

配置中心,利用git集中管理程序的配置。

7.Spring Cloud Bus

事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

8.Spring Cloud Ribbon

Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。

Spring Cloud架构实现

通过这张图,可以比较清楚的了解到各组件配置使用运行机制:

1、请求统一通过API网关(Zuul)来访问内部服务.

2、网关接收到请求后,从注册中心(Eureka)获取可用服务

3、由Ribbon进行均衡负载后,分发到后端具体实例

4、微服务之间通过Feign进行通信处理业务

5、Hystrix负责处理服务超时熔断

6、Turbine监控服务间的调用和熔断相关指标

微服务、Spring Cloud、Spring Boot三者关系

微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。

  1. SpringBoot专注于快速方便的开发单个个体微服务。
  2. SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,
  3. 为各个服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、精选决策、分布式会话等集成服务。
  4. SpringBoot可以离开SpringCloud独立开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系。
  5. SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

微服务目前主流就Spring Cloud和Dubbo,相关的比较也可以参考:阿里P8架构师谈:微服务Dubbo和Spring Cloud架构设计、优劣势比较

你可能也喜欢:

  1. 阿里P8架构师谈:Spring Cloud与Dubbo的详细比较
  2. BAT研发Java面试36题总结:Spring+Redis+Docker+Dubbo
  3. 2019最新拼多多Java面试题:幻影读+分段锁+死锁+Spring Cloud+秒杀
  4. 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景
  5. 阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较
  6. 微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较

Spring Cloud的核心成员、以及架构实现详细介绍相关推荐

  1. 高并发架构系列:Spring Cloud的核心成员、以及架构实现详细介绍

    高并发架构系列:Spring Cloud的核心成员.以及架构实现详细介绍 什么是微服务 微服务的概念源于Martin Fowler所写的一篇文章"Microservices". 微 ...

  2. Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】

    通过上一篇<分布式服务跟踪(整合logstash)>,我们虽然已经能够利用ELK平台提供的收集.存储.搜索等强大功能,对跟踪信息的管理和使用已经变得非常便利.但是,在ELK平台中的数据分析 ...

  3. Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】

    通过之前的<入门示例>,我们已经为两个由SpringCloud构建的微服务项目 trace-1和 trace-2引入了Spring Cloud Sleuth的基础模块 spring-clo ...

  4. Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)

    通过上一篇<分布式服务跟踪(入门)>的例子,我们已经通过Spring Cloud Sleuth往微服务应用中添加了实现分布式跟踪具备的基本要素.下面通过本文来详细说说实现分布式服务跟踪的一 ...

  5. Spring Cloud构建微服务架构(五)服务网关

    通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...

  6. Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】

    前言 在上一篇<Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)>中,我们已经体验了如何使用@HystrixCommand来为一个依赖资源定义服务降级逻辑.实 ...

  7. Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】

    在上一篇<服务容错保护(hystrix断路器)>的介绍中,我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的.而这些请求情况的指标信息都是HystrixComm ...

  8. Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

    在上一篇<Spring Cloud构建微服务架构:服务网关(基础)>一文中,我们通过使用Spring Cloud Zuul构建了一个基础的API网关服务,同时也演示了Spring Clou ...

  9. Spring Cloud构建微服务架构:消息驱动的微服务(核心概念)【Dalston版】

    通过<Spring Cloud构建微服务架构:消息驱动的微服务(入门)>一文,相信大家对Spring Cloud Stream的工作模式已经有了一些基础概念,比如:输入.输出通道的绑定,通 ...

最新文章

  1. html 连续发送数据库,不要在循环中对数据库进行操作.htm
  2. SET_TABLE_FOR_FIRST_DISPLAY 参数 I_SAVE
  3. React Native微信支付开发爬坑之旅
  4. Mysql 中的事件//定时任务
  5. Minor GC和Major GC和Full GC
  6. 小例子背后的大道理——Adapter模式详解
  7. 使用js获取ajax对象,JS获取dom 对象 ajax操作 读写cookie函数
  8. 计算机函数公式 加法,excel怎样使用加法函数公式
  9. Google高级搜索技巧之高级语法查询指令
  10. 技能系统(Unity 3D)——学习笔记(三)
  11. uni-app入门(一)--介绍
  12. 【PhotoScan精品教程】任务四:PhotoScan做空三+CC生成正射、三维建模综合案例
  13. 百度地图滑动后获取屏幕的中心点百度坐标
  14. 快速定位线上慢 SQL 问题,掌握这几个性能排查工具可助你一臂之力
  15. 微博下载|微博app下载
  16. 李嘉诚,原一平的故事
  17. 【转载】基于LLVM Pass实现控制流平坦化
  18. 神奇的css(动态水滴)
  19. 2020年数学建模国赛C题题目和解题思路
  20. 中文错别字检查添加了二维码入口

热门文章

  1. 《软件工程》individual project开发小记(一)
  2. 世界是个班,美国是班长,中国是团支书(太经典了!)
  3. 如何将android例子程序添加到Eclipse进行调试运行
  4. 大佬为何可以把单片机描述得如此形象生动?
  5. 使用Adobe Audition生成基本音频
  6. 这两天,我们还没毕业
  7. Linux CAN通信
  8. Orange——The Data
  9. 【Pytorch神经网络实战案例】24 基于迁移学习识别多种鸟类(CUB-200数据集)
  10. div超出不换行_div+CSS设置一行内文字超过宽度不换行且不显示