Springcloud 开始来了解
为什么要学习springcloud?
“微服务 ”一词源于Martin Fowler 的名为 Microservices 的博文,简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作。 被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建, 并且每个服务都维护着自身的数据存储、 业务开发、自动化测试案例以及独立部署机制。 由千有了轻量级的通信协作基础, 所以这些微服务可以使用不同的语言来编写。
简言之:我们告别单机模式,我们要实现多个机子间的交互,处理更加复杂的事务,提出springcloud这种“全家桶”的新生态。
分布式系统是什么?
项目越来越复杂,如果只要一个容器装载全部代码,当需要对代码修改等情况很容易出现导致整个系统瘫痪的问题,多人合作同一份代码导致代码可维护性差,分布式系统把代码分布在多个不同的容器,每个容器间互不影响,代码模块化,更利于开发的维护,各模块分工会更清晰。
分布式系统和微服务的关系?
关于分布式系统和微服务,两者都只是一种概念。如果你采用微服务,就意味着系统一定是分布式的,分布式系统具有的优缺点在微服务理都会体现,个人理解微服务是分布式系统的一种具体落地方案。
三大公司
大家开始提出各种优秀的分布式框架。。
1.Spring Cloud NetFilx 一站式解决方案
Spring Cloud Netflix 是由 Netflix 开源的,并且由 Spring 项目集成到 Spring Cloud 中的,主要用于构建大型分布式项目。
Spring Cloud Netflix 主要提供以下功能
Eureka:服务注册发现,Eureka主要分为Server和Client。是微服务架构的核心功能之一,Eureka是借助于Spring Cloud中的熔断器Hytrix实现的容错。Hystrix:断路器,熔断机制Zuul:智能路由Ribbon:客户端的负载均衡
api网关,zuul组件
Feign--HttpClient--Http通信方式,同步,阻塞
Spring Cloud Netflix官网
Spring Cloud Netflix中文文档
Spring Cloud Netflix 中文文档 参考手册 中文版
2.Apache Dubbo Zookeeper 半自动,专注于RPC和SOA框架

API:没有,找第三方组件或者自己实现
Dubbo
Zookeeper
3.SpringCloud Alibaba一站式解决方案
包含的组件

面试问题:
1.什么是微服务?
2.微服务之间是如何独立通讯的?
3.SpringCloud和Dubbo有哪些区别?
4.SpringBoot和SpringCloud之间的关系? springcloud是一个生态,集成了springboot可考验的部分,springboot离开springcloud可以独自建立一个项目,但是springcloud不能离开springboot,springboot就是springcloud的一个技术栈
5.什么是服务熔断?什么是服务降级?
6.微服务的优缺点是什么?说下你在项目开发遇到的坑
7.你所知道的微服务技术栈有哪些?列举一二
8.Eureka和zookeeper都可以提供服务注册和发现的功能,它们的区别是?
两者的区别,提一下分布式架构中的CAP理论,即一个分布式框架,只能同时满足C一致性、A可用性、P网络分区容错性这三者中的两个,不可能同时兼备三者。ZK更专注于CP,而Eureka更专注于AP;对于容错机制,Dubbo自身实现了多个错误处理方式,比如失败切换Failover、快速失败Failfast、失败安全Failsafe等,,而Eureka借助springcloud提供的熔断器Hytrix实现的容错;对于负载均衡,Dubbo自身实现了多种负载均衡方式,比如随机权重、哈希一致性等,Eureka同样是将此功能外放,通过Ribbon等实现了负载均衡;对于服务注册和发现,Dubbo自身封装了NettyClient等通讯工具,而Eureka都是采用的应用层通讯HttpClient。
zk保证CP, Eureka保证AP, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪。
技术栈:

传统架构图:
哭了。。好多啊

