Spring-Cloud微服务基础与应用-演讲演示幻灯片
合集下载
《springcloud微服务实战》教学课件21

每天成长一点点
3.添加 Nacos 业务规则配置
每天成长一点点
4.然后去 Sentinel 控制台刷新,查看流控规则
停止 8401 服务,刷新 Sentinel,刚刚的流控规则消失了 再次启动 8401 ,刷新 Sentinel,刚刚的流控规则又回来了
每天成长一点点
《SpringCloud微服务实战》
《SpringCloud微服务实战》
每天成长一点点
每天成长一点点
➢ 一旦我们重启应用,Sentinel规则将消失 ➢ 生产环境需要将配置规则进行持久化 ➢ 将限流配置规则持久化进 Nacos 保存 ➢ 只要刷新 8401 某个 rest 地址,sentinel 控制台的流控规则就能看到,只要 Nacos 里面的配置不删除,针对 8401 上 Sentinel 上的
</dependency>
2.修改 YML,添加 Nacos 业务规则配置
datasource: ds1: nacos: server-addr: localhost:8848 dataId: cloudalibaba-sentinel-service groupId: DEFAULT_GROUP data-type: json rule-type: flow
流控规则持续有效
每天成长一点点
修பைடு நூலகம் alibaba-sentinel-service-8401
1.修改 POM,添加相关依赖
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId>
Spring Cloud微服务PPT课件

8
是一个解决微服务架构 实施的综合性解决框架
为什么选择Spring Cloud?
整合了诸多被广泛实践和证 明过的框架作为基础部件
大量的兼容性测试,保证 了更好的稳定性
极高的社区活跃度
9
Spring Cloud简介
10
微服务
02
构建 spring boot
11
传统Spring框架:
1、配置web.xml,加载spring 和spring mvc; 2、配置数据库连接、配置 spring事务; 3、配置加载配置文件的读取, 开启注解; 4、配置日志文件; 5、配置完成之后部署tomcat 调试; …
熔断
27
服务容错处理:Spring Cloud Hystrix
缓存
28
工作流程
29
Dashboard
30
Turbine集群监控
31
声明式服
06
务调用 Spring Cloud Feign
32
声明式服务调用:Spring Cloud Feign
快速入门实例
只需创建一个接口并用注解的 方式来配置它,即可完成对服 务提供的接口绑定
360
京东
Netflix
Apache
Spring cloud
Eureka Consoul
分布 式配 置管 理
Diamond
Disconf Qconf
Archaius
Config
批量 任务
服务 跟踪
ElasticJob
Hydra
Task Azkaban
Sleuth
Zipkin
微服务构建:Spring Boot
《springcloud微服务实战》教学课件41

服务调用: Ribbon:也进入了维护状态,停止更新了,但是Spring官方还在使用(轻度患者)。 LoadBalancer:Spring官方推出的一个新的组件,打算逐渐取代掉Ribbon,但是现在还处于萌芽状态。 Feign:Netflix 公司产品,也停止更新了。 OpenFeign:Spring社区等不了Netflix更新了,然后就自己做了一个组件,不用Feign了。
每天成长一点点
案例使用的版本
每天成长一点点
SpringCloud的H版本,和之前的版本相比,用新的组件替换掉了原来大部分的组件,老的组件现在处于 停更不停用 的状况
每天成a:官方停止更新,并且已经有更好的替代产品了,可以使用,但是官方已经不建议使用了(重度患者)。 Zookeeper:某些老系统,以前是用的Zookeeper + Dubbo,后来做技术升级,结果发现SpringCloud的Eureka停更了,然后就用了最少的技术切换,那 么就用了Zookeeper做注册中心。 Consul:go语言开发的,也是一个优秀的服务注册框架,但是使用量较少,风头都被Nacos抢了。 Nacos:来自于SpringCloudAlibaba,在企业中经过了百万级注册考验的,不但可以完美替换Eureka,还能做其他组件的替换,所以强烈建议使用,是学习 的重点。
Boot 版本 Boot官方强烈建议你升级到2.X以上版本
截至 2020-11-30 SpringBoot 的版本已经更新到了 2.4.0
每天成长一点点
Cloud 版本 已经更新到了 Hoxton.SR9
每天成长一点点
Cloud和boot之间的依赖关系 访问官方的版本对应的 API :https://start.spring.io/actuator/info 格式化之后,可用找到 SpringCloud 的这一项
每天成长一点点
案例使用的版本
每天成长一点点
SpringCloud的H版本,和之前的版本相比,用新的组件替换掉了原来大部分的组件,老的组件现在处于 停更不停用 的状况
每天成a:官方停止更新,并且已经有更好的替代产品了,可以使用,但是官方已经不建议使用了(重度患者)。 Zookeeper:某些老系统,以前是用的Zookeeper + Dubbo,后来做技术升级,结果发现SpringCloud的Eureka停更了,然后就用了最少的技术切换,那 么就用了Zookeeper做注册中心。 Consul:go语言开发的,也是一个优秀的服务注册框架,但是使用量较少,风头都被Nacos抢了。 Nacos:来自于SpringCloudAlibaba,在企业中经过了百万级注册考验的,不但可以完美替换Eureka,还能做其他组件的替换,所以强烈建议使用,是学习 的重点。
Boot 版本 Boot官方强烈建议你升级到2.X以上版本
截至 2020-11-30 SpringBoot 的版本已经更新到了 2.4.0
每天成长一点点
Cloud 版本 已经更新到了 Hoxton.SR9
每天成长一点点
Cloud和boot之间的依赖关系 访问官方的版本对应的 API :https://start.spring.io/actuator/info 格式化之后,可用找到 SpringCloud 的这一项
SpringCloud课件全版.pptx

