关于SpringCloud微服务架构概念的一点理解
目前微服务是非常火的架构或者说概念,也是在构建大型互联网项目时采用的架构方式。
1.单体架构
单体架构,是指将开发好的项目打成war包,然后发布到tomcat等容器中的应用。
假设你正准备开发一款与Uber和Hailo竞争的出租车调度软件,经过初步会议和需求分析,你可能会手动或者使用基于Spring Boot、Play或者Maven的生成器开始这个新项目,它的六边形架构是模块化的,架构图如下:

应用核心是业务逻辑,由定义服务、域对象和事件的模块完成。围绕着核心的是与外界打交道的适配器。适配器包括数据库访问组件、生产和处理消息的消息组件,以及提供API或者UI访问支持的web模块等。
尽管也是模块化逻辑,但是最终它还是会打包并部署为单体式应用。具体的格式依赖于应用语言和框架。例如,许多Java应用会被打包为WAR格式,部署在Tomcat或者Jetty上,而另外一些Java应用会被打包成自包含的JAR格式,同样,Rails和Node.js会被打包成层级目录。
这种应用开发风格很常见,因为IDE和其它工具都擅长开发一个简单应用,这类应用也很易于调试,只需要简单运行此应用,用Selenium链接UI就可以完成端到端测试。单体式应用也易于部署,只需要把打包应用拷贝到服务器端,通过在负载均衡器后端运行多个拷贝就可以轻松实现应用扩展。在早期这类应用运行的很好。
2. 单体架构存在的问题


3. 什么是微服务?

4. 微服务架构的特征

5. 微服务架构示例

6. SpringCloud简介
1.SpringCloud子项目
|
Component |
Camden.SR7 |
Dalston.SR3 |
Edgware.M1 |
Finchley.M2 |
Finchley.BUILD-SNAPSHOT |
备注 |
|
spring-cloud-aws |
1.1.4.RELEASE |
1.2.1.RELEASE |
1.2.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
用于简化整合AmazonWebService的组件 |
|
spring-cloud-bus |
1.2.2.RELEASE |
1.3.1.RELEASE |
1.3.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
事件、消息总线,用于传播集群中的状态变化或事件。 |
|
spring-cloud-cli |
1.2.4.RELEASE |
1.3.4.RELEASE |
1.4.0.M1 |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
用于在Groovy平台创建SpringCloud应用。 |
|
spring-cloud-commons |
1.1.9.RELEASE |
1.2.3.RELEASE |
1.3.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
服务发现、负载均衡、熔断机制这种模式为Spring Cloud客户端提供了一个通用的抽象层。 |
|
spring-cloud-contract |
1.0.5.RELEASE |
1.1.3.RELEASE |
1.2.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
|
|
spring-cloud-config |
1.2.3.RELEASE |
1.3.2.RELEASE |
1.4.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
配置管理工具,支持使用git、svn等存储配置文件。并在支持客户端配置信息的刷新,加密解密配置内容等。 |
|
spring-cloud-netflix |
1.2.7.RELEASE |
1.3.4.RELEASE |
1.4.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
核心组件,对多个NetflixOSS开源套件进行整合。 |
|
spring-cloud-security |
1.1.4.RELEASE |
1.2.1.RELEASE |
1.2.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
安全工具包。 |
|
spring-cloud-cloudfoundry |
1.0.1.RELEASE |
1.1.0.RELEASE |
1.1.0.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
整合Pivotal Cloudfoundry(Vmware推出的业界第一个开源PaaS云平台)支持。 |
|
spring-cloud-consul |
1.1.4.RELEASE |
1.2.1.RELEASE |
1.2.1.RELEASE |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
服务发现与配置管理工具 |
|
spring-cloud-sleuth |
1.1.3.RELEASE |
1.2.4.RELEASE |
1.3.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
Spring Cloud应用的分布式跟踪实现。 |
|
spring-cloud-stream |
Brooklyn.SR3 |
Chelsea.SR2 |
Ditmars.M2 |
Elmhurst.M1 |
Elmhurst.BUILD-SNAPSHOT |
通过Redis、RabbitMQ、Kafka实现的消息微服务。 |
|
spring-cloud-zookeeper |
1.0.4.RELEASE |
1.1.2.RELEASE |
1.2.0.M1 |
2.0.0.M1 |
2.0.0.BUILD-SNAPSHOT |
基于ZooKeeper的服务发现与配置管理组件。 |
|
spring-boot |
1.4.5.RELEASE |
1.5.4.RELEASE |
1.5.6.RELEASE |
2.0.0.M3 |
2.0.0.M3 |
|
|
spring-cloud-task |
1.0.3.RELEASE |
1.1.2.RELEASE |
1.2.0.RELEASE |
2.0.0.M1 |
2.0.0.RELEASE |
用于快速构建数据处理的应用。 |
|
spring-cloud-vault |
1.0.2.RELEASE |
1.1.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
||
|
spring-cloud-gateway |
1.0.0.M1 |
2.0.0.M2 |
2.0.0.BUILD-SNAPSHOT |
SpringCloud网关相关的整合实现。 |
2. 版本说明



