SpringCloud升级之路2020.0.x版-1.背景
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~
Spring Cloud 官方文档说了,它是一个完整的微服务体系,用户可以通过使用 Spring Cloud 快速搭建一个自己的微服务系统。那么 Spring Cloud 究竟是如何使用的呢?他到底有哪些组件?
spring-cloud-commons
组件里面,就有 Spring Cloud 默认提供的所有组件功能的抽象接口,有的还有默认实现。目前的 2020.0.x (按照之前的命名规则应该是 iiford),也就是spring-cloud-commons-3.0.x
包括:
- 服务发现:
DiscoveryClient
,从注册中心发现微服务。 - 服务注册:
ServiceRegistry
,注册微服务到注册中心。 - 负载均衡:
LoadBalancerClient
,客户端调用负载均衡。其中,重试策略从spring-cloud-commons-2.2.6
加入了负载均衡的抽象中。 - 断路器:
CircuitBreaker
,负责什么情况下将服务断路并降级 - 调用 http 客户端:内部 RPC 调用都是 http 调用
然后,一般一个完整的微服务系统还包括:
- 统一网关
- 配置中心
- 全链路监控与监控中心
Spring Cloud 一直处于非常活跃,非常快速迭代的过程,并且 Spring Cloud 高度依赖 Spring Boot,Spring Boot 与 Spring Cloud 相辅相成。但是,快速迭代带来的不只是新功能的引入以及原有功能的优化,还有就是升级过程中带来了很多兼容性,功能性,完整性,稳定性的烦恼。本系列旨在帮助广大读者了解不同大版本 Spring Boot & Spring Cloud 的特性功能以及底层原理的同时,使用这些组件实现一个具有完整功能的微服务体系,同时这个体系会适应目前最新的云原生环境。
我们使用的是目前最流行的 Docker + Kubernetes 的组合。目前一般微服务架构,都不会直接使用物理机,因为现代的互联网业务一般都具有这样的特性(我们拿电子商城举例):
- 业务会在某一时刻开始突然开始快速增长,例如我们开始在各地投放广告,用户不断进入网站,随着口碑不断变好,用户增长速度越来越快。
- 业务在一段时间内,有高峰有低谷。例如在一天内,白天一般都在上班,晚上访问网站下单的人数比较多。
- 业务在一段时间内,最高峰与最低峰之间的差距随着业务增长越来越大。由于大部分用户都在晚上访问网站下单,导致白天和晚上的流量相差越来越大。
- 会突然出现流量尖峰,并且很难预测这个时间点以及估计量。例如双 11 促销的时候,人们大量涌入,很难能估计的好会有多少流量。还有就是突然大家需要某个商品的时候,例如新冠刚开始的时候,口罩抢购一空。
对于这些特性,根据业务压力,智能并且快速动态扩容缩容这个功能变得越来越重要,但是这个功能在直接部署业务到物理机上很难实现。这时候出现了虚拟机,将物理机虚拟化抽象成多个虚拟机,比如 vmware 和 openstack,我们可以使用虚拟机在我们的操作系统中模拟出多台子电脑,子电脑之间是相互隔离的,这样可以更细致动态的分配物理机的资源。但是虚拟机对于开发和运维人员而言,还是太过于笨重了,存在启动慢,占用空间大,不易迁移的缺点。
接着,容器化技术应运而生,它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境即可,而且启动速度很快,除了运行其中应用以外,基本不消耗额外的系统资源。Docker 是应用最为广泛的容器技术,通过打包镜像,启动容器来创建一个服务。但是随着应用越来越复杂,容器的数量也越来越多,由此衍生了管理运维容器的这个重要场景。这个场景目前最流行的解决方案就是 Kubernetes(k8s)。
Kubernetes 能为我们提供如下功能:
- 容器编排与管理,机器资源管理以及存储卷挂载
- 服务的健康检查以及自愈
- 服务弹性扩容
- 配置中心
- 服务发现与调度
- 负载均衡
在我们公司中,项目团队包括了运维团队以及后端开发团队。对于 Docker 镜像打包与管理以及对于 K8s 的开发维护部署,主要交给运维团队。微服务业务开发维护,实现微服务特性的框架的开发维护是交给后端开发团队的。所以对于 K8s 的功能,我们只使用了前三个,对于配置中心、服务发现与调度还有负载均衡,我们还是主要交给实现微服务特性的框架实现的,未来可能会将这三个功能使用起来。
微服务框架需要考虑与 K8s 的交互,主要是服务的健康检查以及自愈以及服务弹性扩容:
- 服务的健康检查以及自愈:K8s 可以通过检查端口是否被监听使用,调用 http 接口来检查进程是否启动以及进程的健康性,我们需要提供这种健康检查接口。主要通过 spring boot 的 actuator 实现
- 服务弹性扩容:K8s 需要获取进程的监控指标来决定是否需要扩容,并且我们也需要监控中心采集这些指标。我们主要通过 grafana(监控中心) + prometheus(采集指标) + actuator(暴露接口) 实现。
本篇主要交代了我们使用 Spring Cloud 作为我们微服务框架的背景以及底层的云组件和功能边界,接下来我们会继续介绍我们要使用微服务框架实现的功能,以及包含的组件和使用中要考虑的问题。
微信搜索“我的编程喵”关注公众号,每日一刷,轻松提升技术,斩获各种offer:
SpringCloud升级之路2020.0.x版-1.背景相关推荐
- SpringCloud升级之路2020.0.x版-43.为何 SpringCloudGateway 中会有链路信息丢失
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在开始编写我们自己的日志 Filter 之前,还有一个问题我想在这里和大家分享,即在 Sp ...
- SpringCloud升级之路2020.0.x版-26.OpenFeign的组件
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 首先,我们给出官方文档中的组件结构图: [外链图片转存失败,源站可能有防盗链机制,建议将图 ...
- SpringCloud升级之路2020.0.x版-13.UnderTow 核心配置
本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford Undertow ...
- SpringCloud升级之路2020.0.x版-12.UnderTow 简介与内部原理
本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 在我们的项目中,我 ...
- SpringCloud升级之路2020.0.x版-41. SpringCloudGateway 基本流程讲解(3)
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们继续分析上一节提到的 WebHandler.加入 Spring Cloud Sleut ...
- 2021-08-05SpringCloud升级之路2020.0.x版-5.所有项目的parent与spring-framework-common说明
本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 源代码文件:htt ...
- Spring Cloud 升级之路 - 2020.0.x - 1. 背景知识、需求描述与公共依赖
1. 背景知识.需求描述与公共依赖 1.1. 背景知识 & 需求描述 Spring Cloud 官方文档说了,它是一个完整的微服务体系,用户可以通过使用 Spring Cloud 快速搭建一个 ...
- note8 升级android9,三星note8 N9500一键ADB升级One UI 9.0内测版
三星note8 N9500一键ADB升级One UI 9.0内测版是一款三星N9500 ADB一键升级9.0底包和刷机教程,三星 note8 安卓Pie,One UI .自己动手丰衣足食,抢不到官方资 ...
- 三星android安卓版本怎么升级,三星更改安卓9.0升级计划三款机型将可以升级到安卓9.0正式版...
描述 近日有网友发现三星中国更新了安卓9.0系统升级公告,和本月初那个公告相比,最明显的变化是国行Galaxy S9.S9+以及Galaxy Note9的升级时间提前到2019年1月,而原本计划是今年 ...
- 华为 android 5.0系统下载地址,华为emui5.0升级公告-emui 5.0官方版下载v5.0 官方最新版-西西软件下载...
emui5.0是关于华为最新的开发的一个手机的系统,对比其他的安卓系统来说,emui5.0的使用的界面可以说是十分的简洁,而且使用起来的体验也是十分的流畅,让用户能够享受到一个很不错的操作系统的体验, ...
最新文章
- J2SE基础常见面试题目
- 【转载】WINCE物理和虚拟地址的问题
- WARNING: at net/core/dev.c:1905 skb_warn_bad_offload+0x94/0xb4() 解决思路
- 计算机网络原理(第三章) 传输层 课后习题
- OGNL表达式的特殊的符号
- Mac安装IDA后各版本android_server
- SAP 软件PS 模块系统操作之一工作分解结构(WBS)的创建
- 树莓派 串口如何使用 以及树莓派引脚对照表
- 手持式矢量网络分析仪
- 【敏捷6.1】团队绩效理念与实践
- 人工智能的起源及发展
- 无法设置默认打开方式怎么办
- 带有同步更新新浪微博功能的个人日记应用
- 使用笔记本的不良习惯
- 如何查看 安卓证书 的签名
- 主数据(MD Master Data)
- 【ORACLE】各种数据类型
- asp.net后台为控件添加css样式
- 让CS的头像支持GIF动画
- android爬取视频播放地址,Android 视频中抓取图像 - MediaMetadataRetriever
热门文章
- GAN手写体生成(MINIST)
- 电子签的背后江湖:腾讯、蚂蚁、字节跳动的较量
- word批量转换为pdf python脚本
- Nordic nRF52840实战学习--使用nRF52840开发板抓蓝牙数据包
- 【预测模型】基于粒子群算法优化DBN深度置信网络实现数据预测matlab代码
- C语言乘法口诀表代码
- php require失败,关于php:致命错误:require_once()[function.require]:要求打开失败
- ESP8285烧写问题备忘
- 06 OPENMV中的AT指令集操作
- php微信实现红包雨,怎么制作微信红包雨(微信红包雨特效)