Springboot&SpringCloud初体验(一)

  1. Maven和SpringBoot构建项目的差异

配置:

maven配置文件比较繁琐(springmvc-config.xml, mybatis-config.xml, web.xml, applicationContext*.xml)配置项很多很难记住,xml对这些配置没有语法检查

 

Springboot去掉了xml配置,利用注解+约定大于两个方式结合实现

使用application.yml 或者是application.properties

 

启动:web程序需要外部tomcat+maven帮助,sprringboot直接用启动类的main方法就可以了

 

 

  1. 分析SpringBoot构建的pom.xml有什么特色?

springBoot 自己来管理公用的父项目 spring-boot-starter-parent

 

 

 

  1. SpringCloud全家桶都包括些什么?

Eureka,Ribbon,Feign,zuul,hystrix,sidecar等等

 

  1. 什么是注册中心?为什么需要注册中心?

注册中心(RA,registration authority)是网络中的一个机构,它的职责是核实用户数字认证请求然后告诉认证中心(CA)发放认证。

注册中心是公钥基础设施(PKI)的一部分,是一个网络化的系统,使公司和用户可以安全和安心地交换信息和金钱。数字认证包含一个用来加密解密消息和数字签名的公钥

  1. 分布式架构设计的CAP定理是什么?

理论首先把分布式系统中的三个特性进行了如下归纳:

  1. 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
  2. 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  3. 分区容错性(P):以实际效果而言, 分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在 C 和 A 之间做出选择。

 

  1. ZooKeeper和Eureka比较

产品

说明

ZooKeeper

Zookeeper是基于CP来设计的,即任何时刻对Zookeeper的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是它不能保证每次服务请求的可用性。从实际情况来分析,在使用Zookeeper获取服务列表时,如果zookeeper正在选主,或者Zookeeper集群中半数以上机器不可用,那么将无法获得数据。所以说,Zookeeper不能保证服务可用性。

Eureka

而Spring Cloud Netflix在设计Eureka时遵守的就是AP原则。Eureka Server也可以运行多个实例来构建集群,解决单点问题,但不同于ZooKeeper的选举leader的过程,Eureka Server采用的是Peer to Peer对等通信。这是一种去中心化的架构,无master/slave区分,每一个Peer都是对等的。在这种架构中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的serviceUrl指向其他节点。每个节点都可被视为其他节点的副本

总结:

ZooKeeper基于CP,不保证高可用,如果zookeeper正在选主,或者Zookeeper集群中半数以上机器不可用,那么将无法获得数据。Eureka基于AP,能保证高可用,即使所有机器都挂了,也能拿到本地缓存的数据。作为注册中心,其实配置是不经常变动的,只有发版(发布新的版本)和机器出故障时会变。对于不经常变动的配置来说,CP是不合适的,而AP在遇到问题时可以用牺牲一致性来保证可用性,既返回旧数据,缓存数据。

 

  1. Ribbon负载均衡和Nginx负载均衡有什么区别?

和 nginx 不同,它是客户端侧负载均衡。

 

  1. Feign是干什么的

Feigh 是一个明式 web 服务客户端。它能让开发 web 服务变得容易。使用 Feign 需要创建一个接口并注解它。它拥有包括 Feign 注解和 JAX-RS 注解的可插拔支持。它还支持可插拔的编码器和解码器。Spring Cloud 拥有 Spring MVC 支持,并使用 Spring Web 中默认同样的 HttpMessageConverters。在使用 Feign 时,Spring Cloud 集成了 Ribbon 和

Eureka 来提供负载均衡的HTTP 客户端。

总结:Feign 简化 HttpClient 开发,封装了 JAX-RS 和 springmvc 的注解,学习成本很低。

  1. Springboot核心类

AutoConfigurationImportSelector 用来加载所有整合的配置文件也是入口类

入口类
MybatisAutoConfiguration 这个类主要是为了和Springboot做整合

 

如果想写一个类和Springboot整合的话 可写一个AutoConfiguration的类

 

也要再写一个properties类来放配置

 

 

  1. Springcloud小流程

 

先创建服务提供者若干—>消费者通过服务注册中心Eureka获取提供者—>eureka提供服务—>消费者调用提供者通过ribbon做到负载均衡--->feign来做动态代理

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值