Spring Cloud

平安银行Java社招五面面经,目前最全面的,38个面试题以及答案

巧了我就是萌 提交于 2020-08-15 10:30:05
1. redis各种应⽤场景 2. redis持久化机制 3.有没了解Docker,Docker和虚拟机有什么区别? 4.说说rabbitmq的结构。 四种交换机: 直连交换机,Direct exchange:带路由功能的交换机,根据routing_key(消息发送的时候需要指定)直接绑定到队列, ⼀个交换机也可以通过过个routing_key绑定多个队列。 扇形交换机,Fanout exchange:⼴播消息。 主题交换机,Topic exchange:发送到主题交换机上的消息需要携带指定规则的routing_key,主题交换机会根据这个规 则将数据发送到对应的(多个)队列上。 ⾸部交换机,Headers exchange:⾸部交换机是忽略routing_key的⼀种路由⽅式。路由器和交换机路由的规则是通过 Headers信息来交换的,这个有点像HTTP的Headers。 将⼀个交换机声明成⾸部交换机,绑定⼀个队列的时候,定义⼀ 个Hash的数据结构,消息发送的时候,会携带⼀组hash数据结构的信息,当Hash的内容匹配上的时候,消息就会被写⼊队 列。 5.项⽬中哪⾥⽤到了kafka,kafka特性? 6. 介绍springcloud核⼼组件及其作⽤,以及springcloud⼯作流程。 7.介绍springcloud⼼跳机制,以及消费端如何发现服务端(Ribbon)? 8

consul、eureka、nacos对比

好久不见. 提交于 2020-08-15 09:22:16
consul、eureka、nacos对比 配置中心 eureka 不支持 consul 支持 但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新 nacos 支持 用起来简单,符合springBoot的命名风格,支持动态刷新 注册中心 eureka 依赖:依赖ZooKeeper 应用内/外:直接集成到应用中,依赖于应用自身完成服务的注册与发现, ACP原则:遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快,但牺牲了一定的一致性。 版本迭代:目前已经不进行升级 集成支持:只支持SpringCloud集成 访问协议:HTTP 雪崩保护:支持雪崩保护 界面:英文界面,不符合国人习惯 上手:容易 consul 依赖:不依赖其他组件 应用内/外:属于外部应用,侵入性小 ACP原则:遵循CP原则(一致性+分离容忍) 服务注册稍慢,由于其一致性导致了在Leader挂掉时重新选举期间真个consul不可用。 版本迭代:目前仍然进行版本迭代 集成支持:支持SpringCloud K8S集成 访问协议:HTTP/DNS 雪崩保护:不支持雪崩保护 界面:英文界面,不符合国人习惯 上手:复杂一点 nacos 依赖:不依赖其他组件 应用内/外:属于外部应用,侵入性小 ACP原则:通知遵循CP原则(一致性+分离容忍) 和AP原则(可用性+分离容忍) 版本迭代

2020年Dubbo30道高频面试题!还在为面试烦恼赶快来看看!

回眸只為那壹抹淺笑 提交于 2020-08-15 07:55:25
前言 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)。 很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知识,对于理解一项技术还是有帮助的。 关于Dubbo的知识总结了个思维导图 Dubbo 面试题 1、为什么要用 Dubbo? 2、Dubbo 的整体架构设计有哪些分层? 3、默认使用的是什么通信框架,还有别的选择吗? 4、服务调用是阻塞的吗? 5、一般使用什么注册中心?还有别的选择吗? 6、默认使用什么序列化框架,你知道的还有哪些? 7、服务提供者能实现失效踢出是什么原理? 8、服务上线怎么不影响旧版本? 9、如何解决服务调用链过长的问题? 10、说说核心的配置有哪些? 11、Dubbo 推荐用什么协议? 12、同一个服务多个注册的情况下可以直连某一个服务吗? 13、画一画服务注册与发现的流程图? 14、Dubbo

JNPF.java前后端分离框架,SpringBoot+SpringCloud开发微服务平台