课件
Zuul过滤器运行机制
课件
项目结构
课件
加入Zuul后的集群
课件
主要内容
一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍
课件
Config介绍
一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍
课件
Ribbon简介
负载均衡框架,支持可插拔式的负载均衡规则 支持多种协议,如HTTP、UDP等 提供负载均衡客户端
课件
Eureka
Eureka由两个组件组成:Eureka服务器和Eureka客户端。 Eureka服务器用作服务注册服务器。Eureka客户端是一 个java客户端,用来简化与服务器的交互、作为轮询负 载均衡器,并提供服务的故障切换支持。
课件
Eureka架构
课件
Eureka集群架构图
课件
主要内容
2.Fallback:Fallback相当于是降级操作. 对于查询操作, 我们可以实现一 个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法 返回的值. fallback方法的返回值一般是设置的默认值或者来自缓存.
3.资源隔离:在Hystrix中, 主要通过线程池来实现资源隔离. 通常在使用 的时候我们会根据调用的远程服务划分出多个线程池. 例如调用产品服 务的Command放入A线程池, 调用账户服务的Command放入B线程池. 这 样做的主要优点是运行环境被隔离开了. 这样就算调用服务的代码存在 bug或者由于其他原因导致自己所在线程池被耗尽时, 不会对系统的其 他服务造成影响. 但是带来的代价就是维护多个线程池会对系统带来额 外的性能开销.
Zuul过滤器运行机制
课件
项目结构
课件
加入Zuul后的集群
课件
主要内容
一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍
课件
Config介绍
一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍
课件
Ribbon简介
负载均衡框架,支持可插拔式的负载均衡规则 支持多种协议,如HTTP、UDP等 提供负载均衡客户端
课件
Eureka
Eureka由两个组件组成:Eureka服务器和Eureka客户端。 Eureka服务器用作服务注册服务器。Eureka客户端是一 个java客户端,用来简化与服务器的交互、作为轮询负 载均衡器,并提供服务的故障切换支持。
课件
Eureka架构
课件
Eureka集群架构图
课件
主要内容
2.Fallback:Fallback相当于是降级操作. 对于查询操作, 我们可以实现一 个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法 返回的值. fallback方法的返回值一般是设置的默认值或者来自缓存.
3.资源隔离:在Hystrix中, 主要通过线程池来实现资源隔离. 通常在使用 的时候我们会根据调用的远程服务划分出多个线程池. 例如调用产品服 务的Command放入A线程池, 调用账户服务的Command放入B线程池. 这 样做的主要优点是运行环境被隔离开了. 这样就算调用服务的代码存在 bug或者由于其他原因导致自己所在线程池被耗尽时, 不会对系统的其 他服务造成影响. 但是带来的代价就是维护多个线程池会对系统带来额 外的性能开销.
《springcloud微服务实战》教学课件10

