| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringCloud (一) --------- SpringCloud 概述 -> 正文阅读 |
|
[Java知识库]SpringCloud (一) --------- SpringCloud 概述 |
目录一、集中式架构与分布式架构在系统架构与设计的实践中,从宏观上可以总结为三个阶段:
1. 什么是集中式架构?
直白一点: 就是只有一个项目,只有一个 war。 2. 什么是分布式架构?
直白一点: 就是有很多项目,有很多 war 包,这些项目相互协作完成需要的功能,不是一个 war 能完成的,一个 war 包完成不了。 Shop项目:单体应用 Shop项目:拆分 —> (user-center,order-center,trade-center) 分布式应用 3. 什么是微服务架构?
并且到目前为止,微服务并没有一个统一的标准的定义,那么微服务究竟是什么? 微服务一词源于 Martin Fowler (马丁.福勒) 的名为 Microservices 的博文: 可以在他的官方博客上找到这篇文章: 简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于 HTTP 的 RESTful API 进行通信协作。 RESTful API 被拆分后的每一个小型服务都专注于完成系统中的某一项业务功能,职责单一, 并且每个服务都是一个独立的项目,可以进行独立的测试、开发和部署等。 由于各个独立的服务之间使用的是基于 HTTP 的 JSON 作为数据通信协作的基础,所以这些微服务也可以使用不同的语言来开发。
项目里面有 User 模块和 Order 模块,但是 User 模块和 Order 模块并没有直接关系,仅仅只是一些数据需要交互,那么就可以把这 2 个模块单独分开来,当 user 需要调用 order 的时候,order是一个服务方,但是order需要调用 user 的时候,user 又是服务方了。 所以,它们并不在乎谁是服务方谁是调用方,他们都是2个独立的服务,这就是微服务的概念。 4. 分布式和微服务有什么区别?分布式,就是将巨大的一个系统划分为多个模块,这一点和微服务是一样的,都是要把系统进行拆分,部署到不同机器上,因为一台机器可能承受不了这么大的访问压力,或者说要支撑这么大的访问压力需要采购一台性能超级好的服务器,其财务成本非常高,有这些预算完全可以采购很多台普通的服务器了,分布式系统各个模块通过接口进行数据交互,其实分布式也是一种微服务,因为都是把模块拆分变为独立的单元,提供接口来调用,那么它们本质的区别是什么? 它们的本质的区别体现在"目标"上,何为目标,就是你采用分布式架构或者采用微服务架构,你最终是为了什么,要达到什么目的? 分布式架构的目标是什么? 就是访问量很大一台机器承受不了,或者是成本问题,不得不使用多台机器来完成服务的部署。 而微服务的目标是什么?只是让各个模块拆分开来,不会被互相影响,比如模块的升级或者出现 BUG 或者是重构等等都不要影响到其他模块,微服务它是可以在一台机器上部署。 但是:分布式也是微服务的一种,微服务也属于分布式。 5. 微服务与 SpringCloud 的关系或区别?微服务只是一种项目的架构方式、架构理念,或者说是一种概念,就如同我们的MVC架构一样, 那么Spring Cloud便是对这种架构方式的技术落地实现。 6. 微服务一定要使用 SpringCloud 吗?微服务只是一种项目的架构方式、架构理念,所以任何技术都可以实现这种架构理念,只是微服务架构里面有很多问题需要我们去解决,比如:负载均衡、服务的注册与发现、服务调用、服务路由、服务熔断等等一系列问题,如果你自己从 0 开始实现微服务的架构理念,那头发都掉光了,所以 Spring Cloud 帮我们做了这些事情,Spring Cloud 将处理这些问题的的技术全部打包好了,我们只需要开箱即可用。 二、什么是 SpringCloud ?1. 概念官网:https://spring.io/projects/spring-cloud 官方解释 : Spring Cloud 为开发人员提供了一些工具用来快速构建分布式系统中的一些常见模式和解决一些常见问题 (例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、群集状态等) 。 分布式系统的协调导致了很多样板式的代码 (很多固定套路的代码),使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地运行,包括开发人员自己的笔记本电脑、裸机数据中心和云计算等托管平台。 2. 特性Spring Cloud为分布式系统开发的典型应用场景提供良好的开箱即用的功能,比如:
3. SpringCloud 下的主要项目
发行项目版本 : 4. SpringCloud 的版本Spring Cloud是由一系列独立项目组成的,每个独立的项目具有不同的发布节奏,每次Spring Cloud发布版本时,就会组合这一系列的子项目,Spring Cloud为了避免大家对版本号的误解,避免与子项目版本号混淆,所以Spring Cloud发布的版本是一个按照字母顺序的伦敦地铁站的名字 (“天使” 是第一个版本,“布里克斯顿” 是第二个),字母顺序是从 A-Z,目前最新稳定版本 Greenwich SR3,当 Spring Cloud 里面的某些子项目出现关键性 bug或重大更新,则发布序列将推出名称以 “.SRX” 结尾的版本,其中“X”是一个数字,比如Greenwich SR1、Greenwich SR2、Greenwich SR3。 Spring Cloud 是微服务开发的一整套解决方案,采用 Spring Cloud 开发,每个项目依然是使用 Spring Boot。 Spring Cloud 与 Spring Boot 的兼容版本
三、SpringCloud 的整体架构
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:04:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |