Spring Cloud学习之-什么是Spring Cloud?
SpringCloud
什么是微服务?
要想学习微服务,首先需要知道什么是微服务?为什么会有微服务?相信看完架构的发展史读者就会明白
架构发展史
单体应用架构
如图所示:将所有的模块,所有内容(页面、Dao、Service、Controller)全部写入一个项目中,放在一个Tomcat容器中启动适用于小型项目
优点:开发速度快,可以利用代码生成工具快速的开发一个项目
缺点:不易扩展,代码耦合度高,且不容错(当某部分出错后整个服务就会停止运行)
垂直架构
既然原来单体架构中代码耦合度高,不利于维护和运行,人们自然就想到将不同的内容分开。最简单合理的方式就是将系统按照功能划分成不同的模块,然后将各模块独立放入不同的Web容器中,这就形成了垂直架构
优点:代码耦合度降低,且不同模块之间可以独立运行。一旦某个模块压力过大,可以针对性的搭集群
缺点:模块之间有可能不是那么完全独立,导致实体类或者其他层代码不能复用,需要多出粘贴,不方便日后维护。如果直接通过HTTP调用又不是很合理。
分布式架构/分布式SOA架构
分布式架构顾名思义就是分散部署在不同的机器上的服务,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的架构。从开发的角度看就是Controller层(服务消费者)和Service层(服务提供者)分成不同的项目,部署在不同的服务器上,通过RPC(远程方法调用)来实现交互。阿里巴巴著名的Dubbo框架就是作为分布式架构的框架。一般推荐使用Zookeeper作为服务的注册中心,负责注册和发现服务的提供者,并供服务的消费者消费
微服务
单体架构和微服务的比较图示:
微服务的核心就是将传统的一站式应用,根据业务拆分成一个个原子应用。彻底地去耦合,一个服务只做一件事情,从技术角度讲就是一个服务就是一个进程,可以单独启动或销毁,拥有独立的数据库。并且通过配置中心可以方便的切换数据库等。
优点:
- 每个服务足够内聚,足够小,代码容易理解,一个服务可能就是专一的只干一件事。开发简单、开发效率提高
- 微服务能够被小团队单独开发,这个小团队可以是由2到5人的开发人员组成
- 微服务能使用不同的语言开发。易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, Hudson, bamboo 。微服务允许你利用融合最新技术。
- 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
缺点:
- 开发人员要处理分布式系统的复杂性,会面临分布式事务、分布式一致性等问题
- 多服务运维难度,随着服务的增加,运维的压力也在增大
- 服务间通信成本变高
微服务的技术栈
微服务条目 | 落地技术 | 备注 |
---|---|---|
服务开发 | Springboot、Spring、SpringMVC | |
服务配置与管理 | Netflix公司的Archaius、阿里的Diamond等 | |
服务注册与发现 | Eureka、Consul、Zookeeper等 | |
服务调用 | Rest、RPC、gRPC | |
服务熔断器 | Hystrix、Envoy等 | |
负载均衡 | Ribbon、Nginx等 | |
服务接口调用(客户端调用服务的简化工具) | Feign等 | |
消息队列 | Kafka、RabbitMQ、ActiveMQ等 | |
服务配置中心管理 | SpringCloudConfig、Chef等 | |
服务路由(API网关) | Zuul等 | |
服务监控 | Zabbix、Nagios、Metrics、Spectator等 | |
全链路追踪 | Zipkin,Brave、Dapper等 | |
服务部署 | Docker、OpenStack、Kubernetes等 | |
数据流操作开发包 | SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息) | |
事件消息总线 | Spring Cloud Bus |
什么是Spring Cloud
Spring Cloud 是实现微服务思想落地开发的一整套技术的集合
Spring Cloud和Dubbo的区别图解
Spring Cloud开发者文档中文版:
https://springcloud.cc/spring-cloud-dalston.html
Spring Cloud中国社区
Spring Cloud中文网
Spring Cloud学习之-什么是Spring Cloud?的更多相关文章
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...
- SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇
目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...
- Spring Boot学习(一)——Spring Boot介绍
Spring Boot介绍 Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式 ...
- Spring Framework 学习笔记——核心技术之Spring IOC
Spring Framework 官网文档学习笔记--核心技术之Spring IOC 官方文档 spring-framework-5.3.9 1. Spring Framework 核心技术 1.1 ...
- spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】
[ 前言] Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...
- Spring框架学习(7)spring mvc入门
内容源自:spring mvc入门 一.spring mvc和spring的关系 spring mvc是spring框架提供的七层体系架构中的一个层,是spring框架的一部分,是spring用于处理 ...
- Spring框架学习(1)Spring简介
内容源自:Spring 框架简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序 ...
- spring Boot 学习(六、Spring Boot与分布式)
一.分布式应用在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用 全栈的Spring,Spring Boot+Spring Cloud 分布式系统: 单一应用 ...
- Spring框架学习(4)spring整合hibernate
内容源自:spring整合hibernate spring整合注解形式的hibernate 这里和上一部分学习一样用了模板模式, 将hibernate开发流程封装在ORM层提供的模板类Hiber ...
随机推荐
- ES6必须 知道的小知识
1.函数的默认参数 一般 我们给函数设置默认参数的时候 会在函数里用 || 运算符 比如 function show(width,height ....){ var height = height ...
- location对象相关
JS是由DOM(文档对象模型).BOM(浏览器对象模型).以及ECMA组成,而location对象是BOM中的一个非常重要的对象,所有关于地址栏信息的内容都在这里.了解location对象之前让我们先 ...
- C#面试题整理(不带答案)
1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么? 2.什么是事务?什么是锁? 3.什么是索引,有什么优点? 4.视图是什么?游标是什么? 5.什么是存储过程?有什么优 ...
- Android APP开发内容图片不显示
I/Glide: Root cause (1 of 1) Cause (1 of 1): class java.io.FileNotFoundException: No content provide ...
- UE4 中的 C++ 与 蓝图交互
1.Unreal 引擎提供了两种创建新 Gameplay 元素的方法:C++ 和 蓝图视觉脚本. 通过 C++,程序员构建基础游戏系统:设计师可以基于此系统为场景 / 游戏创建自定义的游戏玩法. 这种 ...
- 学习Java第六周
1.内存结构 Java程序在运行时,需要在内存中的分配空间为提高运算效率,空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式. 栈内存 ·用于存储局部变量,当数据使用完,所占 ...
- 关于hibernate5的映射文件和配置文件改变(转)
转自:https://blog.csdn.net/m0_37840000/article/details/78823716 配置文件: <!DOCTYPE hibernate-configura ...
- javascript DOM 编程艺术 札记2 平稳退化
定义 指的是即便浏览器不支持javascript,页面的基础展示功能也不会受到影响的做法. 不能平稳退化的实例 javascript:这种伪协议,它可以通过链接调用javascript函数.比如< ...
- 分析CPU使用率不断增加的原因
工程中发现引起的问题: 结合别的朋友的意见,我的优化思路是: 1.排查是否内存泄漏 经过反复查询代码,未发现有内存泄漏(可以自己百度搜索C#内存泄漏的原因).可以通过任务管理器分析是否有内存泄漏,打开 ...
- leetcode.1275找出井字棋的获胜者
A 和 B 在一个 3 x 3 的网格上玩井字棋. 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上.第一个玩家 A 总是用 "X" 作为棋子, ...