1.微服务介绍

1.1 什么是微服务?

  • 微服务是一种架构风格,也是一种服务;
  • 微服务的颗粒比较小,一个大型复杂软件应用由多个微服务组成,比如Netflix目前由500多个的微服务组成;
  • 它采用UNIX设计的哲学,每种服务只做一件事,是一种松耦合的能够被独立开发和部署的无状态化服务(独立扩展、升级和可替换)。

1.2 微服务架构图

1.3 微服务的好处

  • 技术异构性:在一个由多个服务相互协作的系统中,可以在不同的服务中使用最适合该服务的技术。
  • 弹性:如果系统中的一个组件不可用了,但并没有导致级联故障,那么系统的其他部分还可以正常运行。
  • 扩展:可以只对那些需要扩展的服务进行扩展。
  • 简化部署:各个服务的部署是独立的,这样就可以更快地对特定部分的代码进行部署。
  • 与组织结构相匹配:可以很好地将架构与组织结构相匹配,避免出现过大的代码库,从而获得理想团队大小及生产力。
  • 可组合性:不同服务模块的接口可以再进行重用,成为其他产品中的一个组件;
  • 对可替代性的优化:可以在需要时轻易地重写服务,或者删除不再使用的服务

1.4 微服务的缺点

  1. 运维开销 更多的服务也就意味着更多的运维,产品团队需要保证所有的相关服务都有完善的监控等基础设施,传统的架构开发者只需要保证一个应用正常运行,而现在却需要保证几十甚至上百道工序高效运转,这是一个艰巨的任务。
  2. DevOps要求 使用微服务架构后,开发团队需要保证一个Tomcat集群可用,保证一个数据库可用,这就意味着团队需要高品质的DevOps和自动化技术。而现在,这样的全栈式人才很少。
  3. 隐式接口 服务和服务之间通过接口来“联系”,当某一个服务更改接口格式时,可能涉及到此接口的所有服务都需要做调整。
  4. 重复劳动 在很多服务中可能都会使用到同一个功能,而这一功能点没有足够大到提供一个服务的程度,这个时候可能不同的服务团队都会单独开发这一功能,重复的业务逻辑,这违背了良好的软件工程中的很多原则。
  5. 分布式系统的复杂性 微服务通过REST API或消息来将不同的服务联系起来,这在之前可能只是一个简单的远程过程调用。分布式系统也就意味着开发者需要考虑网络延迟、容错、消息序列化、不可靠的网络、异步、版本控制、负载等,而面对如此多的微服务都需要分布式时,整个产品需要有一整套完整的机制来保证各个服务可以正常运转。
  6. 事务、异步、测试面临挑战 跨进程之间的事务、大量的异步处理、多个微服务之间的整体测试都需要有一整套的解决方案,而现在看起来,这些技术并没有特别成熟。

2.SpringCoud介绍

SpringCloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于SpringBoot构建,对我们熟悉Spring的程序员来说,上手比较容易。

通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。

SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix

下面简单介绍下经常用的5个

  • 服务发现——Netflix Eureka
  • 客服端负载均衡——Netflix Ribbon
  • 断路器——Netflix Hystrix
  • 服务网关——Netflix Zuul
  • 分布式配置——Spring Cloud Config

2.1 Eureka

作用:实现服务治理(服务注册与发现)

简介:Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。

由两个组件组成:Eureka服务端和Eureka客户端。

Eureka服务端用作服务注册中心。支持集群部署。

Eureka客户端是一个java客户端,用来处理服务注册与发现。

在应用启动时,Eureka客户端向服务端注册自己的服务信息,同时将服务端的服务信息缓存到本地。客户端会和服务端周期性的进行心跳交互,以更新服务租约和服务信息。

2.2 Ribbon

作用:Ribbon,主要提供客户侧的软件负载均衡算法。

简介:Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。注意看上图,关键点就是将外界的rest调用,根据负载均衡策略转换为微服务调用。Ribbon有比较多的负载均衡策略,以后专门讲解。

2.3 Hystrix

作用:断路器,保护系统,控制故障范围。

简介:为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

2.4 Zuul

作用:api网关,路由,负载均衡等多种作用

简介:类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。

在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务端。

2.5 Config

作用:配置管理

简介:SpringCloud Config提供服务器端和客户端。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。

这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新。

3.相关组件架构图

从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构。

  • 其中Eureka负责服务的注册与发现,很好将各服务连接起来
  • Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护。
  • Hystrix dashboard,Turbine 负责监控 Hystrix的熔断情况,并给予图形化的展示
  • Spring Cloud Config 提供了统一的配置中心服务
  • 当配置文件发生变化的时候,Spring Cloud Bus 负责通知各服务去获取最新的配置信息
  • 所有对外的请求和服务,我们都通过Zuul来进行转发,起到API网关的作用
  • 最后我们使用Sleuth+Zipkin将所有的请求数据记录下来,方便我们进行后续分析

4.为什么使用SpringCloud

