SpringCloud01:微服务概述
一、什么是微服务
微服务是一种架构风格,是一种架构设计方式,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
二、为什么需要微服务
传统开发模式下,绝大多数的web应用都是单体架构的风格来进行构建,这就使得所有的接口,业务逻辑层,数据持久层全部都被打包在一个web应用中,并且布置在一台服务器上,使得不同的模块之前也高耦合在一起,这种开发模式使得多团队协作开发的开发成本极高。
三、单体应用存在的问题
* 随着业务的发展,开发变得越来越复杂
* 对某单一功能进行修改时,需要对整个系统进行打包部署
* 多个团队同时对数据进行操作管理,容易产生安全漏洞
* 各模块都使用相对统一的技术进行开发,各个模块很难根据实际情况选择更加合适的技术框架,系统的延展性比较低。
* 模块间耦合度高,新人上手比较费时
*分布式、集群*
集群:一台服务器无法负荷高并发的数据访问,需要设置更多的服务器一起分担压力。从物理层面解决高并发的问题,例如春运期间火车站多开购票窗口等。
分布式:将一个大型的项目架构拆分为若干个微服务来协同完成。从软件设计层面解决问题,例如将购票分为统计出发地与目的地,查询是否有票,统一购买票等步骤,分别由不同的人来完成这些小的工作,最后将所有的工作结果进行整合,实现更大的需求。
四、微服务的优点
1.各个服务的开发、测试、部署都是相互独立的。可以针对某一个特定的服务进行更多的操作,比如负载均衡等。
\2. 当有一个新的需求加入时,传统项目需要结合各方面考虑影响等,微服务就不存在这样的问题,省事省力又省心。
3.使用微服务将项目拆分后,只需要保证对外接口的正常运行,大大降低了各个模块之间的耦合性,极大的提高开发效率。
五、微服务的弊端
1.微服务的拆分基于业务,不能随心所欲的拆分,所以如何拆分,对于项目架构来说是非常重要且极具挑战的任务。
2.涉及到服务之间的调用时,常常需要和另外一个服务的提供方进行沟通,若是两个完全不同的公司或者部门,沟通成本比较大;某服务的对外接口要进行修改,也需要与其他服务调用方进行沟通。
3.由于各个服务相互独立,数据也是独立,当多个服务的接口进行操作时,如何保证数据的一致性是一个难点。数据统一性是微服务里面的一个难题。
六、为什么选择Spring Cloud
虽然微服务也有很多缺点,但是瑕不掩瑜,总体来讲,微服务还是实现分布式架构的一个非常好的方式。是当下非常热点的技术,也是未来技术发展的趋势。当下较为常见的微服务框架是Spring Cloud和dubbo。那我们为什么选择Spring Cloud呢,原因如下:
1.Spring Cloud是完全基于Spring Boot,服务调用是基于REST API ,整合了各种成熟的产品和架构,同时基于Spring Boot也使得整体的开发、配置、部署都非常的方便。
2.Spring系列的产品具备功能齐全、简单好用、性能优美、文档规范等优点。
七、Spring Cloud的整体架构

八、Spring Cloud的核心组件
Spring Cloud包含多个组件,主要是服务治理Eureka、服务通信Ribbon、服务通信Feign、服务网关Zuul、服务容错Hystrix、服务配置Config、服务监控Actuator、服务跟踪Zipkin等8大组件。 Spring Cloud的学习主要就是学习这些组件的使用以及这些组件之间的整合。

