springmvc,mybatis错综复杂的配置,有了spingboot,这些东西都不需要了,spingboot好处不
再赘诉,springcloud就基于SpringBoot把市场上优秀的服务框架组合起来,通过Spring Boot风
格进行再封装屏蔽掉了复杂的配置和实现原理
springcloud完成这些只需要一个jar的依赖就可以了!
断机制等等等等
统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据
监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留
出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
优点:
1.耦合度比较低。不会影响其他模块的开发。
2.减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发。
3.配置比较简单,基本用注解就能实现,不用使用过多的配置文件。
4.微服务跨平台的,可以用任何一种语言开发。
5.每个微服务可以有自己的独立的数据库也有用公共的数据库。
6.直接写后端的代码,不用关注前端怎么开发,直接写自己的后端代码即可,然后暴露接口,通过组件进行 服务通信。
缺点:
1.部署比较麻烦,给运维工程师带来一定的麻烦。
2.针对数据的管理比麻烦,因为微服务可以每个微服务使用一个数据库。
3.系统集成测试比较麻烦
4.性能的监控比较麻烦。【最好开发一个大屏监控系统】
始用微服务、Spring Cloud的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习
Spring Cloud是一个不错的选择。
合并管理起来,
竞选、分布式会话等等集成服务
于依赖的关系
Spring Cloud Version | SpringBoot Version |
---|---|
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
等20几个框架,开源一直在更新
录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
路,中央处理单元,或磁盘驱动器的分布。
网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件
支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。
署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动
更改属性可能会产生问题。 Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都
在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改
和处理。
Eureka的客户端将其连接到Eureka Service中,并且保持心跳,这样工作人员可以通过Eureka
Service来监控各个微服务是否运行正常。
照Eureka的顺序来访问。
进入自我保护模式,在该模式下Eureka Service会保护服务注册表中的信息,不在删除注册表中的
数据,当网络故障恢复后,Eureka Servic 节点会自动退出自我保护模式
间不可用的, 选举就是改微服务做了集群,必须有一台主其他的都是从
是最新的。 如果查询到的数据并不是最新的,就是因为Eureka的自我保护模式导致的
个注册系统瘫痪
CAP: C:一致性>Consistency; 取舍:(强一致性、单调一致性、会话一致性、最终一致性、弱一
致性) A:可用性>Availability; P:分区容错性>Partition tolerance;
微服务,并代理请求到不同的微服务接口,他对外隐蔽了微服务的真正接口地址。 三个重要概
念:动态路由表,路由定位,反向代理:
客户端
关进行操作。Nginx是使用C语言实现,性能高于Zuul,但是实现自定义操作需要熟悉lua语言,对
程序员要求较高,可以使用Nginx做Zuul集群。
务。
为内部服务器提供服务。开放API接口用于对外部合作单位提供接口调用,需要遵循Oauth2.0权限
认证协议。同时还需要考虑安全性、幂等性等问题。
现本地负载均衡和转发。
轮询机制对Zuul集群发送请求。
要10天,我叫10个人做就是一天,这就是集群,负载均衡的话就是用来控制集群,他把做的最多
的人让他慢慢做休息会,把做的最少的人让他加量让他做多点。
种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免
任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和
可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
中列出后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连
接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。(有点类似Nginx)
配置进行转发,相当于请求通过nginx服务器进行转发。Ribbon是客户端负载均衡,从注册中心读
取目标服务器信息,然后客户端采用轮询策略对服务直接访问,全程在客户端操作。
余算法获取目标服务集群索引,返回获取到的目标服务信息。
@LoadBalanced注解的作用
开启客户端负载均衡。
当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)
崩,Hystrix就是这样的一个工具,防雪崩利器,它具有服务降级,服务熔断,服务隔离,监控等
一些防止雪崩的技术。
机,大型项目的微服务之间的调用是互通的,这样就会将服务的不可用逐步扩大到各个其他服务
中,从而使整个项目的服务宕机崩溃.发生雪崩效应的原因有以下几点
服务器的硬件故障也会导致部分服务不可用.
果。当微服务中,高并发的数据库访问量导致服务线程阻塞,使单个服务宕机,服务的不可用会蔓
延到其他服务,引起整体服务灾难性后果,使用服务降级能有效为不同的服务分配资源,一旦服务
不可用则返回友好提示,不占用其他服务资源,从而避免单个服务崩溃引发整体服务的不可用.
时刻被大量访问就会占据tomcat线程池中的所有线程,其他请求处于等待状态,无法连接到服务
接口。
回一个友好的提示给客户端。
达到设定值(requestVolumeThreshold)或当前的请求错误率达到设定的错误率阈值
(errorThresholdPercentage)时开启断路,之后的请求直接走fallback方法,在设定时间
(sleepWindowInMilliseconds)后尝试恢复。
服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。
run方法或construct执行发生错误时转而执行getFallback()方法。
了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。
服务,步骤相当繁琐
义成抽象方法保存在本地就可以了,不需要自己构建Http请求了,直接调用接口就行了,不过要
注意,调用方法要和本地抽象方法的签名完全一致。
以用作应用程序之间的通信通道。
各个环境下的配置进行集中式管理。Spring Cloud Config分为Config Server和Config Client两部
分。Config Server负责读取配置文件,并且暴露Http API接口,Config Client通过调用Config
Server的接口来读取配置文件。
量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。
你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,
由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。
象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud
Stream扮演的就是kafka, ActiveMQ这样的角色。
Spring Cloud Config
端配置的刷新及加密、解密操作。
Spring Cloud Netflix(重点,这些组件用的最多)
我觉得SpringCloud的福音是Netflix,他把人家的组件都搬来进行封装了,使开发者能快速简单安全的使用
Spring Cloud Bus
刷新集群中的服务配置信息。
需要利用中间插件MQ
Spring Cloud Consul
式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框架、分布一致性
协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如
ZooKeeper 等)。使用起来也较为简单。Consul 使用 Go 语言编写,因此具有天然可移植性(支持
Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级
容器可无缝配合。
Spring Cloud Security
外部(或集中)进行大量配置的声明性模型有助于实现大型协作的远程组件系统,通常具有中央身
份管理服务。它也非常易于在Cloud Foundry等服务平台中使用。在Spring Boot和Spring
Security OAuth2的基础上,可以快速创建实现常见模式的系统,如单点登录,令牌中继和令牌交
换。
Spring Cloud Sleuth
完成这个请求(如下图)。如果系统越来越庞大,服务之间的调用与被调用关系就会变得很复杂,
假如一个请求中需要跨几个服务调用,其中一个服务由于网络延迟等原因挂掉了,那么这时候我们
需要分析具体哪一个服务出问题了就会显得很困难。Spring Cloud Sleuth服务链路跟踪功能就可
以帮助我们快速的发现错误根源以及监控分析每条请求链路上的性能等等。
Spring Cloud Stream
Kafka及RabbitMQ。
Spring Cloud Task
Cloud Task中,我们可以灵活地动态运行任何任务,按需分配资源并在任务完成后检索结果。
Tasks是Spring Cloud Data Flow中的一个基础项目,允许用户将几乎任何Spring Boot应用程序作
为一个短期任务执行。
Spring Cloud Zookeeper
Spring Cloud Gateway
发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,
Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其不仅提
供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监控/埋点、
限流等。
Spring Cloud OpenFeign
们可以将调用的服务方法定义成抽象方法保存在本地添加一点点注解就可以了,不需要自己构建
Http请求了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。
Spring Cloud的版本关系
Spring Cloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个Spring Cloud版本对
应的子项目版本。 为了避免Spring Cloud版本号与子项目版本号混淆,Spring Cloud版本采用了
名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本
时间顺序,例如Angel是第一个版本,Brixton是第二个版本。 当Spring Cloud的发布内容积累到
临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本,比如
Greenwich.SR2就是Spring Cloud发布的Greenwich版本的第2个SRX版本。目前Spring Cloud的
最新版本是Hoxton。
Spring Cloud Version | SpringBoot Version |
---|---|
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
本。不同于常规的版本,几乎每天都要提交更新的版本,如果每次提交都申明一个版本号那不是版
本号都不够用?
Component | Edgware.SR6 | Greenwich.SR2 | Greenwich.BUILD-SNAPSHOT |
---|---|---|---|
spring-cloud-aws | 1.2.4.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-bus | 1.3.4.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-cli | 1.4.1.RELEASE | 2.0.0.RELEASE | 2.0.1.BUILD-SNAPSHOT |
spring-cloud-commons | 1.3.6.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-contract | 1.2.7.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-config | 1.4.7.RELEASE | 2.1.3.RELEASE | 2.1.4.BUILD-SNAPSHOT |
spring-cloud-netflix | 1.4.7.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-security | 1.2.4.RELEASE | 2.1.3.RELEASE | 2.1.4.BUILD-SNAPSHOT |
spring-cloud-cloudfoundry | 1.1.3.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-consul | 1.3.6.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-sleuth | 1.3.6.RELEASE | 2.1.1.RELEASE | 2.1.2.BUILD-SNAPSHOT |
spring-cloud-stream | Ditmars.SR5 | Fishtown.SR3 | Fishtown.BUILD-SNAPSHOT |
spring-cloud-zookeeper | 1.2.3.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-boot | 1.5.21.RELEASE | 2.1.5.RELEASE | 2.1.8.BUILD-SNAPSHOT |
spring-cloud-task | 1.2.4.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-vault | 1.1.3.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-gateway | 1.0.3.RELEASE | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT |
spring-cloud-openfeign | 2.1.2.RELEASE | 2.1.3.BUILD-SNAPSHOT | |
Component | Edgware.SR6 | Greenwich.SR2 | Greenwich.BUILD-SNAPSHOT |
spring-cloud-function | 1.0.2.RELEASE | 2.0.2.RELEASE | 2.0.3.BUILD-SNAPSHOT |
史上最全Java面试宝典,BAT大厂面试必备。整理不易,建议先关注点赞加收藏
序号 | 名称 | 地址 |
---|---|---|
1 | Java基础面试题(91道含答案) | (点击查看) |
2 | Java并发编程面试题 (123道含答案) | (点击查看) |
3 | Java异常面试题 (33道含答案) | (点击查看) |
4 | Java虚拟机(JVM)面试题(51道含答案) | (点击查看) |
5 | Java集合面试题(52道含答案) | (点击查看) |
6 | Linux面试题(50道含答案) | (点击查看) |
7 | Memcache面试题(23道含答案) | (点击查看) |
8 | Mybatiss面试题 (37道含答案) | (点击查看) |
9 | MySQL面试题(40道含答案) | (点击查看) |
10 | Netty面试题(49道含答案) | (点击查看) |
11 | Nginx面试题(23道含答案) | (点击查看) |
12 | RabbitMQ面试题(22道含答案) | (点击查看) |
13 | Redis面试题(70道含答案) | (点击查看) |
14 | SpringBoot面试题(44道含答案) | (点击查看) |
15 | SpringCloud面试题(49道含答案) | (点击查看) |
16 | SpringMVC面试题(29道含答案) | (点击查看) |
17 | Spring面试题(75道含答案) | (点击查看) |
18 | TCP、UDP、Socket、Http网络编程面试题(47道含答案) | (点击查看) |
19 | Tomcat面试题(15道含答案) | (点击查看) |
20 | Zookeeper面试题(28道含答案) | (点击查看) |
21 | 多线程面试题(60道含答案) | (点击查看) |
22 | 设计模式面试题(14道含答案) | (点击查看) |
23 | BIO、NIO、AIO、Netty面试题(35道含答案) | (点击查看) |
24 | Dubbo面试题(47道含答案) | (点击查看) |
25 | ElasticSearch面试题(31道含答案) | (点击查看) |
26 | Git常用命令(63条) | (点击查看) |