3. SpringCloud框架特点

7.和springboot的关系
Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;
Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;
spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring boot来实现,可以不基于Spring boot吗?不可以。
Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,属于依赖的关系。
spring -> spring booot > spring cloud 这样的关系。
8.springCloud的优势
微服务的框架那么多比如:dubbo,为什么就要使用Spring Cloud的呢?
- 产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。比如dubbo现在就差不多死了
- 有spring Boot 这个独立干将可以省很多事,大大小小的活spring boot都搞的挺不错。
- 作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用。
- Spring Cloud 活跃度很高,教程很丰富,遇到问题很容易找到解决方案
- 轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台功能
关于SpringCloud微服务架构概念的一点理解的更多相关文章
- Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案
Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...
- Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战
Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战 一.写在前面 在Java生鲜电商平台平台中相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这 ...
- Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理
Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...
- Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析
Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...
- SpringCloud微服务架构和SOA架构
1,传统的三层架构 在传统的架构中,SSH,SSM,主要分为web 控制层,业务逻辑层,数据库访问层,单点项目,项目没有拆分,所有的开发任务全部写在一个项目中,耦合度比价高,如果程序中的一个功能出现了 ...
- springcloud微服务架构搭建
SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...
- SpringCloud微服务架构分布式组件如何共享session对象
一.简单做一个背景说明1.为说明问题,本文简单微服务架构示例如下 2.组件说明分布式架构,每个组件都是集群或者主备.具体说明如下:zuul service:网关,API调用都走zuul service ...
- SpringCloud微服务架构升级总结
一.背景 1.1 应用系统的架构历史 1.2 什么是微服务? 起源:微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”.文中内容提到:微服 ...
- Rest构建分布式 SpringCloud微服务架构项目
一.开发环境:jdk 1.8.Maven 3.x.IDEA 2019.1.4.SpringBoot 2.0.7.spring Cloud 最新的稳定版 Finchley SR2 搭配 ...
随机推荐
- day7面向对象--反射
反射 通过字符串映射或修改程序运行时的状态.属性.方法, 有以下4个方法 1.getattr(object, name[, default]) -> value Get a named ...
- day6 ConfigParser模块 yaml模块
yaml模块: python可以处理yaml文件,yaml文件安装的方法为:$ pip3 install pyyaml configparser模块,用来处理文件的模块,可以实现文件的增 ...
- 程序设计实习MOOC / 程序设计与算法(三)第一周测验
作业题: 7. 填空(2分)简单的swap 通过码是 ( 请参考公告中的“关于编程作业的说明”完成编程作业(请注意,编程题都要求提交通过码,在openjudge上提交了程序并且通过以后,就可以下载到通 ...
- 【LOJ】#2430. 「POI2014」沙拉餐厅 Salad Bar
题解 波兰人的j是苹果,p是橘子 还真是跟中国过不去啊= =写的时候很难受 我们先求出每个点作为起点,能延伸到的最大长度,这个可以处理成前缀和,查询一下区间最小值是不是小于0,用st表实现,如果区间最 ...
- 【Java】 剑指offer(49) 丑数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 我们把只包含因子2.3和5的数称作丑数(Ugly Number). ...
- Ionic Js九:列表操作
列表是一个应用广泛在几乎所有移动app中的界面元素.ionList 和 ionItem 这两个指令还支持多种多样的交互模式,比如移除其中的某一项,拖动重新排序,滑动编辑等等. <ion-list ...
- ACM 水果 hdu 1263 一题多解
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1263 文章末有相应的一些测试数据供参考. 传统的数组解题方式 思路一: 三种属性的数据放在一个结构体里面, ...
- 1go基本语法
// week1 project main.go//导入一个包(目录) package main //导入方法 import "fmt" //createMessage函数(参数, ...
- bzoj 2150 最小路径覆盖
最小路径覆盖问题是:给定一个DAG,该DAG的一个路径覆盖是一个路径的集合,使得每个点属于且仅属于其中一条路径,问题就是求一个大小最小的路径集合. 做法是将每个点A拆成两个点A1,A2,如果A-> ...
- bzoj 4322 东西分配问题
问题:有n个东西,分给m个人,对于每个东西,每个人有喜欢与不喜欢两种态度:like[i][j],如果喜欢,那么他得到该东西时增加的喜悦度为k,否则为1,问是否存在一种分法,使得每个人都达到该人的最低喜 ...