浅谈SpringCloud

  • 前言
    • 使用 Spring Boot 开发分布式微服务时,我们面临以下问题:
  • 关于微服务技术栈:
  • 什么是SpringCloud ?
  • 使用SpringCloud的优缺点
  • SpringCloud常见问题
    • 服务注册和发现是什么意思?Spring Cloud 如何实现?
    • SpringBoot和SpringCloud的区别?
    • 负载均衡的意义什么?
    • 什么是 Hystrix?它如何实现容错?
    • 什么是 Hystrix 断路器?我们需要它吗?
    • 什么是 Netflix Feign?它的优点是什么?
    • 什么是SpringCloudConfig?
    • 什么是Spring Cloud Gateway?

前言

使用 Spring Boot 开发分布式微服务时,我们面临以下问题:

 (1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
 (2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
 (3)冗余-分布式系统中的冗余问题。
 (4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
 (5)性能-问题 由于各种运营开销导致的性能问题。
 (6)部署复杂性-Devops 技能的要求。
因此,当遇到该问题时需要用到SpringCloud

关于微服务技术栈:

维度(springcloud)
服务开发:springboot spring springmvc
服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond
服务注册与发现:Eureka,Zookeeper
服务调用:Rest RPC gRpc
服务熔断器:Hystrix
服务负载均衡:Ribbon Nginx
服务接口调用:Fegin
消息队列:Kafka Rabbitmq activemq
服务配置中心管理:SpringCloudConfig
服务路由(API网关)Zuul
事件消息总线:SpringCloud Bus

什么是SpringCloud ?

基于 Spring Boot 的 Spring 集成应用程序,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,提供与外部系统的集成。 如服务注册与发现、配置中心、负载均衡、断路器、消息总线、数据监控等;换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。
Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
个人理解:
springcloud是一种架构,一种思想,分布式,云架构,不专注于CRUD;springcloud就相当于乐高积木
核心组件含:
Eureka:服务注册与发现。
Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。
Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。
Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。
Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。

使用SpringCloud的优缺点

根据上图:
优点:
(1)前后端分离开发,便于快速开发
(2)采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量
(3)利于扩展模块,乐高积木一般
(4)Springcloud的节点不会影响另一个节点
(5)适于互联网时代,产品迭代周期更短,如果用来做电商网站的话,性能是非常好的
缺点: 配置复杂,节点多,涉及的知识点多,所以治理成本高,不利于维护系统,且对团队挑战大

SpringCloud常见问题

服务注册和发现是什么意思?Spring Cloud 如何实现?

当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。
Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。
或者使用Nacos!!!!

SpringBoot和SpringCloud的区别?

(1)Springboot是单体个体的开发,Springcloud是分布式(多个)的开发
(2)SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系.
(3)SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

负载均衡的意义什么?

负载均衡里面提供了轮巡算法机制(默认),可以最大化吞吐量,优化资源的使用,最小化响应时间并避免任何单一资源的过载。可能会通过冗余来提高可靠性和可用性。
第二的话可以利用权重分配机制(就是根据服务器的性能来分配,提高资源的使用)
它的意义的话就是让请求均分到同一服务的每个节点上。
附:Feign接口的话就默认开启了Ribbon负载均衡(一般情况下,是用于一个服务的多个节点上才使用)

什么是 Hystrix?它如何实现容错?

Hystrix(英文意思为豪猪(带刺))是一个延迟和容错库
当出现故障是不可避免的故障时,
停止级联故障并在复杂的分布式系统中实现弹性。
主要用于服务降级,对响应慢的服务做超时快速失败处理,即熔断
如何实现容错:跳闸机制,资源隔离,监控,回退机制

什么是 Hystrix 断路器?我们需要它吗?

在微服务上我们是很需要Hystrix 断路器的
当我们的微服务有一个出问题时,就会造成很多请求等待
就会耗尽电脑的内存资源造成服务雪崩
我们使用了断路器后,请求就不是排队等待,从而加速失败判定。

什么是 Netflix Feign?它的优点是什么?

是远程调用技术;优点:实现了负载均衡,去中心化思想
附1:
feign是由Netflix开发出来的另外一种实现负载均衡的开源框架,它封装了Ribbon和RestTemplate,实现了WebService的面向接口编程,进一步的减低了项目的耦合度,因为它封装了Riboon和RestTemplate,所以它具有这两种框架的功能,可以实现负载均衡和Rest调用。
附2:
RestTemplate:需要手动开启负载均衡,手动写请求的URL,对于开发和变更不是很方便
FeignTemplate:默认开启负载均衡,写接口和服务名即可,便于升级和维护

什么是SpringCloudConfig?

是springcloud的配置中心,包括客户端和服务端两个部分;
(在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件)
附:
可以采用Eureka和Nacos作为配置中心,但是现在Eureka不开源了,所以现在用阿里巴巴的Nacos。另外Nacos还可以作为注册与发现使用。
Eureka:需要自己配置服务端
Nacos:自身就带配置中心的服务端;我们只需要添加配置项和阿里巴巴的访问项

什么是Spring Cloud Gateway?

是springcloud自身的组件,用于服务网关,所有微服务都是通过网关来访问,可以统一做限流日志、权限等操作;还可以配置路由(手动配置)
附:
限流就是限制流量,因为服务器能处理的请求数有限,如果请求量特别大,我们需要做限流(要么就让请求等待,要么就把请求给扔了),
限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击。在高并发的应用中,限流是一个绕不开的话题。

1


  1. 编写不易,如果有帮助到的话,可以关注,点赞和收藏哦~ ↩︎

什么是SpringCloud?可以用于干什么?相关推荐

  1. SpringCloud Alibaba 教程

    SpringCloud-Alibaba GitHub官方地址: https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-z ...

  2. SpringCloud五大神器(对比Dubbo+Zookeeper)

    微服务生态 在如今互联网盛行的今日,谈及架构,分布式微服务的理论应该火遍大江南北,其中以Spring家族发展而来的生态更是当今必备技能. Spring是一个全家桶,集合了众家所长,俨然成为编程行业的春 ...

  3. FATFS文件系统框架及源码分析

    FATFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块.FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开.因此,它独立(不依赖)于硬件 ...

  4. [转载]模糊系统:挑战与机遇并存——十年研究之感悟 王立新

    [转载]模糊系统:挑战与机遇并存--十年研究之感悟 王立新 http://www.ee.ust.hk/ece.php http://www.ee.ust.hk/~eewang/ 模糊系统:挑战与机遇并 ...

  5. php 处理对象用什么,程序处理的对象是什么

    程序处理的对象是"数据".在计算机的世界里,数据代表了对数字模型的抽象化的概念,同时也代表了信息:而编写程序的目的就是要处理这些数据,程序设计就是用于对数据进行处理的. 相关推荐: ...

  6. 关于指向堆的指针内涵

    对于C/C++程序员来说,指针是天堂,同时指针也是地狱.指针有多少好处,又有多少让人头疼的问题我们这里就不多说了.但为了局部解决指针的问题,我们提出了智能指针这个概念. 实际上,我一直不明白,智能指针 ...

  7. 太原市消防工程师培训_关于消防工程师的满满干货

    有关消防工程师的满满的干货知识近些年消防工程师证出现异常受欢迎,每一年报名总数都会大幅增长,可是很多人第一次听闻这一证书,并不知道这一证书是用于干什么的,也会出现那样的疑惑:消防工程师是干什么工作的, ...

  8. 安卓手机开启开发者选项

    一般我们将安卓手机通过数据线连接到电脑,会提示将手机用于干什么,有传输文件选项,充电选项,开发者调试选项.我们选择充电之后,再不会出现这个提示.有的手机开发者选项不会显示在设置界面,需要通过一些特殊操 ...

  9. 在树莓派中安装MCSM面板

    !!!图片都在,需要ipv6才能看见(不懂没关系,用手机流量即可) 检查ipv6是否可用:test-ipv6.com 就目前来看,官方更新了自动安装脚本,但是还没有更新github README文档, ...

最新文章

  1. SpringMVC调用接口一直乱码
  2. linux如何给用户加sudo权限,如何在Linux环境为用户添加sudo权限
  3. php的服务器变量$SERVER以及防止$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案
  4. python利器怎么编程-C++和Python混合编程的利器
  5. Py之nltk:nltk包的简介、安装、使用方法、代码实现之详细攻略
  6. 7x24小时实时互动,网易云信金融行业虚拟客服解决方案来啦!
  7. GitHub入门:如何上传与下载工程?
  8. 团队管理---如何管理好团队
  9. 放假为什么要借周末呢?
  10. 扩展PHP内置的异常处理类
  11. 整整1600套Axure原型图设计源文件UI UX交互设计案例
  12. android自动生成cardview,CardView
  13. 【HC-SR501人体红外传感器】
  14. 计算机二级MSoffice
  15. Android 6.0 Phone 多方通话流程
  16. 华雨打shanghtml单页网站源码
  17. java毕业设计校园内推系统mybatis+源码+调试部署+系统+数据库+lw
  18. 快播死了:各大门户视频网站能否得意的笑
  19. Android 百度在线语音识别
  20. 制作导航栏并使用CSS美化,CSS3样式创建一个漂亮简洁的导航栏

热门文章

  1. Spring之ORM
  2. python类之间方法互相调用_Python中类与类之间属性和方法的调用
  3. 运行ISTA测试代码所遇问题
  4. opencv用特征相似度将图片分类
  5. StrongSORT(deepsort强化版)浅实战+代码解析
  6. 制作准考证的步骤,作业
  7. linux软件工程师_软件测试技能图谱|自学测试路线图
  8. 【用tk写小游戏系列】用tk自制小游戏【有奖问答】
  9. jupyterhub安装与运维
  10. python一行代码实现求偶或者求奇数