九、服务如何治理
服务治理的核心由三部分组成:服务提供者、服务消费者、注册中心
服务注册:分布式系统架构中,没个微服务在启动时,会将自己的信息存储在注册中心。
服务发现:服务消费者从注册中心获取服务提供者的信息,通过这些信息调用服务提供者的服务。
SpringCloud01:微服务概述的更多相关文章
- 一、微服务概述与SpringCloud
一.微服务概述与SpringCloud 1.微服务与微服务架构 微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面 ...
- SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么
从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...
- SpringCloud与微服务Ⅱ --- 微服务概述
一.什么是微服务 1) Martin Fowler论文对微服务的阐述(中文版) 2) 对单一应用进行拆分 3) 每一个独立的应用都有一个独立的进程 4) 拥有自己独立的数据库 5) 微服务化的核心就是 ...
- SpringColud微服务-微服务概述
一.什么是微服务架构 微服务架构是一种架构模式,它提倡讲单一应用程序划分为一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在单独的进程当中,服务与服务之间采用轻量级的通信机制 ...
- Spring Cloud与Docker——微服务架构概述
Spring Cloud与Docker--微服务架构概述 单体应用架构概述 微服务概述 微服务的特性 微服务架构的优点 微服务面临的挑战 微服务的设计原则 单体应用架构概述 传统的服务发布都是采用单体 ...
- java框架之SpringCloud(1)-微服务及SpringCloud介绍
微服务概述 是什么 业界大牛 Martin Fowler 这样描述微服务: 参考[微服务(Microservices)-微服务原作者Martin Flower博客翻译]. 下面是关于上述博客中的部分重 ...
- 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用
本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...
- 应用Dubbo框架打造仿猫眼项目 理解微服务核心思想
1:传统应用带来的问题 单一业务开发的迭代问题 扩容困难 部署回滚困难2:微服务概述 微服务是一种将业务系统进一步拆分的架构风格 ...
- SpringCloud与微服务系列专栏
一. 前置知识 学习SpringCloud之前需要具备和掌握如下框架和工具的使用:SpringMVC,Spring,Spring Boot,Mybatis,Maven,Git. SpringCloud ...
随机推荐
- SSRF(服务端请求伪造)漏洞
目录 SSRF SSRF漏洞的挖掘 SSRF漏洞利用 SSRF漏洞防御 SSRF SSRF(Server-Side Request Forgery,服务器端请求伪造)漏洞,是一种由攻击者构造请求,由服 ...
- WPF之事件绑定命令
目录 事件绑定意义 无参数的事件绑定 带EventArgs参数的事件绑定 使用事件绑定 扩展:基于InvokeCommandAction源码的实现(推荐) 参考资料 事件绑定意义 一般事件的处理程序都 ...
- spring泛型注入
泛型依赖注入 Spring 4.0版本中更新了很多新功能,其中比较重要的一个就是对带泛型的Bean进行依赖注入的支持. 泛型依赖注入允许我们在使用spring进行依赖注入的同时,利用泛型的优点对代码进 ...
- Spring MVC工作原理及源码解析(四) ViewResolver实现原理及源码解析
0.ViewResolver原理介绍 根据视图的名称将其解析为 View 类型的视图,如通过 ModelAndView 中的视图名称将其解析成 View,View 是用来渲染页面的,也就是将 Mode ...
- Nmap浅析(2)——端口发现
端口发现 每台网络设备最多有216(65536)个端口,端口的作用是实现"一机多用".操作系统分了65536个端口号,程序在发送的信息中加入端口号,操作系统在接收到信息后按照端 ...
- Ping命令浅析
Ping Ping基于ICMP协议. Ping可以分为 内网Ping 和 外网Ping 下面以内网Ping为例,使用的软件是eNSP和WireShark Step1.创建拓扑,PC ...
- 改善c++程序的150个建议(读后总结)-------10-11
10. 优化结构体中元素的布局 结构体变量所占空间大小并不是其所含类型所占字节数之和,其所占内存字节数涉及到字节对齐. 字节对齐 :变量在内存中储存都是以字节数为单位,每一个字节都有自己的地址,逻辑上 ...
- 免费JS甘特图组件dhtmlxgantt
安装 参考:https://docs.dhtmlx.com/gantt/desktop__install_with_bower.html 可使用NuGet.Bower.npm包管理器安装(应用在asp ...
- Java方法区的理解
方法区逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩. 但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap,目的就是要和堆分开 所以方法区看作是一块 ...
- [c++] 声明
注意事项 变量定义时就会赋初值(如int是0),所以定义包含声明,单纯声明不定义的话,要加extern 同一个文件中,函数使用(调用)前必须定义(有{ }为定义),否则会报错:若先使用再定义,或定义和 ...