Spring-Cloud微服务基础与应用-演讲演示幻灯片
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Fetch Registries:获取注册列表信息
3
Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户
端会使用该信息查找其他服务,从而进行远程调用。该注册列表信
ຫໍສະໝຸດ Baidu
息定期(每30秒钟)更新一次。每次返回注册列表信息可能与
Eureka客户端的缓存信息不同, Eureka客户端自动处理。
Cancel:服务下线
Spring Cloud是对Netflix的多个开源组 件进一步的封装而成,同时又实现了和 云端平台,和Spring Boot开发框架很好 的集成。
Spring Cloud是一个相对比较新的微服 务框架,2016年才推出1.0的release版 本. 虽然Spring Cloud时间最短, 但是相 比Dubbo等RPC框架, Spring Cloud提 供的全套的分布式系统解决方案。
大数据操作工具,通过命令
行方式操作数据流。
1
经验 总结
Spring Cloud Stream:数据 流操作开发包,封装了与 Redis,Rabbit、Kafka等发送 接收消息。
Spring Cloud CLI:基于 Spring Boot CLI,可以让你 以命令行方式快速建立云组
6 件。
Spring Cloud Sleuth:日志
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.RELEASE</version> </parent> <dependencies> <dependency>
Spring Cloud Consul:封装 了Consul操作,consul是一 个服务发现与配置工具,与 Docker容器可以无缝集成。
3
2
Spring Cloud Zookeeper: 操作Zookeeper的工具包, 用于使用zookeeper方式的 服务注册和发现。
45
Spring Cloud Data Flow:
</build> </project>
Spring Cloud使用 二
@Controller @EnableSwagger2Doc @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients //@ImportResource(locations={"classpath:config/applicationdubbon.xml"}) public class Application {
与dubbo相比
从框架的完整度来看,Dubbo只是实现 了服务治理(注册,发现等),而 Spring Cloud下面有很多个子项目覆盖 了微服务架构下的方方面面,服务治理 只是其中的一个方面
Spring Cloud架构图
Spring Cloud使用 一
spring boot 的核心技术基于spring 4.x。 环境说明
2 负载均衡策略
简单轮询负载均衡 加权响应时间负载均衡 区域感知轮询负载均衡 随机负载均衡
Ribbon中还包括以下功能:
3
易于与服务发现组件(比如Netflix的Eureka)集成
使用Archaius完成运行时配置
使用JMX暴露运维指标,使用Servo发布
Spring Cloud for Cloud Foundry
通过Oauth2协议绑定服务到 CloudFoundry,CloudFoundry是 VMware推出的开源PaaS云平台。
Spring Cloud组件 二
Spring Cloud Security:安 全工具包,为你的应用程序 添加安全控制,主要是指 OAuth2。
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>Cloud</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <parent>
<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>
Ribbon架构图
Ribbon的工作
1
第一步有限选择Eureka Server,它优先选择在同一个Zone且
负载较少的Server,
第二步在根据用户指定的策略,在从Server取到的服务注册列
表中选择一个地址。其中Ribbon提供了多重策略,例如轮询
round robin、随机Random、根据相应时间加权等。
5
在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器
发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注
册列表删除,即服务剔除。
Ribbon负载均衡
注册
Eureka Server
注册
注册 可用服务列表
注册
服务消费者
Ribbon
负载均衡请求
服务提供者1 服务提供者2
服务提供者3
Spring Cloud优势
架构完整度
它的子项目涵盖了所有实现布式系统所 需要的基础软件设施
社区活跃度
选择一个开源框架,社区的活跃度是我 们极为关注的一个要点。社区越活跃, 解决问题的速度越快,框架也会越来越 完善,不然当我们碰到问题,就不得不
自己解决。
开发部署极其简单
基于Spring Boot, 使得开发部署极其简 单(加依赖,加注解,就能运行了)
欢迎使用
Spring Cloud
微服务
<演讲人:xxx>
Spring Cloud简介 理赔渠道平台使用
SpringCloud组件 问题与讨论
XXXXXX公司
PART ONE
Spring Cloud简介
<演讲人:xxx>
微服务简介
更小
更快
微服务
更强
”微”即是小
由一系列小服务组成
独立运行
每个服务运行于自己的独立进程
容错管理工具,旨在通过控制服务和第 三方库的节点,从而对延迟和故障提供 更强大的容错能力。
Netflix Zuul
边缘服务工具,是提供动态路由,监控, 弹性,安全等的边缘服务。
Netflix Archaius
配置管理API,包含一系列配置管理API, 提供动态类型化属性、线程安全配置操 作、轮询框架、回调机制等功能。
收集工具包,封装了
7
Dapper,Zipkin和HTrace操作。
详见:xxxx
SpringCloud分布式开发五大神 兽
服务发现
Netflix Eureka
客服端负载均衡
Netflix Ribbon
断路器
Netflix Hystrix
服务网关
Netflix Zuul
分布式配置
Spring Cloud Config
业务建模
围绕着业务功能进行建模
独立部署
每个服务独立部署
分散式管理
5
最低限度的集中管理
微服务的特征
服务即组件
每个服务对一个业务负责
关注业务逻辑
分散式管理
服务可以独立部署, 更清晰的模块边界, 每个服务提供方可以 专注发布 API,隐藏 实现细节和版本。
例如: 理赔服务 保费试算服务 承保服务 核保服务 支付服务
SpringApplication.run(Application.class, args); } }
代码结构如上图所示; 代码实现如右图所示; @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan @Configuration,@ComponentSca这俩注解语法是spring框架中的,起步于spring 3.x @EnableAutoConfiguration是spring boot语法,表示自动配置。
➢ IDE:IntelliJ IDEA 2017.2.5 ➢ JDK:1.8 ➢ 管理:mvn 3 ➢ 服务器:内置tomcat
创建一个maven项目 ➢ 先在pom.xml中加入依赖的包(如右部分所示)
创建一个Application类 ➢ 具体见下页
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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) {
所有微服务调用使用 统一协议,微服务团 队只需要关注如何将 输入转化为输出的逻 辑,而不需要考虑网 络层实现细节。
每个微服务团队有充 分自由选择自己团队 熟悉的编程语言、数 据库和其他中间件等 技术栈。
Spring Cloud简介
Spring Cloud是一系列框架的有序集合
利用Spring Boot的开发便利性巧妙地简 化了分布式系统基础设施的开发,如服 务发现注册、配置中心、消息总线、负 载均衡、断路器、数据监控等,都可以 用Spring Boot的开发风格做到一键启动 和部署。
Eureka客户端在程序关闭时向Eureka服务器发送取消请求。 发送 请求后,该客户端实例信息将从服务器的实例注册表中删除。该 下线请求不会自动完成,它需要调用以下内容: DiscoveryManager.getInstance().shutdownComponent();
Eviction 服务剔除
Spring Cloud Netflix
针对多种Netflix组件提供的开发工具包, 其中包括Eureka、Hystrix、Zuul、 Archaius等。
Netflix Eureka
云端负载均衡,一个基于 REST 的服务, 用于定位服务,以实现云端的负载均衡
和中间层服务器的故障转移。
Netflix Hystrix
XXXXXX公司
PART TWO
Spring Cloud组件
<演讲人:xxx>
Spring Cloud组件 一
Spring Cloud Config
配置管理开发工具包,可以让你把配置 放到远程服务器,目前支持本地存储、
Git以及Subversion。
Spring Cloud Bus
事件、消息总线,用于在集群(例如, 配置变化事件)中传播状态变化,可与 Spring Cloud Config联合实现热部署。