详细的讲一下微服务框架--SpringCloud
一:微服务架构?
1.为什么需要微服务架构
大家都知道,最开始开发系统就是单机模式(only one computer)。但是随着网络的不断发展,数据不断的增加,业务不断的增加,之前在一台机器上实现的服务现在性能上更不上了,所以很需要一种模式来解决这个问题---微服务架构由此诞生。
2.微服务架构是什么
大白话讲一下就是:把一个大型的单个应用程序和服务拆分为多个的支持微服务,各自都有对应的业务。个人认为就是按照业务来划分成不同的微服务。
3.其相对于之前的单机模式的优势:
其处理复杂的系统时表现出高性能,易维护,好协调等好处
(1)通过分解各个微服务,以及各大组件技术,使得服务更好流畅的执行,分工明确。比如说之前饭店有10个人,每个人既要跑堂,又要记账,又要做饭;这很麻烦;然而使用微服务架构后每个人都有了i明确的分工,自然就搞笑了很多,责任也好追查。
(2)微服务架构模式是每个微服务独立的部署。开发者不再需要协调其它服务部署对本服务的影响。这种改变可以加快部署速度。UI团队可以采用AB测试,快速的部署变化。微服务架构模式使得持续化部署成为可能。
(3)这种架构使得每个微服务都可以有专门开发团队来开发。开发者可以自由选择开发技术,提供API服务。这种自由意味着开发者不需要被迫使用某项目开始时采用的过时技术,他们可以选择现在的技术。甚至于,因为服务都是相对简单,即使用现在技术重写以前代码也不是很困难的事情。
二:当今最流行的微服务框架---Spring Cloud
Spring Cloud整体核心架构只有一点:Rest服务。也就是这一点与其他所有的微服务框架都不同,其他都可以算是PRC框架,而SpringCloud是基于Restful实现的服务调用。而且其社区牛逼,技术更新相比很快。还有一点就是该框架提供的是全家桶服务;不像Dubbo这些框架缺少很多组件,就采用其他组件来弄,搞得像是个杂牌机一样;不过也正如Doubbo的一位负责人说的,Dubbo他的目的和SpringCloud不一样,其旨在解决各个微服务的性能,管理等。接下来我们主要讲各大组件技术。
1.Eureka(注册中心)

就是在服务的调用和被调用之间加了一个中间件。这个Rureka主要分为服务器和客户端。
服务生产者把服务注册到Eureka;服务消费者在Eureka中找到想要的服务API,并进行调用。Eureka大多都是用集群,其保证的是AP原则。就是可用性和分区容错性。
2.Ribbon,Feign(多业务端的负载均衡)

SpringCloud Ribbon 是一个基于Netflix Ribbion实现的的客户端负载工具。主要功能是提供客户端的软件负载均衡算法。通过SpringCloud的封装,可以让我们轻松的将面向服务的REST服务请求自动转换为客户端负载均衡的服务调用。服务提供者只需要启动多个服务实力示例并注册到一个注册中心或是多个相关联的服务注册中心。服务消费者直接通过调用@LoadBalanced注解修饰过的RestTemplate来实现面向服务接口调用。
大白话时刻:就是将LB逻辑集成到消费方,消费方从注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。
Feign是一个声明式WebService端。使用Feign能够让编写WebService客户端更加简单,他的使用方法是定义一个接口,然后在其上面添加注解,其与Rureka和Ribbon组合使用以支持负载均衡。
Feign集成了Ribbon:利用Ribbon某个微服务维护了服务列表信息,通过集成IRule这个接口,可以实现不同的LB算法。而与Ribbon不同的是通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用。
3.Hystrix熔断处理

Hystrix主要是处理分布式系统的延迟和容错的开源库。通常在分布式系统中会出现服务A依赖服务B,服务B有依赖服务C(这种情况叫做扇出);而只要B断开或出问题的话,时间一长会导致所有的服务都卡在这里就会出现系统崩溃。那么Hystrix能够保证在一个微服务出现问题了,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
而把其称之为断路器,也是在一个服务单元发生故障后,通过故障检测(类似熔断保险丝),向调用方返回一个符合预期,可处理的备选响应(Fallback),而不是长时间的等待或者抛出调用方无法处理的异常。这样就保证了服务调用方的线程不会被长时间,不必要的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
其能够完成服务降级,服务熔断,服务限流,接近实时的监控。其实和前面说的意思差不多。
4.ZUUL网关代理。

Zuul服务器也是会注册进Eureka中,提供代理,路由,过滤三大功能呢。
Zuul注册进Eureka中,同时也会从Eureka的服务列表中获得其他的微服务信息。即以后的微服务都是通过Zuul跳转后获得的。
5.SpringCloud Config分布式配置中心

