SpringCloud整体构架设计(一)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud整体构架设计(一)相关的知识,希望对你有一定的参考价值。
参考技术A SpringClound整体核心架构只有一点:Rest服务,也就是说在整个SpringCloud配置过程之中,所有的配置处理都是围绕着Rest完成的,在这个Rest处理之中,一定要有两个端:服务的提供者(Provider)、服务的消费者(Consumer),所以对于整个SpringCloud基础的结构就如下所示:既然SpringCloud的核心是Restful结构,那么如果要想更好的去使用Rest这些微服务还需要考虑如下几个问题。
1、所有的微服务地址一定会非常的多,所以为了统一管理这些地址信息,也为了可以及时的告诉用户哪些服务不可用,所以应该准备一个分布式的注册中心,并且该注册中心应该支持有HA机制,为了高速并且方便进行所有服务的注册操作,在SpringCloud里面提供有一个Eureka的注册中心。
对于整个的WEB端的构架(SpringBoot实现)可以轻松方便的进行WEB程序的编写,而后利用nginx或Apache实现负载均衡处理,但是你WEB端出现了负载均衡,那么业务端呢?应该也提供有多个业务端进行负载均衡。那么这个时候就需要将所有需要参与到负载均衡的业务端在Eureka之中进行注册。
在进行客户端使用Rest架构调用的时候,往往都需要一个调用地址,即使现在使用了Eureka作为注册中心,那么它也需要有一个明确的调用地址,可是所有的操作如果都利用调用地址的方式来处理,程序的开发者最方便应用的工具是接口,所以现在就希望可以将所有的Rest服务的内容以接口的方式出现调用,所以它又提供了一个Feign技术,利用此技术可以伪造接口实现。
在进行整体的微架构设计的时候由于牵扯的问题还是属于RPC,所以必须考虑熔断处理机制,实际上所有的熔断就好比生活之中使用保险丝一样,有了保险丝在一些设备出现了故障之后依然可以保护家庭的电器可以正常使用,如果说现在有若干的微服务,并且这些微服务之间可以相互调用,例如A微服务调用了B微服务,B微服务调用了C微服务。
如果在实际的项目设计过程之中没有处理好熔断机制,那么就会产生雪崩效应,所以为了防止这样的问题出现,SpringCloud里面提供有一个Hystrix熔断处理机制,以保证某一个微服务即使出现了问题之后依然可以正常使用。
通过Zuul的代理用户只需要知道指定的路由的路径就可以访问指定的微服务的信息,这样更好的提现了java中的“key=value”的设计思想,而且所有的微服务通过zuul进行代理之后也更加合理的进行名称隐藏。
在SpringBoot学习的时候一直强调过一个问题:在SpringBoot里面强调的是一个“零配置”的概念,本质在于不需要配置任何的配置文件,但是事实上这一点并没有完全的实现,因为在整个在整体的实际里面,依然会提供有application.yml配置文件,那么如果在微服务的创建之中,那么一定会有成百上千个微服务的信息出现,于是这些配置文件的管理就成为了问题。例如:现在你突然有一天你的主机要进行机房的变更,所有的服务的IP地址都可能发生改变,这样对于程序的维护是非常不方便的,为了解决这样的问题,在SpringCloud设计的时候提供有一个SpringCloudConfig的程序组件,利用这个组件就可以直接基于GIT或者SVN来进行配置文件的管理。
在整体设计上SpringCloud更好的实现了RPC的架构设计,而且使用Rest作为通讯的基础,这一点是他的成功之处,由于大量的使用了netflix公司的产品技术,所以这些技术也有可靠的保证。
常见的版本号及Springcloud的版本
谈谈软件版本号的认识
一、常见版本号说明
举个瓜:2.0.3 RELEASE
2:主版本号,当功能模块有较大更新或者整体架构发生变化时,主版本号会更新
0:次版本号。次版本表示只是局部的一些变动。
2:修改版本号。一般是bug的修改或者是小的变动
RELEASE:希腊字母版本号。此版本号用户标注当前版本的软件处于哪个开发阶段
二、希腊字母版本号
Base:设计阶段。只有相应的设计没有具体的功能实现。
Alpha:软件的初级版本。基本功能已经实现,但存在较多的bug。
Bate:相对于Alpha已经有了很大的进步,消除了严重的BUG,但还存在一些潜在的BUG,还需要不断测试。
RELEASE:最终版本,没有太大的问题。
三、SpringCloud的版本号
1)为什么springcloud版本用的是单词而不是数字呢?
设计的目的是为了更好的管理每个SpringCloud子项目的清单,避免自己的版本号与子项目的版本号混淆。
2)有什么规则么?
(常用了英国伦敦地铁站的名称来命名)首字母越靠后表示版本号越大
3)关于版本发布说明?
BUILD-XXX 开发版 开发团队内部使用,不是很稳定
GA 稳定版 相比于开发版,基本上可以使用了
PRE(M1、M2) 里程碑版 主要是修复了一些BUG的版本,一个GA后通常有多个里程碑版
RC 候选发布版 该阶段的软件类似于最终版的一个发行观察期,基本只修复比较严重的BUG
SR 正式发布版 ~~~~这个就没啥好说啦
以上是关于SpringCloud整体构架设计(一)的主要内容,如果未能解决你的问题,请参考以下文章