你。 提交于 2020-08-15 07:51:56
JNPF.java 版本采用全新的 前后端分离 架构模式。前后端分离已成为互联网项目开发的业界标准开发方式,通过 nginx+tomcat 等方式有效的进行解耦合,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务打下坚实的基础。 技术选型: SpringBoot SpringCloud Mybatis-Plus Redis jquery vue Bootstrap ElementUI Uniapp h5 微服务开发: JNPF.java采用 SpringBoot框架 和 SpringCloud框架 ,springboot框架的特点在于简化配置,快速开发,再在搭配上代码生成器,让不懂代码的人也能做到快速开发软件。Springboot也有良好的扩展性,可以将springboot项目拆分为springcloud微服务,springcloud是一套目前完整功能的微服务框架。 微服务已经成为未来开发的大趋势之一了,越来越多的企业开始转型微服务架构,使用微服务架构的项目更加易于开发和维护,并且突破了技术栈的限制,在JNPF.java项目中,已经不限制开发语言了,你可以使用c#语言来开发java项目。 功能模块: 代码生成器 数据连接 功能管理 系统配置 菜单导航 组织管理 岗位管理 用户管理 权限管理 工作流引擎 流程委托 流程设计 报表设计 知识管理等多种原生组件

最强Dubbo面试题,附带超级详细答案

送分小仙女□ 提交于 2020-08-15 07:29:05
最强面试题推荐: 2020Java面试题及答案,命中率高达90% 1.Dubbo是什么? Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。 RPC 指的是远程调用协议,也就是说两个服务器交互数据。 2.Dubbo的由来? 互联网的快速发展,Web应用程序的规模不断扩大,一般会经历如下四个发展阶段。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起即可。 垂直应用架构 当访问量逐渐增大,单一应用按照有业务线拆成多个应用,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。 流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。 3.Dubbo的主要应用场景? 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制

REST API URI 设计 7 准则

泪湿孤枕 提交于 2020-08-15 03:06:48
在了解 REST API URI 设计的规则之前,让我们快速过一下我们将要讨论的一些术语。 URI REST API 使用统一资源标识符(URI)来寻址资源。在今天的网站上,URI 设计范围从可以清楚地传达API的资源模型,如: http://api.example.com/louvre/leonardo-da-vinci/mona-lisa 到那些难以让人理解的,比如: http://api.example.com/68dd0-a9d3-11e0-9f1c-0800200c9a66 Tim Berners-Lee 在他的“Web架构公理”列表中列出了关于 URI 的不透明度的注释: 唯一可以使用标识符的是对对象的引用。当你没有取消引用时,你不应该查看 URI 字符串的内容以获取其他信息。- Tim Berners-Lee_ 客户端必须遵循 Web 的链接范例,将 URI 视为不透明标识符。 REST API 设计人员应该创建 URI,将 REST API 的资源模型传达给潜在的客户端开发人员。在这篇文章中,我将尝试为 REST API URsI 引入一套设计规则。 在深入了解规则之前,先看一下在 RFC 3986 中定义的通用 URI 语法,如下所示: URI = scheme "😕/" authority "/" path ["?" query] ["#" fragment]

微服务技术栈:流量整形算法,服务熔断与降级

怎甘沉沦 提交于 2020-08-15 01:38:01
本文源码: GitHub·点这里 || GitEE·点这里 一、流量控制 1、基本概念 流量控制的核心作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度流动发送,达到保护系统相对稳定的目的。通常是将请求放入缓冲区或队列内,然后基于特定策略处理请求,匀速或者批量处理,该过程也称流量整形。 流量控制的核心算法有以下两种:漏桶算法和令牌桶算法。 2、漏桶算法 基础描述 漏桶算法是流量整形或速率限制时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。 漏桶算法基本思路:请求(水流)先进入到容器(漏桶)里,漏桶以一定的速度出水,这里就是指流量流出的策略,当流量流入速度过大容器无法承接就会直接溢出,通过该过程限制数据的传输速率。 核心要素 通过上述流程,不难发现漏桶算法涉及下面几个要素: 容器容量 容器的大小直接决定能承接流量的多少,容器一但接近饱和,要么溢出,要么加快流速; 流出速度 流量流出的速度取决于服务的请求处理能力,接口支撑的并发越高,流速就可以越大; 时间控制 基于时间记录,判断流量流出速度,控制匀速模式, 注意:需要一个基本的判定策略,漏桶算法在系统能承接当前并发流量时,不需要启用。 3、令牌桶算法 基础描述

