如何使用 Spring Cloud 快速构建微服务应用 许进 (xujin.org)
About Me 目前就职于众安保险中间件框架组 先后就职于唯品会, 饿了么 网站 :http://xujin.org Spring Cloud 中国社区 (springcloud.cn) 发起人 曾就职于唯品会基础架构部, 从事中间件研发工作 曾就职于唯品会金融事业部, 参与唯品会金融平台 (https://jinrong.vip.com/) 的设计与开发
目录 1 Spring Cloud 概述 2 Spring Cloud 国内用情况 3 使用 Spring Cloud 搭建微服务应用 4 展望 Spring Cloud 未来 5 Q&A
Spring Cloud 概述 以下简称 :SC(Spring Cloud) Spring Cloud, 基于 Spring Boot 提供了一套微服务解决方案, 包括服务注册与发现, 配置中心, 全链路监控, 服务网关, 负载均衡, 熔断器等组件, 除了基于 NetFlix 的开源组件做高度抽象封装之外, 还有一些选型中立的开源组件 https://github.com/spring-cloud
为什么要选择 Spring Cloud? 定位 服务注册 / 发现 SpringCloud Dubbo Motan Thrift 完整微服务框架 RPC 框架服务框架 Rpc 框架 是是是否 负载均衡是是是否 配置服务是否是否 高容错是是是否 调用方式 Rest/rpc( 未来 ) rpc rpc rpc 社区活跃度高弃坑一般一般 学习难度低中低高 文档丰富度高高一般一般
目录 1 Spring Cloud 概述 2 Spring Cloud 国内使用情况 3 我是一个标题 4 我是一个标题 5 我是一个标题 6 我是一个标题
Spring Cloud 在国内使用情况
目录 1 Spring Cloud 概述 2 Spring Cloud 国内使用情况 3 如何使用 Spring Cloud 构建微服务 4 展望 Spring Cloud 与社区 5 Q&A
Spring Cloud 的服务注册与发现 由于 Spring Cloud 的选型中立, 特别是 spring-cloudcommons 项目的高度抽象, 可以自由选型, 在改变极小的情况下切换组件 比如从 Eureka, 切换到 Consul, ZK, 或者 Etcd
服务注册与发现 缺点 : 随着服务治理中间件的升级, 业务系统需要跟随升级 zookeeper 注册中心 ( ZK) ip port version zookeeper 服务消费者 (client) 服务提供者 zookeeper 基于客户端的服务治理, 比如 Dubbo,Spring Cloud
Eureka 基本架构图 http://xujin.org/sc/sc-netflix-eureka/
集群模式下的 Eureka http://xujin.org/sc/sc-netflix-eureka/
使用 Eureka 快速搭建注册中心
使用 Eureka 快速搭建注册中心
Spring Cloud 的 Ribbon LB, 即负载均衡 (Load Balance), 在微服务或分布式集群中经常用的一种应用 负载均衡简单的说就是将用户的请求平摊的分配到多个服务上, 从而达到系统的 HA 常见的负载均衡有软件 Nginx,LVS, 硬件 F5 等 相应的在中间件, 例如 : dubbo 和 Spring Cloud 中均给我们提供了负载均衡,SC 的负载均衡算法可以自定义
Ribbon 负载均衡 Ribbon 在工作时分成两步, 第一步先选择 Eureka Server, 它优先选择在同一个 Zone 且负载较少的 server, 第二步再根据用户指定的策略, 在从 server 取到的服务注册列表中选择一个地址 其中 Ribbon 提供了三种策略 : 轮询 随机和根据响应时间加权 注册中心 Service Load Balance(Ribbon) Service
Ribbon 负载均衡
Spring Cloud 的 Feign Feign 是一种声明式 模板化的 HTTP 客户端 在 Spring Cloud 中使用 Feign, 可以做到使用 HTTP 请求远程服务时能就像调用本地方法一样的体验, 开发者完全感知不到这是远程方法, 更感知不到这是个 HTTP 请求
Feign 使用示例 1Feign 接口定义 2 依赖注入使用
Spring Cloud Zuul API Gateway(API GW / API 网关 ), 顾名思义, 是出现在系统边界上的一个面向 API 的 串行集中式的强管控服务, 这里的边界是企业 IT 系统的边界 Spring Cloud Zuul 为 Spring Cloud 提供微服务网关
网关功能
Spring Cloud Zuul 的架构图
Spring Cloud Zuul 的生命周期 所有请求都必然按照 pre-> route -> post 的顺序执行 post 返回 response
参考 Zuul 的架构设计 Http Request Http Response Netty HttpHandler Filter Directories Filter Runner Filter Loader Auth Filter Rest Filter Wrapper Filter Filter Manager Moni Manager WAF Filter Pre RPC Filter Routing CallBack Filter POST Request Context Config Manager GW-Server DB GW-Console GW-API ZK Etcd
Zuul 在 Spring Cloud 中处的位置
使用 Zuul 搭建网关 http://xujin.org/sc/sc-zuul-01/
使用 Zuul 搭建网关 @EnableZuulProxy
ZUUL 的 Ha 方案
Spring-Cloud-Gateway Java 8/Spring 5/Boot 2 WebFlux/Reactor HTTP/2 and Websockets Finchley Release Train (Q4 2017)
Spring Cloud 的配置中心 Spring Cloud Config 就是我们通常意义上的配置中心, 把应用原本放在本地文件的配置抽取出来放在中心服务器, 从而能够提供更好的管理 发布能力
配置中心的功能 Spring Cloud Config 作为配置中心不是很适合, 因此技术选型会选择携程配置中心 Apollo https://github.com/ctripcorp/apollo
Spring Cloud Config 工作流程
快速使用 Spring Cloud Config 添加依赖, 使用 @EnableConfigServer 注解
快速使用 Spring Cloud Config 在 application.yml 配置如上信息
Spring Cloud 中国社区 上海, 成都, 北京, 深圳沙龙 Spring Cloud 中国社区官网 :http://springcloud.cn Spring Cloud 中国社区论坛 :http://bbs.springcloud.cn Spring Cloud 中国社区博客 :http://blog.springcloud.cn Spring Cloud 中国社区文档 :http://docs.springcloud.cn
目录 1 Spring Cloud 概述 2 Spring Cloud 国内使用情况 3 使用 Spring Cloud 搭建微服务应用 4 展望 Spring Cloud 未来 5 Q&A
Spring Cloud- 百花齐放
目录 1 Spring Cloud 概述 2 Spring Cloud 国内使用情况 3 使用 Spring Cloud 搭建微服务应用 4 展望 Spring Cloud 未来 5 Q&A
Q&A 欢迎加我微信互撩
会议 培训 咨询 8 月 18 日 上海 全年 DevOps China 巡回沙龙 11 月 17 日 DevOps 金融上海 EXIN DevOps Master 认证培训 DevOps 企业内训 DevOps 公开课 互联网运维培训 企业 DevOps 实践咨询 企业运维咨询 商务经理 : 刘静女士电话 / 微信 :13021082989 邮箱 :liujing@greatops.com
Thanks 荣誉出品 高效运维社区 国际最佳实践管理联盟
想第一时间看到 高效运维社区公众号 的好文章吗? 请打开高效运维社区公众号, 点击右上角小人, 如右侧所示设置就好