Springcloud 开始来了解的更多相关文章
- 【微框架】之一:从零开始,轻松搞定SpringCloud微框架系列--开山篇(spring boot 小demo)
Spring顶级框架有众多,那么接下的篇幅,我将重点讲解SpringCloud微框架的实现 Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ...
- springcloud(第三篇)springcloud eureka 服务注册与发现 *****
http://blog.csdn.net/liaokailin/article/details/51314001 ******************************************* ...
- SpringCloud Sleuth 使用
1. 介绍 Spring-Cloud-Sleuth是Spring Cloud的组成部分之一,为SpringCloud应用实现了一种分布式追踪解决方案,其兼容了Zipkin, HTrace和log- ...
- SpringCloud+Consul 服务注册与服务发现
SpringCloud+Consul 服务注册与服务发现 1. 服务注册: 在Spring.factories有一段: # Discovery Client Configuration org.spr ...
- SpringCloud学习后获取的地址
关于SpringCloud + Docker 学习地址: (1) https://yq.aliyun.com/articles/57265 (2) https://yq.aliyun.com/team ...
- SpringCloud网关ZUUL集成consul
最近一直在搞基于springcloud的微服务开发,为了不限定微服务开发语言,服务发现决定采用consul不多说上代码 pom文件 <project xmlns="http://mav ...
- springcloud(一):大话Spring Cloud
研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统 ...
- springcloud(二):注册中心Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...
- springcloud(四):熔断器Hystrix
说起springcloud熔断让我想起了去年股市中的熔断,多次痛的领悟,随意实施的熔断对整个系统的影响是灾难性的,好了接下来我们还是说正事. 熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基 ...
- springcloud(六):配置中心(一)
随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多.某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错.配置 ...
随机推荐
- 报错的大怨种来了--java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
频繁爆出这样的错误:java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual t ...
- Jetson Xavier NX 试玩 (二)
Jetson Xavier NX 试玩 (二) Hello AI World Inference 人工智能推理模型 0 前言 想玩一玩 jetson 的人工智能功能,官方的 instructional ...
- Tarjan强连通分量(scc)
概念解释 节点强连通:\(v_i\)与\(v_j\)(\(v_i ≠ v_j\))强连通是指从\(vi\)到\(vj\)和从\(vj\)到\(vi\)都存在路径,即两节点互相可达 强连通图:在有向图\ ...
- Windows和Linux时间相差8个小时
安装linux系统比如deepin.ubuntu之后和Windows两个系统时间相差八个小时的解决方案: 在linux系统下依次输入下方命令: sudo apt install ntpdate sud ...
- requests不带参数的get请求和带get参数请求
requests库常用的方法 requests.Request(url) 构造一个请求,支持以下各种方式 requests.get() 发送get请求 requests.post() 发送post请求 ...
- 【ACM算法竞赛日常训练】DAY2题解与分析【比赛】【数学考试】【简单瞎搞题】
DAY2共三题: 比赛(概率) 数学考试(前缀和与思维) 简单瞎搞题(dp) 视频讲解:https://www.bilibili.com/video/BV1hP411o7RD/ 作者:Eriktse ...
- k8s 1.24 1.25 集群使用docker作为容器
Kubernetes 1.24 1.25 集群使用docker作为容器 背景 在新版本Kubernetes环境(1.24以及以上版本)下官方不在支持docker作为容器运行时了,若要继续使用docke ...
- Flask+Gunicorn+Nginx配置多个app
请自行安装好nginx.gunicorn和flask的运行环境,这里不再赘述 Nginx配置 修改nginx的配置 vi /etc/nginx/sites-available/default //de ...
- mumpy常用函数
numpy.array(list(1,2,3,4)) #将一个list类型/tupe类型数据转换为一个array数组对象 #默认所有的数据类型都是相同,若传进来的参数类型不同,则遵循以下优先级: st ...
- 多线程结合自定义logback日志实现简单的工单日志输出
前言 这周学习了logback自定义日志格式.多线程基础.以及常见的定时器,本篇博客主要是结合以上知识实现一个简单的定时全部工单输出任务,再通过自定义的日志打印输出到控制台. 1.logback自定义 ...