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分布式实战视频 教程
SpringCloud微服务精品PPT课件
为什么选择Spring Cloud?
整合了诸多被广泛实践和证 明过的框架作为基础部件
大量的兼容性测试,保证 了更好的稳定性
极高的社区活跃度
Spring Cloud简介
微服务
02
构建 spring boot
传统Spring框架:
1、配置web.xml,加载spring 和spring mvc; 2、配置数据库连接、配置 spring事务; 3、配置加载配置文件的读取, 开启注解; 4、配置日志文件; 5、配置完成之后部署tomcat 调试; …
服务治理:Spring Cloud Eureka
快速入门实例
客户端负
04
载均衡 Spring Cloud Ribbon
客户端负载均衡:Spring Cloud Ribbon
服务端 负载均衡
负载 均衡
硬件负载 均衡(F5)
可用的服 务端清单
软件负载 均衡(Nigix)
可用的服 务端清单
客户端 负载均衡
微服务构建:Spring Boot
快速入门实例
服务
03
治理 Spring Cloud Eureka
服务治理机制
服务注册中心
失效剔除 默认每隔一段时间 (默认60秒)将当 前清单中超时(默 认为90秒)没有续 约的服务剔除出去
自我保护
心跳失败的比例在 15分钟之内低于 85%时,Eureka Server会将当前的 实例注册信息保护 起来,让这些实例 不会过期。
服务容错处理:Spring Cloud Hystrix
资源隔离
服务容错处理:Spring Cloud Hystrix
降级机制
服务容错处理:Spring Cloud Hystrix
整合了诸多被广泛实践和证 明过的框架作为基础部件
大量的兼容性测试,保证 了更好的稳定性
极高的社区活跃度
Spring Cloud简介
微服务
02
构建 spring boot
传统Spring框架:
1、配置web.xml,加载spring 和spring mvc; 2、配置数据库连接、配置 spring事务; 3、配置加载配置文件的读取, 开启注解; 4、配置日志文件; 5、配置完成之后部署tomcat 调试; …
服务治理:Spring Cloud Eureka
快速入门实例
客户端负
04
载均衡 Spring Cloud Ribbon
客户端负载均衡:Spring Cloud Ribbon
服务端 负载均衡
负载 均衡
硬件负载 均衡(F5)
可用的服 务端清单
软件负载 均衡(Nigix)
可用的服 务端清单
客户端 负载均衡
微服务构建:Spring Boot
快速入门实例
服务
03
治理 Spring Cloud Eureka
服务治理机制
服务注册中心
失效剔除 默认每隔一段时间 (默认60秒)将当 前清单中超时(默 认为90秒)没有续 约的服务剔除出去
自我保护
心跳失败的比例在 15分钟之内低于 85%时,Eureka Server会将当前的 实例注册信息保护 起来,让这些实例 不会过期。
服务容错处理:Spring Cloud Hystrix
资源隔离
服务容错处理:Spring Cloud Hystrix
降级机制
服务容错处理:Spring Cloud Hystrix
微服务入门PPT课件
25
三、微服务架构工作流程
26
微服务架构工作流程
• 设计阶段 将产品功能拆分为若干服务 为每个服务设计API接口
• 开发阶段 实现API接口(包括单元测试) 开发UI原型(页面)
• 测试阶段 前后端集成 验证产品功能
• 部署阶段 发布测试环境 发布生产环境
27
四、springCloud介绍
28
33
Netflix Zuul
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘 服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。当其它门派来找大哥办事的时候 一定要先经过zuul,看下有没有带刀子什么的给拦截回去,或 者是需要找那个小弟的直接给带过去。
springCloud介绍
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开 发,如服务发现注册、配置中心、消息总线、负载均衡、断 路器、数据监控等,都可以用Spring Boot的开发风格做到 一键启动和部署。Spring并没有重复制造轮子,它只是将目 前各家公司开发的比较成熟、经得起实际考验的服务框架组 合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的 配置和实现原理,最终给开发者留出了一套简单易懂、易部 署和易维护的分布式系统开发工具包。
37
如何搭建一个微服务框架?
38
30
Spring Cloud Netflix
这可是个大boss,地位仅次于老大,老大各项服务依赖 y于它,与各种Netflix OSS组件集成,组成微服务的核心, 它的小弟主要有Eureka, Hystrix, Zuul, Archaius…
三、微服务架构工作流程
26
微服务架构工作流程
• 设计阶段 将产品功能拆分为若干服务 为每个服务设计API接口
• 开发阶段 实现API接口(包括单元测试) 开发UI原型(页面)
• 测试阶段 前后端集成 验证产品功能
• 部署阶段 发布测试环境 发布生产环境
27
四、springCloud介绍
28
33
Netflix Zuul
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘 服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。当其它门派来找大哥办事的时候 一定要先经过zuul,看下有没有带刀子什么的给拦截回去,或 者是需要找那个小弟的直接给带过去。
springCloud介绍
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开 发,如服务发现注册、配置中心、消息总线、负载均衡、断 路器、数据监控等,都可以用Spring Boot的开发风格做到 一键启动和部署。Spring并没有重复制造轮子,它只是将目 前各家公司开发的比较成熟、经得起实际考验的服务框架组 合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的 配置和实现原理,最终给开发者留出了一套简单易懂、易部 署和易维护的分布式系统开发工具包。
37
如何搭建一个微服务框架?
38
30
Spring Cloud Netflix
这可是个大boss,地位仅次于老大,老大各项服务依赖 y于它,与各种Netflix OSS组件集成,组成微服务的核心, 它的小弟主要有Eureka, Hystrix, Zuul, Archaius…
SpringCloud课件 PPT
Zuul介绍
Zuul的主要功能是路由转发和过滤器。路由功能是微服 务的一部分,比如/api/user转发到到user服务, /api/shop转发到到shop服务。zuul默认和Ribbon结合实 现了负载均衡的功能, 类似于nginx转发
是Netflix的一个子项目 提供代理、过滤、路由等功能
Spring Cloud介绍
主要内容
一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍
单体应用
单体应用优化
加入ESB
微服务架构
主要内容
Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的 开发,如服务发现注册、配置中心、消息总线、负载均 衡、断路器、数据监控等,都可以用Spring Boot的开发 风格做到一键启动和部署。Spring并没有重复制造轮子, 它只是将目前各家公司开发的比较成熟、经得起实际考 验的服务框架组合起来,通过Spring Boot风格进行再封 装屏蔽掉了复杂的配置和实现原理,最终给开发者留出 了一套简单易懂、易部署和易维护的分布式系统开发工 具包
Zuul过滤器运行机制
项目结构
加入Zuul后的集群
主要内容
一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍
Config介绍
用来为分布式系统中的基础设施和微服务应用提供集中化的 外部配置支持, 它分为服务端与客户端两个部分。其中服务 端也称为分布式配置中心, 它是一个独立的微服务应用,用 来连接配置仓库并为客户端提供获取配置信息、加密/解密信 息等访问接口;而客户端则是微服务架构中的各个微服务应 用或基础设施, 它们通过指定的配置中心来管理应用资源与 业务相关的配置内容,并在启动的时候从配置中心获取和加 载配置信息。
- 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, 使得开发部署极其简 单(加依赖,加注解,就能运行了)