Spring Cloud从设计之初就考虑了绝大多数互联网公司架构演化所需的功能,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。这些功能都是以插拔的形式提供出来,方便我们系统架构演进的过程中,可以合理的选择需要的组件进行集成,从而在架构演进的过程中会更加平滑、顺利。

微服务架构是一种趋势,Spring Cloud提供了标准化的、全站式的技术方案,意义可能会堪比当前Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。

5.SpringCloud官网

Spring Cloud中文文档:https://springcloud.cc/

官网:https://projects.spring.io/spring-cloud/

SpringCloud(1):SpringCloud介绍相关推荐

  1. springcloud微服务介绍及应用场景

    目录 1 微服务的介绍 1.1系统架构演变 1.1.1 单体应用架构 1.1.2 垂直应用架构 1.1.3 分布式架构 1.1.5 微服务架构 1.2 微服务架构介绍 1.2.1 微服务架构的常见问题 ...

  2. SpringCloud:入门介绍

    1.微服务简介 业界大牛马丁.福勒(Martin Fowler) 这样描述微服务: 论文网址:            https://martinfowler.com/articles/microse ...

  3. 深入学习SpringCloud之SpringCloud简介

    Spring Cloud是什么? SpringCloud官网:http://spring.io Spring Cloud是一个一站式的开发分布式系统的框架,为开发者提供了一系列的构建分布式系统的工具集 ...

  4. SpringCloud——Gateway(介绍、快速入门、网关集群)

    介绍 网关是微服务最边缘的服务,直接暴露给用户,用来做用户和微服务的桥梁. Gateway是Spring官方提供的用来代替zuul的网关组件 核心逻辑:路由转发 + 执行过滤器链 三大核心概念 Rou ...

  5. springCloud五大核心组件介绍

    目录 一.首先看一张springCloud的图片 二.简单介绍下什么是springCloud? 三.为了方便理解假设一个业务场景 四.SpringCloud核心组件Eureka(类似于zookeepe ...

  6. SpringCloud:SpringCloud生态的组成,组件的介绍(一)

    springCloud官方文档: https://www.springcloud.cc/ (中文网) https://spring.io/projects/spring-cloud/(官方网) Spr ...

  7. springboot和springcloud功能详细介绍

    一. 什么是springboot 1.用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 2.创建独立的spring引用程序 main方法运行 ...

  8. SpringCloud Consul功能介绍及其Raft算法原理

    一.Consul 简介 Consul 为一款包含服务注册与发现.分布式一致性协议实现.健康检查.Key/Value存储.多数据中心方案 一体化的注册中心工具. 二.主要功能 服务注册与发现 添加依赖, ...

  9. 【SpringCloud】SpringCloud简介

    SpringCloud简介 1.认识微服务 1.0.学习目标 1.1.单体架构 1.2.分布式架构 1.3.微服务 1.4.SpringCloud 1.5.总结 2.服务拆分和远程调用 2.1.服务拆 ...

  10. SpringCloud之SpringCloud常用的五大组件

    本篇文章体系 了解系统架构的演变 了解RPC与Http的区别 掌握HttpClient的简单使用 知道什么是SpringCloud 独立搭建Eureka注册中心 独立配置Robbin负载均衡 1.系统 ...

最新文章

  1. 深入理解Netty-从偶现宕机看Netty流量控制
  2. SAP公司间STO流程里外向交货单PGI后自动触发内向交货单的实现
  3. Android Camera MSM HAL
  4. rabbitmqctl status报错
  5. Spring框架中的设计模式(三)
  6. linux 基础命令2
  7. 编码注释coding: utf-8
  8. matlab子函数调用变量,matlab中,怎么样用function自定义函数调用另一个函数名为输入?...
  9. 汇总jQuery的61种选择器及示例
  10. TCP 客户端和服务器端
  11. 前端学习(3153):react-hello-react之脚手架文件介绍
  12. 外围功能电路控制 LET′S TRY“嵌入式编程”: 4 of 6
  13. datepicker动态初始化
  14. 计算机科学家 收入,你离年薪100万的数据科学家还差10个“码农”
  15. 汉明码---存储器校验(简单易懂详解)
  16. LeetCode题解之Missing Number
  17. 六石管理学: 头目们是如何忽略产品质量的
  18. 深刻揭露步态识别的“谎言”(篇一)
  19. Android代码中模拟点击事件
  20. matlab 正态分布分位点,为标准正态分布的上a分位点.PPT

热门文章

  1. 利用Python数据处理进行公交车到站时间预测(一)
  2. VSCode设置快捷键
  3. oracle设置快捷键,打印sf输出select * from
  4. 荣耀战魂冥界回归服务器维护,荣耀战魂万圣节活动上线冥界回归脑袋变南瓜_逗游网...
  5. hibernate级联保存报空指针异常
  6. 卡苹果6plus在线_答题攻略、复活卡、电脑助手,你想知道的都在这里了!
  7. linux 安装vs2017,vs2017安装 CMake安装
  8. js计算两个时间之间的差,超简便的方法
  9. Cocos本周招聘汇总帖
  10. 百度、富士康、恒大跑去造车,蔚来、威马、理想、小鹏必须报团取暖?