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.什么是微服务?
#5.24回答
微服务 (Microservices) 就是一些协同工作小而自治的服务。每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务可以使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。
可以解决单体系统的难题:
开发端:部分业务的修改要修改整个项目, 开发维护成本高,容易出错,不利于团队协作;
运维线:部分业务的上线影响整体服务质量,运维无法精确评估系统资源的需求量;
带来的问题:
--1,运维需要维护数量庞大的进程;
--2,接口的业务流程拉长,一致性比较更难以控制;
--3,分布式的复杂性:网络延迟,异步消息,分布式事务等;
基于敏捷项目管理和自动化部署可以应对这些问题。
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那样使整个注册服务瘫痪。
技术栈:
传统架构图:
哭了。。好多啊