springCloud基本概念

架构

分布式

概述

当垂直应用越来越多,应用之间交互不可避免,将核心的业务抽取出来,作为独立业务

业务一台机器可能承受不了那么大的压力

分布式,就是将偌大的系统划分为多个模块(这一点1和微服务很像)部署到不同的机器上

各个模块通过接口进行数据交互,其实分布式也是一种微服务

特点

将基础服务进行了抽取,系统间互相调用,提高了代码复用开发效率

系统耦合度变高,调用关系错综复杂,难以维护\

微服务

单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责

服务拆分粒度很小:例如一个用户管理就可以作为一个服务

面向服务:每一个服务都对外暴露api,并不关心服务的技术实现,做到与平台和语言无关,不限定用什么技术实现,只要提供rest接口即可

自治:服务相互独立互不干扰

区别

微服务与分布式都是把模块拆分开来变成独立的单元,提供接口来调用

他们的本质区别在于目标的不同,

分布式的目标是:一台机器承受不了的,或者是成本问题,不得不使用多台及其来完成服务的部署

微服务的目标:只是让哥哥模块拆分开来,不会被互相影响,比如模块的升级或是出现bug等

问题

服务越来越多,需要管理每个服务的地址,调用关系错综复杂,难以理清依赖关系,服务过多,服务状态难以管理,无法根据服务情况动态管理

服务治理

服务注册中心,实现服务自动注入和发现,无需认为记录服务地址

服务自动订阅,服务列表自动推送,服务调用透明化,无需关心依赖关系

动态监控服务状态监控报告,人为控制服务状态

监听服务是否宕机

部署很多服务后需要监听服务器有没有宕机

负载均衡

一个服务吃不消,要部署多个服务,部署的多个服务均衡调用

熔断

服务出现了问题,不能让程序卡在里面

限流

限流就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请求进行熔断

降级

当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有侧咧的不处理或换种简单的方式处理从而释放服务器资源以保证核心交易正常运作或高效运作

网关

统一管理api的一个网络关口,通道,是整个微服务平台所有请求唯一的入口

远程调用方式

rpc

remote Produce Call远程过程调用,类似的还有RMI.自定义数据格式,基于原生tcp通信,速度快,效率高早起的webservice和现在热门的dubbo都是RPC的典型,缺点是限制了平台,只能是java平台

Http:

http其实是一种网络传输协议,基于tcp,规定改了数据传输的格式现在客户端浏览器与服务端通信基本都是采用http协议,也可以进行服务远程调用.缺点是封装臃肿,但不限制平台

springcloud

如果你足够了解微服务是什么概念,其实微服务就算不借助任何技术也能实现,只是有很多问题需要我们解决列入上述的问题

spring-cloud将处理这些问题的及时打包好了,进行统一处理


微服务只是一种项目的架构方式,或者说是一种概念

springcloud更是对这种技术的实现

对微服务面临的问题进行统一的管理

版本号

springboot版本号

2.2.3

2.主版本,第几代版本 2.次版本,一些添加功能 3.bug修复,增量版本

release

正式发布版

SNAPSHOT

开发板

M

发布之前的版本

其他版本

alpha: α是希腊字母的第一个,表示最早的版本,内部测试版本,一半不会向外发布,bug会比较多,功能也不齐全,一半只有测试人员使用

Bate:希腊字母的第二个,公开测试版,比alpha版本晚一些,主要会有"粉丝用户"测试使用,分为bate1,bate2等,直到主键稳定下来进入RC版本

RC:发行候选版本,基本不再加入新的功能,主要修复bug.是最终发布成正式版的前一个版本

Stable:稳定版,开源软件有的时候会用stable来表示正式发布的版本

final:最终发布版

springcloud

springcloud为了避免与子项目的命名混淆,用了自己的排序方式,名称是按照字母的顺序排的

sr:修正版或更新版

ga:正式发布版本,官方开始官方使用

springcloud与dubbo功能对比

功能DubboSpringcloud
服务注册和发现zookeeperEureka
服务调用方式RPCRestful API
断路器
均衡负载
服务路由和过滤
分布式配置
分布式锁计划开发
集群选主
分布式消息

springcloud抛弃了dubbo的RPC通信,采用的是基于HTTP的REST方式

与NetFlix的关系

Netflix(网飞)是一家成功实践微服务的互联网公司,几年前,NetFlix就把它几乎整个微服务框架贡献给了社区

spring背后的Pivotal在2015退出的SpringCloud开源产品

要对Netflix开源组件的进一步分装,方便spring开发人员构建微服务基础框架

服务治理(SOA)问题

问题

服务管理如何自动注册和发现,如何实现状态的监管,如何实现动态路由

如何实现均和负载

服务如何解决容灾问题

服务如何实现统一配置

解决

使用注册中心,无论几台服务器都统一交给注册中心管理

在访问的时候直接去找注册中心

注册中心就会监听各个服务器的哪个好,哪些不好

可以实现均衡负载,有多台服务器时,可以把访问平均分配到每一台服务器上

Last modification:April 21, 2022
如果觉得我的文章对你有用,请随意赞赏