我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么理解SpringCloud框架

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么理解SpringCloud框架

这篇文章主要介绍“ 怎么理解SpringCloud框架”,在日常操作中,相信很多人在 怎么理解SpringCloud框架问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答” 怎么理解SpringCloud框架”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

本文基于SpringBoot 1.5.7和SpirngCloud Dalston.SR5。

怎么理解SpringCloud框架

针对这个架构图我分层介绍一下:

1、是web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域访问的时候问题很多。所以我们nginx有些地方做了keep-alive模式处理,减少了三次握手的次数,提高了连接效率。keepalived做nginx的负载,虚拟一个vip对外,两个nginx做高可用,nginx本身反向代理zuul集群。

2、api  gateway,这里的zuul很多人诟病,说是速度慢推荐直接用nginx,这里我还是推荐使用zuul的,毕竟zuul含有拦截器和反向代理,在权限管理、单点登录、用户认证时候还是很有用的,而且zuul自带ribbon负载均衡,如果你直接用nginx,还需要单独做一个feign或者ribbon层,用来做业务集群的负载层,毕竟直接把接口暴露给web服务器太危险了。这里zuul带有ribbon负载均衡和hystrix断路器,直接反向代理serviceId就可以代理整个集群了。

3、业务集群,这一层我有些项目是分两层的,就是上面加了一个负载层,下面是从service开始的,底层只是单纯的接口,controller是单独一层由feign实现,然后内部不同业务服务接口互调,直接调用controller层,只能说效果一般,多了一次tcp连接。所以我推荐合并起来,因为做过spring  cloud项目的都知道,feign是含有ribbon的,而zuul也含有ribbon,这样的话zuul调用服务集群,和服务集群间接口的互调都是高可用的,保证了通讯的稳定性。Hystrix还是要有的,没有断路器很难实现服务降级,会出现大量请求发送到不可用的节点。当然service是可以改造的,如果改造成rpc方式,那服务之间互调又是另外一种情况了,那就要做成负载池和接口服务池的形式了,负载池调用接口池,接口池互相rpc调用,feign  client只是通过实现接口达到了仿rpc的形式,不过速度表现还是不错的。

4、redis缓存池,这个用来做session共享,分布式系统session共享是一个大问题。同时呢,redis做二级缓存对降低整个服务的响应时间,并且减少数据库的访问次数是很有帮助的。当然redis  cluster还是redis sentinel自己选择。

5、eurake注册中心这个高可用集群,这里有很多细节,比如多久刷新列表一次,多久监测心跳什么的,都很重要。

6、spring  admin,这个是很推荐的,这个功能很强大,可以集成turbine断路器监控器,而且可以定义所有类的log等级,不用单独去配置,还可以查看本地log日志文件,监控不同服务的机器参数及性能,非常强大。它加上elk动态日志收集系统,对于项目运维非常方便。

7、zipkin,这个有两种方式,直接用它自己的功能界面查看方式,或者用stream流的方式,由elk动态日志系统收集。但是我必须要说,这个对系统的性能损害非常大,因为链路追踪的时候会造成响应等待,而且等待时间非常长接近1秒,这在生产环境是不能忍受的,所以生产环境最好关掉,有问题调试的时候再打开。

8、消息队列,这个必须的,分布式系统不可能所有场景都满足强一致性,这里只能由消息队列来作为缓冲,这里我用的是Kafka。

9、分布式事物,我认为这是分布式最困难的,因为不同的业务集群都对应自己的数据库,互相数据库不是互通的,互相服务调用只能是相互接口,有些甚至是异地的,这样造成的结果就是网络延迟造成的请求等待,网络抖动造成的数据丢失,这些都是很可怕的问题,所以必须要处理分布式事物。我推荐的是利用消息队列,采取二阶段提交协议配合事物补偿机制,具体的实现需要结合业务,这里篇幅有限就不展开说了。

10、config配置中心,这是很有必要的,因为服务太多配置文件太多,没有这个很难运维。这个一般利用消息队列建立一个spring cloud  bus,由git存储配置文件,利用bus总线动态更新配置文件信息。

11、实时分布式日志系统,logstash收集本地的log文件流,传输给elasticsearch,logstash有两种方式,1、是每一台机器启动一个logstash服务,读取本地的日志文件,生成流传给elasticsearch。2、logback引入logstash包,然后直接生产json流传给一个中心的logstash服务器,它再传给elasticsearch。elasticsearch再将流传给kibana,动态查看日志,甚至zipkin的流也可以直接传给elasticsearch。这个配合spring  admin,一个查看动态日志,一个查看本地日志,同时还能远程管理不同类的日志级别,对集成和运维非常有利。

最后要说说,spring  cloud的很多东西都比较精确,比如断路器触发时间、事物补偿时间、http响应时间等,这些都需要好好的设计,而且可以优化的点非常多。比如:http通讯可以使用okhttp,jvm优化,nio模式,数据连接池等等,都可以很大的提高性能。

还有一个docker问题,很多人说不用docker就不算微服务。其实我个人意见,spring  cloud本身就是微服务的,只需要jdk环境即可。编写dockerfile也无非是集成jdk、添加jar包、执行jar而已,或者用docker  compose,将多个不同服务的image组合run成容器而已。但是带来的问题很多,比如通讯问题、服务器性能损耗问题、容器进程崩溃问题,当然如果你有一套成熟的基于k8s的容器管理平台,这个是没问题的,如果没有可能就要斟酌了。而spring  cloud本身就是微服务分布式的架构,所以个人还是推荐直接机器部署的,当然好的DevOps工具将会方便很多。

引言

面试中面试官喜欢问组件的实现原理,尤其是常用技术,我们平时使用了SpringCloud还需要了解它的实现原理,这样不仅起到举一反三的作用,还能帮助轻松应对各种问题及有针对的进行扩展。

以下是《Java深入微服务原理改造房产销售平台》课程讲到的部分原理附图,现在免费开放给大家,让大家轻松应对原理面试题。

服务注册发现组件Eureka工作原理

怎么理解SpringCloud框架

服务网关组件Zuul工作原理

怎么理解SpringCloud框架

跨域时序图

怎么理解SpringCloud框架

Eureka与Ribbon整合工作原理

怎么理解SpringCloud框架

解决分布式一致性

怎么理解SpringCloud框架

级联故障流程

怎么理解SpringCloud框架

断路器组件Hystrix工作原理

怎么理解SpringCloud框架

分布式追踪Sleuth工作原理

怎么理解SpringCloud框架

SpringBoot自动配置工作原理

怎么理解SpringCloud框架

到此,关于“ 怎么理解SpringCloud框架”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么理解SpringCloud框架

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

springcloud是什么框架

这篇文章主要介绍了springcloud是什么框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springCloud是基于SpringBoot的一整套实现微服务的框架。他提
2023-06-05

SpringCloud使用logback日志框架教程详解

Logback是一个功能强大的日志框架,它是一个基于slf4j的日志系统,提供了可靠的日志服务,比log4j更快,更灵活,更容易使用。本文将教会你快速让你的项目集成logback日志框架,需要的朋友可以参考下
2023-05-19

怎么理解Java微服务框架

本篇内容主要讲解“怎么理解Java微服务框架”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Java微服务框架”吧!  1、微服务哪些框架  1)Dubbo,是阿里巴巴服务化治理的核心框架
2023-06-02

怎么理解.NET可逆框架设计

本篇文章为大家展示了怎么理解.NET可逆框架设计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 什么是可逆的程序框架什么叫可逆的?程序的执行是可以被无限制回滚的。什么叫可逆的框架?实现了对可逆功
2023-06-17

怎么理解Python的回测框架backtrader

本篇内容介绍了“怎么理解Python的回测框架backtrader”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!backtrader属于功能
2023-06-01

WCF框架服务模型怎么理解

本篇内容介绍了“WCF框架服务模型怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面我们将会从WCF框架各个功能出发,来讲述WCF该
2023-06-17

go代理框架怎么使用

go代理框架可以用于实现HTTP代理或SOCKS代理。一个常用的go代理框架是goproxy,下面是使用goproxy框架实现HTTP代理的示例代码:```gopackage mainimport ("github.com/elazarl/
2023-06-14

怎么理解.NET三层架构应用中的十层框架

这篇文章给大家介绍怎么理解.NET三层架构应用中的十层框架,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。凡是接触.net开发的,***要理解的就是三层架构的重要思想。关于三层架构的概述 我就不多说了,相信大家都早已明白
2023-06-17

C#和.NET框架正则表达式怎么理解

本篇内容主要讲解“C#和.NET框架正则表达式怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#和.NET框架正则表达式怎么理解”吧!C#和.NET框架正则表达式正则表达式的一种最常用的
2023-06-17

MapReduce2框架的原理解析

这篇文章主要围绕MapReduce2框架原理介绍的,文中有详细的代码示例,对学习有一定的帮助,需要的朋友可以借鉴参考
2023-05-17

梳理Golang框架趋势:了解这5个热门框架

Golang框架大盘点:了解这5个热门框架,需要具体代码示例导语:Golang是一种开源的编程语言,近年来在Web开发领域越来越受到关注。在开发过程中,使用框架可以提高开发效率、简化开发流程,并且减少可能出现的错误。本文将介绍5个热门的
梳理Golang框架趋势:了解这5个热门框架
2024-01-24

如何理解Java ORM框架guzz

本篇文章给大家分享的是有关如何理解Java ORM框架guzz,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。guzz 1.3.1 大版本更新噢: 1. 动态拼接SQL终于发布啦
2023-06-17

php7怎么写框架

本篇内容主要讲解“php7怎么写框架”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php7怎么写框架”吧!1、路由路由协议的规则是使用了正则表达的匹配,将不同的链接分发到不同的控制器上去,也支持
2023-06-20

Bootstrap框架怎么用

这篇文章主要为大家展示了“Bootstrap框架怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Bootstrap框架怎么用”这篇文章吧。什么是 Bootstrap?Bootstrap 是一
2023-06-27

html怎么做框架

html 框架是一种工具,用于将网页分割为不同的区域(如页眉、页脚和正文)。要使用 html 框架,需要在 元素中创建 元素,然后在其中使用 元素指定每个框架的位置、大小和来源。水平框架使用 rows 属性定义,而垂直框架使用 col
html怎么做框架
2024-05-16

怎么进行Java Spring框架的解析

这篇文章给大家介绍怎么进行Java Spring框架的解析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Spring框架概述Spring是轻量级的开源的JAVAEE框架Spring可以解决企业应用开发的复杂性Sprin
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录