这个理解起来就很简单了。就是把每一个微服务提供者的配置文件统一管理。可以放到Git上,或者其他服务器利用SVN来管理。
三:总结
SpringCloud是一个提供全家桶的微服务架构。下面是常用的组件架构图。

详细的讲一下微服务框架--SpringCloud的更多相关文章
- 微服务框架——SpringCloud
1.SpringCloud微服务框架 a.概念:SpringCloud是基于SpringBoot的微服务框架 b.五大神兽:Eureka(服务发现).Ribbon(客服端负载均衡).Hystrix(断 ...
- 微服务框架SpringCloud(Dalston版)学习 (一):Eureka服务注册与发现
eureka-server eureka服务端,提供服务的注册与发现,类似于zookeeper 新建spring-boot工程,pom依赖: <dependency> <groupI ...
- 微服务框架SpringCloud与Dubbo
#v1.0.0# 1.背景 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点.阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给 ...
- 微服务框架——SpringCloud(三)
1.Zuul服务网关 作用:路由转发和过滤,将请求转发到微服务或拦截请求.Zuul默认集成了负载均衡功能. 2.Zuul实现路由 a.新建springboot项目,依赖选择 Eureka Discov ...
- 微服务框架——SpringCloud(二)
1.Feign声明式服务调用(负载均衡+熔断器) a.概念:Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign整合了Ribbon和Hys ...
- 微服务框架——SpringCloud(四)
1.Spring Cloud Config 分布式配置 a.Config服务器 ①新建springboot项目,依赖选择Config Server ②pom文件关键依赖 <parent> ...
- 基于Spring-Cloud的微服务框架设计
基于Spring-Cloud的微服务框架设计 先进行大的整体的框架整理,然后在针对每一项进行具体的详细介绍
- SpringCloud微服务框架复习笔记
SpringCloud微服务框架复习笔记 什么是微服务架构? 微服务是一种软件开发技术,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进 ...
- java框架之SpringCloud(1)-微服务及SpringCloud介绍
微服务概述 是什么 业界大牛 Martin Fowler 这样描述微服务: 参考[微服务(Microservices)-微服务原作者Martin Flower博客翻译]. 下面是关于上述博客中的部分重 ...
- 微服务框架Dubbo与Springcloud的区别
微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定 ...
随机推荐
- [VueJsDev] 快速入门 - 开发前小知识
[VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html 开发前小知识 ::: details 目录 目录 开发前小知 ...
- C++字符串编码转换
C++中字符串有很多种类,详情参考C++中的字符串类型.本文主要以string类型为例,讲一下字符串的编码,选择string主要是因为: byte是字符串二进制编码的最小结构,字符串本质上就是一个by ...
- C#使用Stateless和箭头控件实现状态机的控制及显示
之前开发一个小工具,内部实现一个状态机,并显示状态机当前状态及状态间的转移过程.我使用了Stateless开源类库及一个开源自定义箭头控件.自定义箭头控件是HZHControls其中一个控件,我单独把 ...
- 教你一招,解决Github图片不显示问题(2021.1.20测试可用)
本文提供的是windows系统解决方法,linux系统和mac系统可以参考原理,修改DNS的ip地址为阿里云或者是修改hosts文件 问题 可能有些朋友和我遇到同样的问题,逛Github的时候会发现, ...
- 前后端分离之Ajax入门
前后端分离之Ajax入门 一.概念 Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信 ...
- Linux快速入门(六)Linux网络管理
ping ping命令用于测试两台主机之间是否可以通信,一般情况下会使用ping www.baidu.com来测试网络连通性,如果不指定发送包的个数默认是一直发送数据包,可以使用Ctrl+C停止.网络 ...
- TP6框架--EasyAdmin学习笔记:excel的数据,图片处理
这是我写的学习EasyAdmin的第七章,这一章我给大家分享下如何处理excel中的数据,图片 原理就是使用easyadmin中封装好的phpexcel,来进行数据的导入,view层我们需要一个用了导 ...
- 记录-JS简单实现购物车图片局部放大预览效果
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.实现效果 二.代码实现 代码不多,先看一下 HTML 里面结构很简单,初始化 MagnifyingGlass 对象来关联一个 IMG ...
- 计算机网络-Keep Alive
问题背景 介绍两个经典的网络问题, 问题1: 访问位于Azure Application Gateway之后的nodejs server, 偶尔会触发502 问题2: 请求一个Azure App Se ...
- Redis高可用之战:主从架构
★ Redis24篇集合 1 主从模式介绍 在笔者的另外两篇文章 <Redis系列:RDB内存快照提供持久化能力>.<Redis稳定性之战:AOF日志支撑数据持久化>中,我们介 ...