多云架构下,JAVA微服务技术选型实例解析

流过昼夜 提交于 2020-08-14 22:37:56
【摘要】 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点。 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施。 目前比较成熟的 JAVA 微服务生态包括 servicecomb(华为), spring-cloud (Pivotal), dubbo(阿里), tsf(腾讯)等。gRPC、Thrift 等也用于内部服务之间的通信,但是微服务基础设施比较欠缺。 核心的微服务基础设施包括:注册中心、配置中心、应用网关。此外,分布式事物管理、计划任务、调用链跟踪系统等也是微服务基础设施的组成部分。完整的微服务基础实施还包括开发使能工具,包括接口管理工具、灰度发布管理、代码生成等,这部分主要由云厂商提供,比较少开源方案。 微服务生态的核心是 SDK,而 SDK 的核心是 RPC 框架,这个是不同微服务生态的本质区别。在基础设施方面,不同的微服务生态是可以相互选择的,比如 spring-cloud 生态可以采用 spring-cloud-huawei 接入servicecomb 提供的注册中心 servicecomb-service-center、配置中心 servicecomb-kie,也可以通过 spring-cloud-alibaba 接入阿里的配置中心;servicecomb 也可以通过引入扩展

【000期】Java最全面试题库思维导图

此生再无相见时 提交于 2020-08-14 20:34:19
         开篇介绍   大家好,我是 Java最全面试题库 的小编, 提裤姐 ,今天我想在这里尝试着坚持做一件事,就是在一百个工作日里不间断地更新至少一百篇Java方面的面试题,希望通过不断输出倒逼自己输入。简称 百日 百更Java面试题 。如果我能做到百日百更,希望你也可以跟着 百日百刷 ,一百天一起养成一个好习惯——熬夜秃头。    Q:    为什么要整理面试题?   但是现在JDK都14了,很多人可能连JDK8 新特性都没玩过,那面试的时候如何高效地和面试官瞎扯蛋呢?那自然是需要提裤(题库)啦!   考虑到这一点,提裤姐决定,会按以下 六个梯度深入浅出地 进行面试题的更新( 如有遗漏,欢迎补充 ):   第一梯度:计算机组成原理、操作系统原理、网络通信原理、数据结构和算法;   第二梯度:Java SE基础、JavaWeb相关、Java 工具(Maven/git等)、JDK 工具、Java 各版本新特性、JVM 相关如内存模型和、GC 算法、JVM 性能调优、设计模式;   第三梯度:Spring、Spring MVC、Springboot、Spring Cloud、Mybatis、Dubbo 等主流框架的运用和原理;   第四梯度:MySQL、Redis、RabbitMQ/RocketMQ/Kafka等数据库或者中间件的运用和原理;   第五梯度:CAP 理论

Spring WebFlux (5): WebClient使用

一个人想着一个人 提交于 2020-08-14 15:10:05
可以使用WebFlux的WebClient类很方便的对网络请求进行代理处理操作,我想Spring Cloud Gateway中主要用的就是WebClient进行操作,这里简单介绍一下WebClient的用法,想要深度学习的话,看一下Spring Cloud Gateway源码准没错 一些用法 流数据 首先创建一个server端,用于产生一些网络服务: Employee为员工类 EmployeeFaker为通过javafaker包生成的一些数据 EmployeeController生成一些服务,其中getEmployee为每一秒生成一个Employee对象,因为是流数据使用 APPLICATION_STREAM_JSON_VALUE 进行传输 @Data @Builder @NoArgsConstructor @AllArgsConstructor class Employee { Long id ; String name ; Integer age ; Integer salary ; String phoneNumber ; String address ; } class EmployeeFaker extends Employee { private final Faker f = new Faker ( Locale . CHINA ) ; public