当前位置:
文档之家› Spring-Cloud微服务基础与应用-演讲演示幻灯片
Spring-Cloud微服务基础与应用-演讲演示幻灯片
与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, 使得开发部署极其简 单(加依赖,加注解,就能运行了)