子POM
<dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 。。。。。。。。。。。。
management: endpoints: web: exposure: include: '*'
每天成长一点点
3.编写 YML
server: port: 9001
spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址
</dependencies>
每天成长一点点
3.编写 YML
server: port: 9001/9002
spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址
<dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 。。。。。。。。。。。。
management: endpoints: web: exposure: include: '*'
每天成长一点点
3.编写 YML
server: port: 9001
spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址
</dependencies>
每天成长一点点
3.编写 YML
server: port: 9001/9002
spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址
Spring Cloud微服务基础与应用

@ResponseBody @RequestMapping(value="/") public String location(){
return "Hello World"; }
/** * @param args */ public static void main(String[] args) {
Spring Cloud Consul:封装 了Consul操作,consul是一 个服务发现与配置工具,与 Docker容器可以无缝集成。
3
2
Spring Cloud Zookeeper: 操作Zookeeper的工具包, 用于使用zookeeper方式的 服务注册和发现。
45
Spring Cloud Data Flow:
XXXXXX公司
Spring Cloud
微服务
<演讲人:shilk>
Spring Cloud简介 理赔渠道平台使用
SpringCloud组件 问题与讨论
XXXXXX公司
PART ONE
Spring Cloud简介
<演讲人:shilk>
微服务简介
更小
更快
微服务
更强
”微”即是小
由一系列小服务组成
独立运行
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>Cloud</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <parent>
return "Hello World"; }
/** * @param args */ public static void main(String[] args) {
Spring Cloud Consul:封装 了Consul操作,consul是一 个服务发现与配置工具,与 Docker容器可以无缝集成。
3
2
Spring Cloud Zookeeper: 操作Zookeeper的工具包, 用于使用zookeeper方式的 服务注册和发现。
45
Spring Cloud Data Flow:
XXXXXX公司
Spring Cloud
微服务
<演讲人:shilk>
Spring Cloud简介 理赔渠道平台使用
SpringCloud组件 问题与讨论
XXXXXX公司
PART ONE
Spring Cloud简介
<演讲人:shilk>
微服务简介
更小
更快
微服务
更强
”微”即是小
由一系列小服务组成
独立运行
xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>Cloud</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <parent>
《springcloud微服务实战》教学课件27

@RestController public class RateLimitController {
@GetMapping("/byResource") @SentinelResource(value = "byResource",blockHandler = "handleException") public CommonResult byResource() {
每天成长一点点
《SpringCloud微服务实战》
每天成长一点点
每天成长一点点
修改 alibaba-sentinel-service-8401 自定义一个限流处理类 :CustomerBlockHandler
public class CustomerBlockHandler { public static CommonResult handleException(BlockException exception) { return new CommonResult(2020, "自定义限流处理信息....CustomerBlockHandler"); }
return new CommonResult(200,"按资源名称限流测试OK",new Payment(2020L,"serial001")); } public CommonResult handleException(BlockException exception) {
return new CommonResult(444,exception.getClass().getCanonicalName()+"\t 服务不可用"); } }
@GetMapping("/byResource") @SentinelResource(value = "byResource",blockHandler = "handleException") public CommonResult byResource() {
每天成长一点点
《SpringCloud微服务实战》
每天成长一点点
每天成长一点点
修改 alibaba-sentinel-service-8401 自定义一个限流处理类 :CustomerBlockHandler
public class CustomerBlockHandler { public static CommonResult handleException(BlockException exception) { return new CommonResult(2020, "自定义限流处理信息....CustomerBlockHandler"); }
return new CommonResult(200,"按资源名称限流测试OK",new Payment(2020L,"serial001")); } public CommonResult handleException(BlockException exception) {
return new CommonResult(444,exception.getClass().getCanonicalName()+"\t 服务不可用"); } }
spring cloud分布式实战视频教程课件PPT模板

E
1-17第十七课GatewayAPI简介第十七课 GatewayAPI简介
F
1-18第十八课第一个Gateway项目Zuul第十 八课第一个Gateway项目Zuul
第1章spring-cloud 分布式实战视频教程
1-19第十九课zuul的path属性1 第十九课zuul的path属性1
1-20第二十课zuul的path属性2 第二十课zuul的path属性2
1-7第七课ribbon实 战1第七课ribbon实
战1
1-8第八课ribbon实 战2第八课ribbon实
战2
1-9第九课ribbon实 战3第九课ribbon实
战3
1-10第十课ribbon 实战4第十课ribbon
实战4
1-11第十一课feign 实战1第十一课feign
实战1
1-12第十二课feign 实战2第十二课feign
1-20第二十课Zuul的path属性2 第二十课Zuul的path属性2
202x
感谢聆听
实战2
第1章spring-cloud分布式实战视频教程
A
1-13第十三课微服务超时机制第十三课微服务 超时机制
B
1-14第十四课Hystrix入门第十四课Hystrix入 门
C
1-15第十五课feign集成Hystrix第十五课 feign集成Hystrix
D
1-16第十六课feign的fallbackFactor第十六课 feign的fallbackFactory
202x
spring-cloud分布式实战视 频教程
演讲人
2 0 2 x - 11 - 11
01
第1章spring-cloud分布式实战视频 教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
与dubbo相比
从框架的完整度来看,Dubbo只是实现 了服务治理(注册,发现等),而 Spring Cloud下面有很多个子项目覆盖 了微服务架构下的方方面面,服务治理 只是其中的一个方面
Spring Cloud架构图
Spring Cloud使用 一
spring boot 的核心技术基于spring 4.x。 环境说明
XXXXXX公司
PART TWO
Spring Cloud组件
<演讲人:xxx>
Spring Cloud组件 一
Spring Cloud Config
配置管理开发工具包,可以让你把配置 放到远程服务器,目前支持本地存储、
Git以及Subversion。
Spring Cloud Bus
事件、消息总线,用于在集群(例如, 配置变化事件)中传播状态变化,可与 Spring Cloud Config联合实现热部署。
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.5.RELEASE</version> </dependency> </dependencies> </plugin> </plugins>
Eureka服务注册
Eureka的高级架构图
Register:服务注册
1
当Eureka客户端向Eureka Server注册时,
它提供自身的元数据,比如IP地址、端口,
运行状况指示符URL,主页等。
2 Renew:服务续约 Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来 告知Eureka Server该Eureka客户仍然存在,没有出现问题。 正常情况下,如果Eureka Server在90秒没有收到Eureka客 户的续约,它会将实例从其注册表中删除。
@ResponseBody @RequestMapping(value="/") public String location(){
return "Hello World"; }
/** * @param args */ public static void main(String[] args) {
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.RELEASE</version> </parent> <dependencies> <dependency>
容错管理工具,旨在通过控制服务和第 三方库的节点,从而对延迟和故障提供 更强大的容错能力。
Netflix Zuul
边缘服务工具,是提供动态路由,监控, 弹性,安全等的边缘服务。
Netflix Archaius
配置管理API,包含一系列配置管理API, 提供动态类型化属性、线程安全配置操 作、轮询框架、回调机制等功能。
Spring Cloud for Cloud Foundry
通过Oauth2协议绑定服务到 CloudFoundry,CloudFoundry是 VMware推出的开源PaaS云平台。
Spring Cloud组件 二
Spring Cloud Security:安 全工具包,为你的应用程序 添加安全控制,主要是指 OAuth2。
</build> </project>
Spring Cloud使用 二
@Controller @EnableSwagger2Doc @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients //@ImportResource(locations={"classpath:config/applicationdubbon.xml"}) public class Application {
业务建模
围绕着业务功能进行建模
独立部署
每个服务独立部署
分散式管理
5
最低限度的集中管理
微服务的特征
服务即组件
每个服务对一个业务负责
关注业务逻辑
分散式管理
服务可以独立部署, 更清晰的模块边界, 每个服务提供方可以 专注发布 API,隐藏 实现细节和版本。
例如: 理赔服务 保费试算服务 承保服务 核保服务 支付服务
Ribbon架构图
Ribbon的工作
1
第一步有限选择Eureka Server,它优先选择在同一个Zone且
负载较少的Server,
第二步在根据用户指定的策略,在从Server取到的服务注册列
表中选择一个地址。其中Ribbon提供了多重策略,例如轮询
round robin、随机Random、根据相应时间加权等。
Spring Cloud是对Netflix的多个开源组 件进一步的封装而成,同时又实现了和 云端平台,和Spring Boot开发框架很好 的集成。
Spring Cloud是一个相对比较新的微服 务框架,2016年才推出1.0的release版 本. 虽然Spring Cloud时间最短, 但是相 比Dubbo等RPC框架, Spring Cloud提 供的全套的分布式系统解决方案。
Spring Cloud Consul:封装 了Consul操作,consul是一 个服务发现与配置工具,与 Docker容器可以无缝集成。
3
2
Spring Cloud Zookeeper: 操作Zookeeper的工具包, 用于使用zookeeper方式的 服务注册和发现。
45
Spring Cloud Data Flow:
5
在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器
发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注
册列表删除,即服务剔除。
Ribbon负载均衡
注册
Eureka Server
注册
注册 可用服务列表
注册
服务消费者
Ribbon
负载均衡请求
服务提供者1 服务提供者2
服务提供者3
所有微服务调用使用 统一协议,微服务团 队只需要关注如何将 输入转化为输出的逻 辑,而不需要考虑网 络层实现细节。
每个微服务团队有充 分自由选择自己团队 熟悉的编程语言、数 据库和其他中间件等 技术栈。
Spring Cloud简介
Spring Cloud是一系列框架的有序集合
利用Spring Boot的开发便利性巧妙地简 化了分布式系统基础设施的开发,如服 务发现注册、配置中心、消息总线、负 载均衡、断路器、数据监控等,都可以 用Spring Boot的开发风格做到一键启动 和部署。
Spring Cloud Netflix
针对多种Netflix组件提供的开发工具包, 其中包括Eureka、Hystrix、Zuul、 Archaius等。
Netflix Eureka
云端负载均衡,一个基于 REST 的服务, 用于定位服务,以实现云端的负载均衡
和中间层服务器的故障转移。
Netflix Hystrix
Eureka客户端在程序关闭时向Eureka服务器发送取消请求。 发送 请求后,该客户端实例信息将从服务器的实例注册表中删除。该 下线请求不会自动完成,它需要调用以下内容: DiscoveryManager.getInstance().shutdownComponent();
Eviction 服务剔除
SpringApplication.run(Application.class, args); } }
代码结构如上图所示; 代码实现如右图所示; @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan @Configuration,@ComponentSca这俩注解语法是spring框架中的,起步于spring 3.x @EnableAutoConfiguration是spring boot语法,表示自动配置。
Spring Cloud优势
架构完整度
它的子项目涵盖了所有实现布式系统所 需要的基础软件设施
社区活跃度
选择一个开源框架,社区的活跃度是我 们极为关注的一个要点。社区越活跃, 解决问题的速度越快,框架也会越来越 完善,不然当我们碰到问题,就不得不
自己解决。
开发部署极其简单
基于Spring Boot, 使得开发部署极其简 单(加依赖,加注解,就能运行了)
从框架的完整度来看,Dubbo只是实现 了服务治理(注册,发现等),而 Spring Cloud下面有很多个子项目覆盖 了微服务架构下的方方面面,服务治理 只是其中的一个方面
Spring Cloud架构图
Spring Cloud使用 一
spring boot 的核心技术基于spring 4.x。 环境说明
XXXXXX公司
PART TWO
Spring Cloud组件
<演讲人:xxx>
Spring Cloud组件 一
Spring Cloud Config
配置管理开发工具包,可以让你把配置 放到远程服务器,目前支持本地存储、
Git以及Subversion。
Spring Cloud Bus
事件、消息总线,用于在集群(例如, 配置变化事件)中传播状态变化,可与 Spring Cloud Config联合实现热部署。
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.5.RELEASE</version> </dependency> </dependencies> </plugin> </plugins>
Eureka服务注册
Eureka的高级架构图
Register:服务注册
1
当Eureka客户端向Eureka Server注册时,
它提供自身的元数据,比如IP地址、端口,
运行状况指示符URL,主页等。
2 Renew:服务续约 Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来 告知Eureka Server该Eureka客户仍然存在,没有出现问题。 正常情况下,如果Eureka Server在90秒没有收到Eureka客 户的续约,它会将实例从其注册表中删除。
@ResponseBody @RequestMapping(value="/") public String location(){
return "Hello World"; }
/** * @param args */ public static void main(String[] args) {
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.RELEASE</version> </parent> <dependencies> <dependency>
容错管理工具,旨在通过控制服务和第 三方库的节点,从而对延迟和故障提供 更强大的容错能力。
Netflix Zuul
边缘服务工具,是提供动态路由,监控, 弹性,安全等的边缘服务。
Netflix Archaius
配置管理API,包含一系列配置管理API, 提供动态类型化属性、线程安全配置操 作、轮询框架、回调机制等功能。
Spring Cloud for Cloud Foundry
通过Oauth2协议绑定服务到 CloudFoundry,CloudFoundry是 VMware推出的开源PaaS云平台。
Spring Cloud组件 二
Spring Cloud Security:安 全工具包,为你的应用程序 添加安全控制,主要是指 OAuth2。
</build> </project>
Spring Cloud使用 二
@Controller @EnableSwagger2Doc @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients //@ImportResource(locations={"classpath:config/applicationdubbon.xml"}) public class Application {
业务建模
围绕着业务功能进行建模
独立部署
每个服务独立部署
分散式管理
5
最低限度的集中管理
微服务的特征
服务即组件
每个服务对一个业务负责
关注业务逻辑
分散式管理
服务可以独立部署, 更清晰的模块边界, 每个服务提供方可以 专注发布 API,隐藏 实现细节和版本。
例如: 理赔服务 保费试算服务 承保服务 核保服务 支付服务
Ribbon架构图
Ribbon的工作
1
第一步有限选择Eureka Server,它优先选择在同一个Zone且
负载较少的Server,
第二步在根据用户指定的策略,在从Server取到的服务注册列
表中选择一个地址。其中Ribbon提供了多重策略,例如轮询
round robin、随机Random、根据相应时间加权等。
Spring Cloud是对Netflix的多个开源组 件进一步的封装而成,同时又实现了和 云端平台,和Spring Boot开发框架很好 的集成。
Spring Cloud是一个相对比较新的微服 务框架,2016年才推出1.0的release版 本. 虽然Spring Cloud时间最短, 但是相 比Dubbo等RPC框架, Spring Cloud提 供的全套的分布式系统解决方案。
Spring Cloud Consul:封装 了Consul操作,consul是一 个服务发现与配置工具,与 Docker容器可以无缝集成。
3
2
Spring Cloud Zookeeper: 操作Zookeeper的工具包, 用于使用zookeeper方式的 服务注册和发现。
45
Spring Cloud Data Flow:
5
在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器
发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注
册列表删除,即服务剔除。
Ribbon负载均衡
注册
Eureka Server
注册
注册 可用服务列表
注册
服务消费者
Ribbon
负载均衡请求
服务提供者1 服务提供者2
服务提供者3
所有微服务调用使用 统一协议,微服务团 队只需要关注如何将 输入转化为输出的逻 辑,而不需要考虑网 络层实现细节。
每个微服务团队有充 分自由选择自己团队 熟悉的编程语言、数 据库和其他中间件等 技术栈。
Spring Cloud简介
Spring Cloud是一系列框架的有序集合
利用Spring Boot的开发便利性巧妙地简 化了分布式系统基础设施的开发,如服 务发现注册、配置中心、消息总线、负 载均衡、断路器、数据监控等,都可以 用Spring Boot的开发风格做到一键启动 和部署。
Spring Cloud Netflix
针对多种Netflix组件提供的开发工具包, 其中包括Eureka、Hystrix、Zuul、 Archaius等。
Netflix Eureka
云端负载均衡,一个基于 REST 的服务, 用于定位服务,以实现云端的负载均衡
和中间层服务器的故障转移。
Netflix Hystrix
Eureka客户端在程序关闭时向Eureka服务器发送取消请求。 发送 请求后,该客户端实例信息将从服务器的实例注册表中删除。该 下线请求不会自动完成,它需要调用以下内容: DiscoveryManager.getInstance().shutdownComponent();
Eviction 服务剔除
SpringApplication.run(Application.class, args); } }
代码结构如上图所示; 代码实现如右图所示; @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan @Configuration,@ComponentSca这俩注解语法是spring框架中的,起步于spring 3.x @EnableAutoConfiguration是spring boot语法,表示自动配置。
Spring Cloud优势
架构完整度
它的子项目涵盖了所有实现布式系统所 需要的基础软件设施
社区活跃度
选择一个开源框架,社区的活跃度是我 们极为关注的一个要点。社区越活跃, 解决问题的速度越快,框架也会越来越 完善,不然当我们碰到问题,就不得不
自己解决。
开发部署极其简单
基于Spring Boot, 使得开发部署极其简 单(加依赖,加注解,就能运行了)