一:微服务架构?

 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的更多相关文章

  1. 微服务框架——SpringCloud

    1.SpringCloud微服务框架 a.概念:SpringCloud是基于SpringBoot的微服务框架 b.五大神兽:Eureka(服务发现).Ribbon(客服端负载均衡).Hystrix(断 ...

  2. 微服务框架SpringCloud(Dalston版)学习 (一):Eureka服务注册与发现

    eureka-server eureka服务端,提供服务的注册与发现,类似于zookeeper 新建spring-boot工程,pom依赖: <dependency> <groupI ...

  3. 微服务框架SpringCloud与Dubbo

    #v1.0.0# 1.背景 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点.阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm捐赠给 ...

  4. 微服务框架——SpringCloud(三)

    1.Zuul服务网关 作用:路由转发和过滤,将请求转发到微服务或拦截请求.Zuul默认集成了负载均衡功能. 2.Zuul实现路由 a.新建springboot项目,依赖选择 Eureka Discov ...

  5. 微服务框架——SpringCloud(二)

    1.Feign声明式服务调用(负载均衡+熔断器) a.概念:Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign整合了Ribbon和Hys ...

  6. 微服务框架——SpringCloud(四)

    1.Spring Cloud Config 分布式配置 a.Config服务器 ①新建springboot项目,依赖选择Config Server ②pom文件关键依赖 <parent> ...

  7. 基于Spring-Cloud的微服务框架设计

    基于Spring-Cloud的微服务框架设计 先进行大的整体的框架整理,然后在针对每一项进行具体的详细介绍

  8. SpringCloud微服务框架复习笔记

    SpringCloud微服务框架复习笔记 什么是微服务架构? 微服务是一种软件开发技术,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进 ...

  9. java框架之SpringCloud(1)-微服务及SpringCloud介绍

    微服务概述 是什么 业界大牛 Martin Fowler 这样描述微服务: 参考[微服务(Microservices)-微服务原作者Martin Flower博客翻译]. 下面是关于上述博客中的部分重 ...

  10. 微服务框架Dubbo与Springcloud的区别

    微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定 ...

随机推荐

  1. 实现一个 SEO 友好的响应式多语言官网 (Vite-SSG + Vuetify3) 我的踩坑之旅

    在 2023 年的年底,我终于有时间下定决心把我的 UtilMeta 项目官网 进行翻新,主要的原因是之前的官网是用 Vue2 实现的一个 SPA 应用,对搜索引擎 SEO 很不友好,这对于介绍项目的 ...

  2. C++B树的实现

    B树的实现 今天我们就来实现以下B树,B树有什么特点那?我们来列举一下 每个非叶子节点中存放若干关键字数据,并且有若干指向儿子节点的指针.指针数目=关键字数目+1 根节点有最少1个,最多m-1个关键字 ...

  3. 2层for循环生成 TreeView

    C# TreeView 利用2层for循环生成,代码如下: //生成树 treeView1.Nodes.Clear(); //封装了数据库查询方法 MyDS_Grid = MyDataClass.ge ...

  4. Access注入-Cookie注入

    Access注入-Cookie注入 1.Cookie简单介绍 2.Cookie注入原理及方法 一.Cookie简单介绍 What is Cookie? 储存在用户本地终端上的数据 类型为"小 ...

  5. Linux高级IO

    readv.writev API: #include <sys/uio.h> ssize_t readv(int fd, const struct iovec* vector, int c ...

  6. 使用Wireshark在RTP流中提取中264数据(针对udp)(转)

    调试rtsp收发流时,经常会需要抓包以确认是网络问题还是程序问题还是其它问题.通过tcpdump或者wireshark抓到的包通常是rtp流,保存为.pcap格式文件后中,可通过wireshark进行 ...

  7. 说JS作用域,就不得不说说自执行函数

    一个兜兜转转,从"北深"回到三线城市的小码农,热爱生活,热爱技术,在这里和大家分享一个技术人员的点点滴滴.欢迎大家关注我的微信公众号:果冻想 前言 不得不吐槽,学个JS,这个概念也 ...

  8. Hexo Next主题vercel页面NOT_FOUND

    前端时间将博客部署到了Vercel上,使用的是Hexo Next主题.发现某些博文点进去以后会出现找不到的情况: 404: NOT_FOUND Code: NOT_FOUND ID: ... ... ...

  9. 什么是3D可视化,为什么要使用3D可视化

    虽然许多设计师听说过为什么设计的可视化在他们的审批过程中是有益的,但并不是每个人都知道3D可视化到底是什么. 3D可视化与3D图形.3D渲染.计算机生成图像和其他术语同义使用.3D可视化是指使用计算机 ...

  10. API接口开发规范

    API接口是不同软件系统之间进行通信的重要方式,良好的API接口设计规范可以提高系统的可维护性.可扩展性和易用性.本文介绍了一套详细的API接口开发规范,包括命名规范.请求和响应规范.安全规范等内容, ...