1.java学习路线
2.springbootcloud组件
3.springbootcloudç»ä»¶
4.Github一夜登顶!码面阿里内部SpringCloudAlibaba学习笔记,码面全彩版开源
5.SpringCloud面试题及答案(最新)持续更新
java学习路线
目前在职Java开发,码面我给出的码面Java学习路线是:JavaSE--数据库--jdbc----前端基础--Javaweb--Spring--Mybatis--Maven--Springboot---Reids--Springcloud--Linux--Git。
JavaSE:java基础,码面既然是码面本地源码怎么打开基础,那肯定是码面最重要的,所以学习的码面时候也是需要重点学习的地方。
数据库:为什么要学数据库呢,码面因为我们的码面web数据需要持久化到磁盘上统一管理,而数据库无疑就是码面最好工具。目前主流的码面关系型数据库有mysql 和oracle。我建议先学mysql。码面为什么呢mysql相比Oracle难度要低,码面而在国内应用场景又是码面最多的。
学会了mysql可以开发出一个完整的产品了,再学oracle都可以的。
前端基础:既然是做一个网站,那肯定不能是后台的数据,这样用户也是没办法看的,所以需要学习前端知识,把数据展示到页面上,而对于后台人员来说,学习阶段只需要学习前端基础就可以了。Html 、js、css、jquery就可以了。当然到离开后期你也可以学学专门为后端人员定制的前端框架,比如,layui,easyui。如果还觉得不够可以学学前端专用框架。比如vue element ,但是大前提是把自己的后台学到位了再学其他的。
Javaweb:jsp、servlet。为什么用了html还要学jsp呢。因为jsp和Java是无缝连接的。学了javaweb以后就可以自己做一个项目出来了,比如你想做一个个人网站。ie壳源码你可以给你们学校做一个教务管理系统都是可以的。
Spring:后台框架。为什么要用框架呢,可以快速开发,并且降低了耦合。Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用,Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
Mybatis:持久层框架,当然持久层还有一个框架应用也很广的,那就是hibernate,一个是半自动的一个是全自动,而在国内应用最多的是mybatis,在国外用得最多的是hibernate,具体原因,大家可以百度查查。持久层框架有什么好处呢?如果你用原始的jdbc做开发,那你得自己来管理每一个连接,连接的打开和关闭,都是有开发人员来操作的,而且jdbc也没有实体的映射,需要我们写代码把值set进去,而用了框架这些都交给框架去做了。
Maven:mavne是一个工具,他的核心是pom.xml,这个配置文件,pom的全英文是project object model,意思是对象管理模型,也就是把项目也看成一个对象来操作了。给我们带来最直观的好处就是依赖问题,以前我们需要自己下载jar包,在构建到项目中,但是有了maven只需要写jar的依赖就可以自动给我们下载了。
Springboot:springboot是基于maven的,springboot最明显的特点就是开箱即用,也就是构建了一个springboot项目 直接就可以做开发了,而不需要像我们自己配一个springmvc的it源码学习框架一样的需要去配置大量的xml文件。让我们开发人员更着重于业务上的开发。
Redis:前面的mysql,oracle是关系型数据库,什么是关系型呢,就是一对一 一对多 多对多。有表与表之间有这些关系在,所以就叫关系型数据库,而redis就是非关系型数据库,也就是他存储数据之间是没有这些关系,他是以键值对 list set方式存储的。
对了,顺便在这里说一下,我目前是在职Java开发,如果你现在也在学习Java,了解Java,渴望成为一名合格的Java开发工程师,在入门学习Java的过程当中缺乏基础入门的视频教程,你都可以申请加入我的Java新手学习交流qun:前面输入是:前面输入是:七九八,中间输入是:八四四,最后输入是:六二零。里面聚集了很多正在学习Java技术的初学者,qun文件里面还有我做Java技术这段时间整理的一些学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以来获取下载。
Springcloud:微服务框架,什么是微服务呢,就是把我们传统的单体服务拆分开了,就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,微服务架构其实就是一个分布式架构,具体的就不详细的讲了,因为这里面牵涉到的解决方案是灵活的。
Linux:linux的应用通常都是在底层,那我们上层开发人员为什么也要学它呢,其实我们的主要应用是在服务器上,也就是服务器的系统。当然系统也有Windows的,而Windows的和Linux的区别就是Windows服务器有问题是微软来解决,很方便:别人替你做,社交源码软件但也不方便:你遇到问题都得让他官方来解决漏洞,但是Linux就不一样,他是完全开源的,有问题自己马上就可以解决,只要开发人员能力够硬去改内核都是可以的。
Git:版本管理工具,与之对应的还有svn,最大的区别在于git是分布式系统,而svn不是分布式的,因为你们进企业以后都是协同开发 也就是一个项目小组里面几个小伙伴一起开发一个项目,所以就要有一个代码的管理工具来保证你们做的不同模块可以整合,所以说git也是需要学的。
springbootcloud组件
.SpringBoot和SpringCloud的关系
很多人新手对于SpringBoot和SpringCloud的关系说不清楚、理解不清楚,本文抽出点时间来进行分享下自己的理解,以帮助大家更好的理解两者之间的关系。
其设计目的之初是用来简化Spring应用的初始搭建以及开发过程。很多东西都是配置好的,约定大于配置,使用注解替代了很多xml臃肿的配置,极大的简化了项目配置的消耗,提供了高效的编程脚手架。
Cloud相当于利用了SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,像是服务注册发现、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署,SpringCloud并没有重复的造轮子,把各家公司成熟,经得起考验的服务框架组合起来,通过SpringBoot屏蔽调复杂的配置和实现原理,留给开发者一套简单易懂、容易部署、容易维护的分布式开发工具包。
其中的关系是:
Spring-》SpingBoot-》SpringCloud
Cloud的核心组件:
感觉这个话题能写好多的东西,像是SpingCloud和Dubbbo的微服务选型等等再进行对比、比较优缺点,光影app源码本篇就简单的进行了总结和介绍,希望能帮助到有困惑的朋友吧,后面有时间在写一些文章进行拓展和补充。
SpringCloud微服务体系的组成NetflixEureka是SpringCloud服务注册发现的基础组件
Eureka提供RESTful风格(HTTP协议)的服务注册与发现
Eureka采用C/S架构,SpringCloud内置客户端
启用应用,访问
Eureka客户端开发要点
maven依赖spring-cloud-starter-netflix-eureka-clientapplication.yml
配置eureka.client.service-url.defaultZone
入口类增加@EnableEurekaClient
先启动注册中心,在启动客户端,访问localhost:查看eureka注册中心,看到客户端注册
Eureka名词概念
Register-服务注册,向Eureka进行注册登记
Renew-服务续约,秒/次心跳包健康检查.秒未收到剔除服务
FetchRegistries-获取服务注册列表,获取其他微服务地址
Cancel-服务下线,某个微服务通知注册中心暂停服务
Eviction-服务剔除,秒未续约,从服务注册表进行剔除
Eureka自我保护机制
Eureka在运行期去统计心跳失败率在分钟之内是否低于%
如果低于%,会将这些实例保护起来,让这些实例不会被剔除
关闭自我保护:eureka.服务实例.
enable-self-preservation:false
PS:如非网络特别不稳定,建议关闭
Eureka高可用配置步骤
服务提供者defaultZone指向其他的Eureka
客户端添加所有Eureka服务实例URL
Actuator自动为微服务创建一系列的用于监控的端点
Actuator在SpringBoot自带,SpringCloud进行扩展
pom.xml依赖spring-boot-starter-actuator
RestTemplate+@LoadBalanced显式调用
OpenFeign隐藏微服务间通信细节
Ribbon是RestTemplate与OpenFeign的通信基础
Feign是一个开源声明式WebService客户端,用于简化服务通信
Feign采用“接口+注解”方式开发,屏蔽了网络通信的细节
OpenFeign是SpringCloud对Feign的增强,支持SpringMVC注解
1.新建SpringbootWeb项目,applicationname为product-service
在pom.xml中引入依赖
spring-cloud-starter-alibaba-nacos-discovery作用为向Nacosserver注册服务。
spring-cloud-starter-openfeign作用为实现服务调用。
2.修改application.yml配置文件
3.在启动类上添加@EnableDiscoveryClient、@EnableFeignClients注解
4.编写OrderClientInterface
注:/api/v1/order/test会在下面order-service声明。
OrderClient.java
5.编写Controller和service
ProductController.java
ProductService.java
1.OpenFeign开启通信日志
基于SpringBoot的logback输出,默认debug级别
设置项:feign.client.config.微服务id.loggerLevel
微服务id:default代表全局默认配置
2.通信日志输出格式
NONE:不输出任何通信日志
BASIC:只包含URL、请求方法、状态码、执行时间
HEADERS:在BASIC基础上,额外包含请求与响应头
FULL:包含请求与响应内容最完整的信息
3.OpenFeign日志配置项
LoggerLevel开启通信日志
ConnectionTimeout与ReadTimeout
利用flix-hystrix-dashboard
监控微服务利用@EnableHystrixDashboard开启仪表盘
9.Hystrix熔断设置
产生熔断的条件:
当一个RollingWindow(滑动窗口)的时间内(默认:秒),最近次调用请求,请求错误率超过%,则触发熔断5秒,期间快速失败。
TIPS:如秒内未累计到次,则不会触发熔断
Hystrix熔断设置项:
统一访问出入口,微服务对前台透明
安全、过滤、流控等API管理功能
易于监控、方便管理
NetflixZuul
SpringCloudGateway
Zuul是Netflix开源的一个API网关,核心实现是Servlet
SpringCloud内置Zuul1.x
Zuul1.x核心实现是Servlet,采用同步方式通信
Zuul2.x基于NettyServer,提供异步通信
认证和安全
性能监测
动态路由
负载卸载
静态资源处理
压力测试
SpringCloudGateway,是Spring“亲儿子”
SpringCloudGateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式
Gateway基于Spring5.0与SpringWebFlux开发,采用Reactor响应式设计
1.使用三部曲
依赖spring-cloud-starter-netflix-zuul
入口增加@EnableZuulProxy
application.yml增加微服务映射
2.微服务映射
SpringCloudZuul内置Hystrix
服务降级实现接口:FallbackProvider
1.微服务网关流量控制
微服务网关是应用入口,必须对入口流量进行控制
RateLimit是SpringCloudZuul的限流组件
RateLimit采用“令牌桶”算法实现限流
2.什么是令牌桶
1.Zuul的执行过程
2.Http请求生命周期
1.需要实现ZuulFilter接口
shouldFilter()-是否启用该过滤器
filterOrder()-设置过滤器执行次序
filterType()-过滤器类型:pre|routing|post
run()-过滤逻辑
2.Zuul内置过滤器
3.Zuul+JWT跨域身份验证
1.SpringCloudConfig
2.携程Apollo
3.阿里巴巴Nacos
1.依赖"spring-cloud-starter-config"
2.删除application.yml,新建bootstrap.yml
3.配置"配置中心"服务地址与环境信息
1、微服务依赖"spring-boot-starter-actuator";
2、动态刷新类上增加@RefreshScope注解
3、通过/actuator/refresh刷新配置
1、通过加入重试机制、提高应用启动的可靠性;
2、重试触发条件1:配置中心无法与仓库正常通信
3、重试触发条件2:微服务无法配置中心正常通信
SpringCloud整体构架设计(一)
SpringClound整体核心架构只有一点:Rest服务,也就是说在整个SpringCloud配置过程之中,所有的配置处理都是围绕着Rest完成的,在这个Rest处理之中,一定要有两个端:服务的提供者(Provider)、服务的消费者(Consumer),所以对于整个SpringCloud基础的结构就如下所示:
既然SpringCloud的核心是Restful结构,那么如果要想更好的去使用Rest这些微服务还需要考虑如下几个问题。
1、所有的微服务地址一定会非常的多,所以为了统一管理这些地址信息,也为了可以及时的告诉用户哪些服务不可用,所以应该准备一个分布式的注册中心,并且该注册中心应该支持有HA机制,为了高速并且方便进行所有服务的注册操作,在SpringCloud里面提供有一个Eureka的注册中心。
对于整个的WEB端的构架(SpringBoot实现)可以轻松方便的进行WEB程序的编写,而后利用Nginx或Apache实现负载均衡处理,但是你WEB端出现了负载均衡,那么业务端呢?应该也提供有多个业务端进行负载均衡。那么这个时候就需要将所有需要参与到负载均衡的业务端在Eureka之中进行注册。
在进行客户端使用Rest架构调用的时候,往往都需要一个调用地址,即使现在使用了Eureka作为注册中心,那么它也需要有一个明确的调用地址,可是所有的操作如果都利用调用地址的方式来处理,程序的开发者最方便应用的工具是接口,所以现在就希望可以将所有的Rest服务的内容以接口的方式出现调用,所以它又提供了一个Feign技术,利用此技术可以伪造接口实现。
在进行整体的微架构设计的时候由于牵扯的问题还是属于RPC,所以必须考虑熔断处理机制,实际上所有的熔断就好比生活之中使用保险丝一样,有了保险丝在一些设备出现了故障之后依然可以保护家庭的电器可以正常使用,如果说现在有若干的微服务,并且这些微服务之间可以相互调用,例如A微服务调用了B微服务,B微服务调用了C微服务。
如果在实际的项目设计过程之中没有处理好熔断机制,那么就会产生雪崩效应,所以为了防止这样的问题出现,SpringCloud里面提供有一个Hystrix熔断处理机制,以保证某一个微服务即使出现了问题之后依然可以正常使用。
通过Zuul的代理用户只需要知道指定的路由的路径就可以访问指定的微服务的信息,这样更好的提现了java中的“key=value”的设计思想,而且所有的微服务通过zuul进行代理之后也更加合理的进行名称隐藏。
在SpringBoot学习的时候一直强调过一个问题:在SpringBoot里面强调的是一个“零配置”的概念,本质在于不需要配置任何的配置文件,但是事实上这一点并没有完全的实现,因为在整个在整体的实际里面,依然会提供有application.yml配置文件,那么如果在微服务的创建之中,那么一定会有成百上千个微服务的信息出现,于是这些配置文件的管理就成为了问题。例如:现在你突然有一天你的主机要进行机房的变更,所有的服务的IP地址都可能发生改变,这样对于程序的维护是非常不方便的,为了解决这样的问题,在SpringCloud设计的时候提供有一个SpringCloudConfig的程序组件,利用这个组件就可以直接基于GIT或者SVN来进行配置文件的管理。
在整体设计上SpringCloud更好的实现了RPC的架构设计,而且使用Rest作为通讯的基础,这一点是他的成功之处,由于大量的使用了netflix公司的产品技术,所以这些技术也有可靠的保证。
Spring全家桶笔记:Spring+SpringBoot+SpringCloud+SpringMVC最近我整理了一下一线架构师的Spring全家桶笔记:Spring+SpringBoot+SpringCloud+SpringMVC,分享给大家一起学习一下~文末免费获取哦
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
1.1Spring面试必备题+解析
1.2Spring学习笔记
(1)Spring源码深入解析
(2)Spring实战
1.3Spring学习思维脑图
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。
2.1SpringBoot面试必备题+解析
2.2SpringBoot学习笔记
(1)SpringBoot实践
(2)SpringBoot揭秘快速构建微服务体系
2.3SpringBoot学习思维脑图
springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。
3.1SpringCloud面试必备题+解析
3.2SpringCloud学习笔记
(1)SpringCloud参考指南
SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发
4.1SpringMVC面试必备题+解析
4.2SpringMVC学习笔记
(1)看透SpringMVC源代码分析与实践
(2)精通SpringMVC
最后分享一下一份JAVA核心知识点整理(PDF)
SpringBoot和SpringCloud的区别1、springcloud是基于springboot的一种框架,包括eureka、ribbon、feign、zuul、hystrix等
2、SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot
3、Springboot是Spring的一套快速配置脚手架,可以基于springboot快速开发单个微服务;SpringCloud是一个基于SpringBoot实现的云应用开发工具;
4、Springboot专注于快速、方便集成的单个个体,SpringCloud是关注全局的服务治理框架;
5、springboot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,SpringCloud很大的一部分是基于Springboot来实现。
6、Springboot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开Springboot,属于依赖的关系。
Spring-SpringBootSpringCloud这样的关系
springbootcloudç»ä»¶
.SpringBootåSpringCloudçå ³ç³»
å¾å¤äººæ°æ对äºSpringBootåSpringCloudçå ³ç³»è¯´ä¸æ¸ æ¥ãç解ä¸æ¸ æ¥ï¼æ¬ææ½åºç¹æ¶é´æ¥è¿è¡å享ä¸èªå·±çç解ï¼ä»¥å¸®å©å¤§å®¶æ´å¥½çç解两è ä¹é´çå ³ç³»ã
å ¶è®¾è®¡ç®çä¹åæ¯ç¨æ¥ç®åSpringåºç¨çåå§æ建以åå¼åè¿ç¨ãå¾å¤ä¸è¥¿é½æ¯é 置好çï¼çº¦å®å¤§äºé ç½®ï¼ä½¿ç¨æ³¨è§£æ¿ä»£äºå¾å¤xmlèè¿çé ç½®ï¼æ大çç®åäºé¡¹ç®é ç½®çæ¶èï¼æä¾äºé«æçç¼ç¨èææ¶ã
Cloudç¸å½äºå©ç¨äºSpringBootçå¼å便å©æ§å·§å¦å°ç®åäºåå¸å¼ç³»ç»åºç¡è®¾æ½çå¼åï¼åæ¯æå¡æ³¨ååç°ãé ç½®ä¸å¿ãæ¶æ¯æ»çº¿ãè´è½½åè¡¡ãæè·¯å¨ãæ°æ®çæ§çï¼é½å¯ä»¥ç¨SpringBootçå¼åé£æ ¼åå°ä¸é®å¯å¨åé¨ç½²ï¼SpringCloud并没æéå¤çé è½®åï¼æåå®¶å ¬å¸æçï¼ç»å¾èµ·èéªçæå¡æ¡æ¶ç»åèµ·æ¥ï¼éè¿SpringBootå±è½è°å¤æçé ç½®åå®ç°åçï¼çç»å¼åè ä¸å¥ç®åææã容æé¨ç½²ã容æç»´æ¤çåå¸å¼å¼åå·¥å ·å ã
å ¶ä¸çå ³ç³»æ¯ï¼
Spring-ãSpingBoot-ãSpringCloud
Cloudçæ ¸å¿ç»ä»¶ï¼
æè§è¿ä¸ªè¯é¢è½å好å¤çä¸è¥¿ï¼åæ¯SpingCloudåDubbboçå¾®æå¡éåççåè¿è¡å¯¹æ¯ãæ¯è¾ä¼ç¼ºç¹ï¼æ¬ç¯å°±ç®åçè¿è¡äºæ»ç»åä»ç»ï¼å¸æè½å¸®å©å°æå°æçæåå§ï¼åé¢ææ¶é´å¨åä¸äºæç« è¿è¡æå±åè¡¥å ã
SpringCloudå¾®æå¡ä½ç³»çç»æNetflixEurekaæ¯SpringCloudæå¡æ³¨ååç°çåºç¡ç»ä»¶
Eurekaæä¾RESTfulé£æ ¼(HTTPåè®®)çæå¡æ³¨åä¸åç°
Eurekaéç¨C/Sæ¶æ,SpringCloudå 置客æ·ç«¯
å¯ç¨åºç¨,访é®
Eureka客æ·ç«¯å¼åè¦ç¹
mavenä¾èµspring-cloud-starter-netflix-eureka-clientapplication.yml
é ç½®eureka.client.service-url.defaultZone
å ¥å£ç±»å¢å @EnableEurekaClient
å å¯å¨æ³¨åä¸å¿,å¨å¯å¨å®¢æ·ç«¯,访é®localhost:æ¥çeureka注åä¸å¿,çå°å®¢æ·ç«¯æ³¨å
Eurekaåè¯æ¦å¿µ
Register-æå¡æ³¨å,åEurekaè¿è¡æ³¨åç»è®°
Renew-æå¡ç»çº¦,ç§/次å¿è·³å å¥åº·æ£æ¥.ç§æªæ¶å°åé¤æå¡
FetchRegistries-è·åæå¡æ³¨åå表,è·åå ¶ä»å¾®æå¡å°å
Cancel-æå¡ä¸çº¿,æ个微æå¡éç¥æ³¨åä¸å¿æåæå¡
Eviction-æå¡åé¤,ç§æªç»çº¦,ä»æå¡æ³¨å表è¿è¡åé¤
Eurekaèªæä¿æ¤æºå¶
Eurekaå¨è¿è¡æå»ç»è®¡å¿è·³å¤±è´¥çå¨åéä¹å æ¯å¦ä½äº%
å¦æä½äº%ï¼ä¼å°è¿äºå®ä¾ä¿æ¤èµ·æ¥ï¼è®©è¿äºå®ä¾ä¸ä¼è¢«åé¤
å ³éèªæä¿æ¤:eureka.æå¡å®ä¾.
enable-self-preservation:false
PS:å¦éç½ç»ç¹å«ä¸ç¨³å®,å»ºè®®å ³é
Eurekaé«å¯ç¨é ç½®æ¥éª¤
æå¡æä¾è defaultZoneæåå ¶ä»çEureka
客æ·ç«¯æ·»å ææEurekaæå¡å®ä¾URL
Actuatorèªå¨ä¸ºå¾®æå¡å建ä¸ç³»åçç¨äºçæ§ç端ç¹
Actuatorå¨SpringBootèªå¸¦ï¼SpringCloudè¿è¡æ©å±
pom.xmlä¾èµspring-boot-starter-actuator
RestTemplate+@LoadBalancedæ¾å¼è°ç¨
OpenFeignéèå¾®æå¡é´éä¿¡ç»è
Ribbonæ¯RestTemplateä¸OpenFeignçéä¿¡åºç¡
Feignæ¯ä¸ä¸ªå¼æºå£°æå¼WebService客æ·ç«¯ï¼ç¨äºç®åæå¡éä¿¡
Feignéç¨âæ¥å£+注解âæ¹å¼å¼åï¼å±è½äºç½ç»éä¿¡çç»è
OpenFeignæ¯SpringCloud对Feignçå¢å¼ºï¼æ¯æSpringMVC注解
1.æ°å»ºSpringbootWeb项ç®ï¼applicationname为product-service
å¨pom.xmlä¸å¼å ¥ä¾èµ
spring-cloud-starter-alibaba-nacos-discoveryä½ç¨ä¸ºåNacosserver注åæå¡ã
spring-cloud-starter-openfeignä½ç¨ä¸ºå®ç°æå¡è°ç¨ã
2.ä¿®æ¹application.ymlé ç½®æ件
3.å¨å¯å¨ç±»ä¸æ·»å @EnableDiscoveryClientã@EnableFeignClients注解
4.ç¼åOrderClientInterface
注ï¼/api/v1/order/testä¼å¨ä¸é¢order-service声æã
OrderClient.java
5.ç¼åControlleråservice
ProductController.java
ProductService.java
1.OpenFeignå¼å¯éä¿¡æ¥å¿
åºäºSpringBootçlogbackè¾åº,é»è®¤debug级å«
设置项ï¼feign.client.config.å¾®æå¡id.loggerLevel
å¾®æå¡idï¼defaultä»£è¡¨å ¨å±é»è®¤é ç½®
2.éä¿¡æ¥å¿è¾åºæ ¼å¼
NONE:ä¸è¾åºä»»ä½éä¿¡æ¥å¿
BASIC:åªå å«URLã请æ±æ¹æ³ãç¶æç ãæ§è¡æ¶é´
HEADERSï¼å¨BASICåºç¡ä¸ï¼é¢å¤å å«è¯·æ±ä¸ååºå¤´
FULLï¼å å«è¯·æ±ä¸ååºå 容æå®æ´çä¿¡æ¯
3.OpenFeignæ¥å¿é 置项
LoggerLevelå¼å¯éä¿¡æ¥å¿
ConnectionTimeoutä¸ReadTimeout
å©ç¨flix-hystrix-dashboard
çæ§å¾®æå¡å©ç¨@EnableHystrixDashboardå¼å¯ä»ªè¡¨ç
9.Hystrixçæ设置
产ççæçæ¡ä»¶:
å½ä¸ä¸ªRollingWindow(æ»å¨çªå£ï¼çæ¶é´å ï¼é»è®¤ï¼ç§ï¼ï¼æè¿æ¬¡è°ç¨è¯·æ±ï¼è¯·æ±é误çè¶ è¿%ï¼å触åçæ5ç§ï¼æé´å¿«é失败ã
TIPS:å¦ç§å æªç´¯è®¡å°æ¬¡ï¼åä¸ä¼è§¦åçæ
Hystrixçæ设置项:
ç»ä¸è®¿é®åºå ¥å£,å¾®æå¡å¯¹åå°éæ
å®å ¨ãè¿æ»¤ãæµæ§çAPI管çåè½
æäºçæ§ãæ¹ä¾¿ç®¡ç
NetflixZuul
SpringCloudGateway
Zuulæ¯Netflixå¼æºçä¸ä¸ªAPIç½å ³,æ ¸å¿å®ç°æ¯Servlet
SpringCloudå ç½®Zuul1.x
Zuul1.xæ ¸å¿å®ç°æ¯Servletï¼éç¨åæ¥æ¹å¼éä¿¡
Zuul2.xåºäºNettyServerï¼æä¾å¼æ¥éä¿¡
认è¯åå®å ¨
æ§è½çæµ
å¨æè·¯ç±
è´è½½å¸è½½
éæèµæºå¤ç
ååæµè¯
SpringCloudGatewayï¼æ¯Springâ亲å¿åâ
SpringCloudGatewayæ¨å¨ä¸ºå¾®æå¡æ¶ææä¾ä¸ç§ç®åèææçç»ä¸çAPIè·¯ç±ç®¡çæ¹å¼
GatewayåºäºSpring5.0ä¸SpringWebFluxå¼åï¼éç¨Reactorååºå¼è®¾è®¡
1.使ç¨ä¸é¨æ²
ä¾èµspring-cloud-starter-netflix-zuul
å ¥å£å¢å @EnableZuulProxy
application.ymlå¢å å¾®æå¡æ å°
2.å¾®æå¡æ å°
SpringCloudZuulå ç½®Hystrix
æå¡é级å®ç°æ¥å£ï¼FallbackProvider
1.å¾®æå¡ç½å ³æµéæ§å¶
å¾®æå¡ç½å ³æ¯åºç¨å ¥å£ï¼å¿ é¡»å¯¹å ¥å£æµéè¿è¡æ§å¶
RateLimitæ¯SpringCloudZuulçéæµç»ä»¶
RateLimitéç¨â令ç桶âç®æ³å®ç°éæµ
2.ä»ä¹æ¯ä»¤ç桶
1.Zuulçæ§è¡è¿ç¨
2.Http请æ±çå½å¨æ
1.éè¦å®ç°ZuulFilteræ¥å£
shouldFilter()-æ¯å¦å¯ç¨è¯¥è¿æ»¤å¨
filterOrder()-设置è¿æ»¤å¨æ§è¡æ¬¡åº
filterType()-è¿æ»¤å¨ç±»å:pre|routing|post
run()-è¿æ»¤é»è¾
2.Zuulå ç½®è¿æ»¤å¨
3.Zuul+JWTè·¨å身份éªè¯
1.SpringCloudConfig
2.æºç¨Apollo
3.é¿éå·´å·´Nacos
1.ä¾èµ"spring-cloud-starter-config"
2.å é¤application.yml,æ°å»ºbootstrap.yml
3.é ç½®"é ç½®ä¸å¿"æå¡å°åä¸ç¯å¢ä¿¡æ¯
1ãå¾®æå¡ä¾èµ"spring-boot-starter-actuator";
2ãå¨æå·æ°ç±»ä¸å¢å @RefreshScope注解
3ãéè¿/actuator/refreshå·æ°é ç½®
1ãéè¿å å ¥éè¯æºå¶ãæé«åºç¨å¯å¨çå¯é æ§;
2ãéè¯è§¦åæ¡ä»¶1:é ç½®ä¸å¿æ æ³ä¸ä»åºæ£å¸¸éä¿¡
3ãéè¯è§¦åæ¡ä»¶2:å¾®æå¡æ æ³é ç½®ä¸å¿æ£å¸¸éä¿¡
SpringCloudæ´ä½ææ¶è®¾è®¡ï¼ä¸ï¼
SpringCloundæ´ä½æ ¸å¿æ¶æåªæä¸ç¹ï¼Restæå¡ï¼ä¹å°±æ¯è¯´å¨æ´ä¸ªSpringCloudé ç½®è¿ç¨ä¹ä¸ï¼ææçé ç½®å¤çé½æ¯å´ç»çRestå®æçï¼å¨è¿ä¸ªRestå¤çä¹ä¸ï¼ä¸å®è¦æ两个端ï¼æå¡çæä¾è ï¼Providerï¼ãæå¡çæ¶è´¹è ï¼Consumerï¼ï¼æ以对äºæ´ä¸ªSpringCloudåºç¡çç»æå°±å¦ä¸æ示ï¼
æ¢ç¶SpringCloudçæ ¸å¿æ¯Restfulç»æï¼é£ä¹å¦æè¦æ³æ´å¥½çå»ä½¿ç¨Restè¿äºå¾®æå¡è¿éè¦èèå¦ä¸å 个é®é¢ã
1ãææçå¾®æå¡å°åä¸å®ä¼é常çå¤ï¼æ以为äºç»ä¸ç®¡çè¿äºå°åä¿¡æ¯ï¼ä¹ä¸ºäºå¯ä»¥åæ¶çåè¯ç¨æ·åªäºæå¡ä¸å¯ç¨ï¼æ以åºè¯¥åå¤ä¸ä¸ªåå¸å¼ç注åä¸å¿ï¼å¹¶ä¸è¯¥æ³¨åä¸å¿åºè¯¥æ¯ææHAæºå¶ï¼ä¸ºäºé«é并ä¸æ¹ä¾¿è¿è¡æææå¡ç注åæä½ï¼å¨SpringCloudéé¢æä¾æä¸ä¸ªEurekaç注åä¸å¿ã
对äºæ´ä¸ªçWEB端çææ¶ï¼SpringBootå®ç°ï¼å¯ä»¥è½»æ¾æ¹ä¾¿çè¿è¡WEBç¨åºçç¼åï¼èåå©ç¨NginxæApacheå®ç°è´è½½åè¡¡å¤çï¼ä½æ¯ä½ WEB端åºç°äºè´è½½åè¡¡ï¼é£ä¹ä¸å¡ç«¯å¢ï¼åºè¯¥ä¹æä¾æå¤ä¸ªä¸å¡ç«¯è¿è¡è´è½½åè¡¡ãé£ä¹è¿ä¸ªæ¶åå°±éè¦å°ææéè¦åä¸å°è´è½½åè¡¡çä¸å¡ç«¯å¨Eurekaä¹ä¸è¿è¡æ³¨åã
å¨è¿è¡å®¢æ·ç«¯ä½¿ç¨Restæ¶æè°ç¨çæ¶åï¼å¾å¾é½éè¦ä¸ä¸ªè°ç¨å°åï¼å³ä½¿ç°å¨ä½¿ç¨äºEurekaä½ä¸ºæ³¨åä¸å¿ï¼é£ä¹å®ä¹éè¦æä¸ä¸ªæç¡®çè°ç¨å°åï¼å¯æ¯ææçæä½å¦æé½å©ç¨è°ç¨å°åçæ¹å¼æ¥å¤çï¼ç¨åºçå¼åè ææ¹ä¾¿åºç¨çå·¥å ·æ¯æ¥å£ï¼æ以ç°å¨å°±å¸æå¯ä»¥å°ææçRestæå¡çå 容以æ¥å£çæ¹å¼åºç°è°ç¨ï¼æ以å®åæä¾äºä¸ä¸ªFeignææ¯ï¼å©ç¨æ¤ææ¯å¯ä»¥ä¼ªé æ¥å£å®ç°ã
å¨è¿è¡æ´ä½çå¾®æ¶æ设计çæ¶åç±äºçµæ¯çé®é¢è¿æ¯å±äºRPCï¼æä»¥å¿ é¡»èèçæå¤çæºå¶ï¼å®é ä¸ææççæ就好æ¯çæ´»ä¹ä¸ä½¿ç¨ä¿é©ä¸ä¸æ ·ï¼æäºä¿é©ä¸å¨ä¸äºè®¾å¤åºç°äºæ éä¹åä¾ç¶å¯ä»¥ä¿æ¤å®¶åºççµå¨å¯ä»¥æ£å¸¸ä½¿ç¨ï¼å¦æ说ç°å¨æè¥å¹²çå¾®æå¡ï¼å¹¶ä¸è¿äºå¾®æå¡ä¹é´å¯ä»¥ç¸äºè°ç¨ï¼ä¾å¦Aå¾®æå¡è°ç¨äºBå¾®æå¡ï¼Bå¾®æå¡è°ç¨äºCå¾®æå¡ã
å¦æå¨å®é ç项ç®è®¾è®¡è¿ç¨ä¹ä¸æ²¡æå¤ç好çææºå¶ï¼é£ä¹å°±ä¼äº§çéªå´©æåºï¼æ以为äºé²æ¢è¿æ ·çé®é¢åºç°ï¼SpringCloudéé¢æä¾æä¸ä¸ªHystrixçæå¤çæºå¶ï¼ä»¥ä¿è¯æä¸ä¸ªå¾®æå¡å³ä½¿åºç°äºé®é¢ä¹åä¾ç¶å¯ä»¥æ£å¸¸ä½¿ç¨ã
éè¿Zuulç代çç¨æ·åªéè¦ç¥éæå®çè·¯ç±çè·¯å¾å°±å¯ä»¥è®¿é®æå®çå¾®æå¡çä¿¡æ¯ï¼è¿æ ·æ´å¥½çæç°äºjavaä¸çâkey=valueâç设计ææ³ï¼èä¸ææçå¾®æå¡éè¿zuulè¿è¡ä»£çä¹åä¹æ´å åççè¿è¡å称éèã
å¨SpringBootå¦ä¹ çæ¶åä¸ç´å¼ºè°è¿ä¸ä¸ªé®é¢ï¼å¨SpringBootéé¢å¼ºè°çæ¯ä¸ä¸ªâé¶é ç½®âçæ¦å¿µï¼æ¬è´¨å¨äºä¸éè¦é 置任ä½çé ç½®æ件ï¼ä½æ¯äºå®ä¸è¿ä¸ç¹å¹¶æ²¡æå®å ¨çå®ç°ï¼å 为å¨æ´ä¸ªå¨æ´ä½çå®é éé¢ï¼ä¾ç¶ä¼æä¾æapplication.ymlé ç½®æ件ï¼é£ä¹å¦æå¨å¾®æå¡çå建ä¹ä¸ï¼é£ä¹ä¸å®ä¼ææç¾ä¸å个微æå¡çä¿¡æ¯åºç°ï¼äºæ¯è¿äºé ç½®æ件ç管çå°±æ为äºé®é¢ãä¾å¦ï¼ç°å¨ä½ çªç¶æä¸å¤©ä½ ç主æºè¦è¿è¡æºæ¿çåæ´ï¼ææçæå¡çIPå°åé½å¯è½åçæ¹åï¼è¿æ ·å¯¹äºç¨åºçç»´æ¤æ¯é常ä¸æ¹ä¾¿çï¼ä¸ºäºè§£å³è¿æ ·çé®é¢ï¼å¨SpringCloud设计çæ¶åæä¾æä¸ä¸ªSpringCloudConfigçç¨åºç»ä»¶ï¼å©ç¨è¿ä¸ªç»ä»¶å°±å¯ä»¥ç´æ¥åºäºGITæè SVNæ¥è¿è¡é ç½®æ件ç管çã
å¨æ´ä½è®¾è®¡ä¸SpringCloudæ´å¥½çå®ç°äºRPCçæ¶æ设计ï¼èä¸ä½¿ç¨Restä½ä¸ºé讯çåºç¡ï¼è¿ä¸ç¹æ¯ä»çæåä¹å¤ï¼ç±äºå¤§éç使ç¨äºnetflixå ¬å¸ç产åææ¯ï¼æ以è¿äºææ¯ä¹æå¯é çä¿è¯ã
Springå ¨å®¶æ¡¶ç¬è®°ï¼Spring+SpringBoot+SpringCloud+SpringMVCæè¿ææ´çäºä¸ä¸ä¸çº¿æ¶æå¸çSpringå ¨å®¶æ¡¶ç¬è®°ï¼Spring+SpringBoot+SpringCloud+SpringMVCï¼å享ç»å¤§å®¶ä¸èµ·å¦ä¹ ä¸ä¸~ææ«å è´¹è·åå¦
Springæ¯ä¸ä¸ªè½»é级æ§å¶å转(IoC)åé¢ååé¢(AOP)ç容å¨æ¡æ¶ãSpringæ¡æ¶æ¯ç±äºè½¯ä»¶å¼åçå¤ææ§èå建çãSpring使ç¨çæ¯åºæ¬çJavaBeanæ¥å®æ以ååªå¯è½ç±EJBå®æçäºæ ãç¶èï¼Springçç¨éä¸ä» ä» éäºæå¡å¨ç«¯çå¼åãä»ç®åæ§ãå¯æµè¯æ§åæ¾è¦åæ§è§åº¦èè¨ï¼ç»å¤§é¨åJavaåºç¨é½å¯ä»¥ä»Springä¸åçã
1.1Springé¢è¯å¿ å¤é¢+解æ
1.2Springå¦ä¹ ç¬è®°
ï¼1ï¼Springæºç æ·±å ¥è§£æ
ï¼2ï¼Springå®æ
1.3Springå¦ä¹ æç»´èå¾
SpringBootæ¯ç±Pivotalå¢éæä¾çå ¨æ°æ¡æ¶ï¼å ¶è®¾è®¡ç®çæ¯ç¨æ¥ç®åæ°Springåºç¨çåå§æ建以åå¼åè¿ç¨ã该æ¡æ¶ä½¿ç¨äºç¹å®çæ¹å¼æ¥è¿è¡é ç½®ï¼ä»è使å¼å人åä¸åéè¦å®ä¹æ ·æ¿åçé ç½®ãéè¿è¿ç§æ¹å¼ï¼SpringBootè´åäºå¨è¬ååå±çå¿«éåºç¨å¼åé¢å(rapidapplicationdevelopment)æ为é¢å¯¼è ã
2.1SpringBooté¢è¯å¿ å¤é¢+解æ
2.2SpringBootå¦ä¹ ç¬è®°
ï¼1ï¼SpringBootå®è·µ
ï¼2ï¼SpringBootæç§å¿«éæ建微æå¡ä½ç³»
2.3SpringBootå¦ä¹ æç»´èå¾
springcloudæ¯å¾®æå¡æ¶æçé大æè ï¼å°ä¸ç³»åä¼ç§çç»ä»¶è¿è¡äºæ´åãåºäºspringbootæ建ï¼å¯¹æ们çæspringçç¨åºåæ¥è¯´ï¼ä¸ææ¯è¾å®¹æãéè¿ä¸äºç®åç注解ï¼æ们就å¯ä»¥å¿«éçå¨åºç¨ä¸é ç½®ä¸ä¸å¸¸ç¨æ¨¡å并æ建åºå¤§çåå¸å¼ç³»ç»ã
3.1SpringCloudé¢è¯å¿ å¤é¢+解æ
3.2SpringCloudå¦ä¹ ç¬è®°
ï¼1ï¼SpringCloudåèæå
SpringMVCæ¯ä¸ç§åºäºJavaçå®ç°MVC设计模å¼ç请æ±é©±å¨ç±»åçè½»é级Webæ¡æ¶ï¼ä½¿ç¨äºMVCæ¶æ模å¼çææ³ï¼å°webå±è¿è¡è责解è¦ï¼åºäºè¯·æ±é©±å¨æçå°±æ¯ä½¿ç¨è¯·æ±-ååºæ¨¡åï¼æ¡æ¶çç®çå°±æ¯å¸®å©æ们ç®åå¼å
4.1SpringMVCé¢è¯å¿ å¤é¢+解æ
4.2SpringMVCå¦ä¹ ç¬è®°
ï¼1ï¼çéSpringMVCæºä»£ç åæä¸å®è·µ
ï¼2ï¼ç²¾éSpringMVC
æåå享ä¸ä¸ä¸ä»½JAVAæ ¸å¿ç¥è¯ç¹æ´çï¼PDFï¼
SpringBootåSpringCloudçåºå«1ãspringcloudæ¯åºäºspringbootçä¸ç§æ¡æ¶ï¼å æ¬eurekaãribbonãfeignãzuulãhystrixç
2ãSpringBootå¯ä»¥ç¦»å¼SpringCloudç¬ç«ä½¿ç¨å¼å项ç®,ä½æ¯SpringCloud离ä¸å¼SpringBoot
3ãSpringbootæ¯Springçä¸å¥å¿«éé ç½®èææ¶ï¼å¯ä»¥åºäºspringbootå¿«éå¼åå个微æå¡ï¼SpringCloudæ¯ä¸ä¸ªåºäºSpringBootå®ç°çäºåºç¨å¼åå·¥å ·ï¼
4ãSpringbootä¸æ³¨äºå¿«éãæ¹ä¾¿éæçå个个ä½ï¼SpringCloudæ¯å ³æ³¨å ¨å±çæå¡æ²»çæ¡æ¶ï¼
5ãspringboot使ç¨äºé»è®¤å¤§äºé ç½®çç念ï¼å¾å¤éææ¹æ¡å·²ç»å¸®ä½ éæ©å¥½äºï¼è½ä¸é 置就ä¸é ç½®ï¼SpringCloudå¾å¤§çä¸é¨åæ¯åºäºSpringbootæ¥å®ç°ã
6ãSpringbootå¯ä»¥ç¦»å¼SpringCloudç¬ç«ä½¿ç¨å¼å项ç®ï¼ä½æ¯SpringCloud离ä¸å¼Springbootï¼å±äºä¾èµçå ³ç³»ã
Spring-SpringBootSpringCloudè¿æ ·çå ³ç³»
Github一夜登顶!阿里内部SpringCloudAlibaba学习笔记,全彩版开源
Spring Cloud Alibaba为分布式应用开发提供一站解决方案,简化了开发复杂度。只需添加注解与少量配置,便能将Spring Cloud应用与Alibaba分布式解决方案对接,使用Alibaba中间件构建分布式应用系统。
学习SpringCloud Alibaba技术变得至关重要。市面上的资料分散不完整,官网学习困难重重。因此,我将分享一套Spring Cloud Alibaba学习笔记。
笔记内容涵盖微服务架构设计、Nacos服务治理、系统保护(Sentinel)、高级特性(配置中心、链路跟踪、性能监控、分布式事务、消息队列等)、微服务通信(Dubbo、openfeign)及微服务架构最佳实践。
此外,我将分享Java面试与Java后端技术核心指南,总结多年工作经验与春招经验,包含分布式、中间件、大数据与高并发、数据库、设计模式与设计、常见面试题等模块。需完整版笔记与指南的小伙伴,可获取。
SpringCloud面试题及答案(最新)持续更新
SpringCloud的面试题和答案已经更新完毕,包含自己总结和整理的部分,虽然可能存在错误,仅供参考,期待大家的指正和分享。以下是部分内容概要:Spring Cloud Gateway:作为新网关,提供统一的API路由管理,替代Zuul,功能包括安全、监控和限流等。
Spring Cloud Netflix:集成Netflix OSS组件,如Eureka(服务注册与发现)、Ribbon(负载均衡)、Hystrix(容错)、Feign(声明式服务调用)和Zuul(API网关)。
负载均衡:优化资源分配,提高系统可用性和响应时间,避免单点故障。
OpenFeign:Spring Cloud的声明式服务调用组件,简化服务调用的实现。
Eureka与ZooKeeper的区别:Eureka更轻量级,自我保护,而ZooKeeper有领导选举机制。
Spring Cloud版本对应:Edgware.SR6和Greenwich.SR2是主要版本,Greenwich.BUILD-SNAPSHOT是开发分支。
微服务挑战:自动化组件、易感性、配置管理、调试等。
Spring Cloud的核心组件:Eureka、Ribbon、Feign、Hystrix和Zuul,各自功能和作用。
接口限流方法:总并发数、瞬时并发数、时间窗口速率限制等。
Spring Cloud Task:处理短运行任务,如微服务数据处理。
Oauth:开放授权协议,允许第三方访问资源。
微服务监控:报告和仪表板用于服务追踪和维护。
微服务架构中的DRY原则:避免代码重复,促进代码重用。
Spring Cloud解决的问题:分布式系统复杂性、服务发现、冗余和负载平衡等。