Java全栈面试题(五)--微服务架构

对Spring Cloud的理解

        Spring Cloud是一个开源的分布式系统框架,它基于Spring Boot构建,提供了一组分布式系统开发工具,包括服务发现、配置管理、负载均衡、断路器、消息总线等,帮助开发者快速构建分布式系统。

        使用Spring Cloud可以快速构建基于微服务的分布式系统,帮助开发者提高系统的可维护性、可扩展性和可靠性。同时,Spring Cloud也为企业级应用开发提供了一种新的方式,使得开发者可以更加专注于业务逻辑的实现,而无需关注分布式系统开发中的技术细节。

如何使用Spring Cloud拆分应用

        使用Spring Cloud拆分应用可以将一个大型的单体应用拆分成多个小型的微服务,每个微服务负责一个特定的业务功能,可以独立部署、运行和扩展,从而实现更加灵活、可维护和扩展的应用架构。

        使用Spring Cloud拆分应用的步骤:

        识别业务边界:将业务划分成多个小的领域模型,每个领域模型可以对应一个微服务

        设计API网关:通过API网关来聚合微服务,实现跨域请求、负载均衡、路由和安全控制等功能。

        选择通信协议:选择合适的通信协议来实现微服务之间的通信,比如HTTP、REST、RPC等

        配置注册中心:使用服务注册与发现机制来管理微服务的注册和发现,可以使用Spring Cloud Eureka、Consul、Zookeeper等注册中心。

        配置服务发现:通过注册中心可以实现服务发现,即每个微服务可以查询注册中心获取其他微服务的信息。

        配置负载均衡:通过负载均衡算法来实现请求的负载分发,可以使用Ribbon、Nginx、HAProxy等负载均衡工具。

        配置断路器:使用断路器模式来处理微服务之间的故障,可以使用Hystrix等断路器框架。

        配置配置中心:使用配置中心来管理微服务的配置信息,可以使用Spring Cloud Config等配置中心。

        总的来说,使用Spring Cloud拆分应用可以实现高可用、高可扩展、高可维护的微服务架构

Spring Cloud Alibaba中有哪些组件

        Spring Cloud Alibaba是Spring Cloud的一个扩展,基于阿里巴巴的一些开源项目,包括Nacos、Sentinel、RocketMQ、Dubbo等,提供了一些分布式系统开发的解方案。

        Spring Cloud Alibaba包括以下核心组件:

        Nacos:服务注册与发现、配置管理、流量管理平台,支持DNS和HTTP协议。

        Sentinel:流量控制、熔断降级、系统负载保护,支持多种规则模式。

        RocketMQ:分布式消息中间件,提供消息发布订阅、点对点消息、顺序消息等多种消息模式。

        Dubbo:分布式服务框架,支持多种协议、多种负载均衡、多种集群模式。

        Spring Cloud Alibaba还提供了一些其他的辅助组件,例如开发者工具、安全框架、分布式事务管理等。使用Spring Cloud Alibaba,可以快速搭建一套分布式系统,并且支持与传统的Spring Cloud技术栈无缝集成,具有很好的扩展性和兼容性。

        总的来说,Spring Cloud Alibaba为开发者提供了一套完整的、可靠的分布式系统解决方案,可以提高系统的可维护性、可扩展性和可靠性,帮助开发者快速构建高性能的分布式系统。

Spring Cloud Alibaba 如何限流?熔断?降级?

        在Spring Cloud Alibaba中,限流、熔断和降级都是通过Sentinel实现的。

        限流:Sentinel提供了流量控制的功能,可以通过限制每秒钟处理请求的数量或者每秒钟运行通过的QPS数量,来达到限流的目的。限流可以有效的保护系统的稳定性,防止系统被过多的请求压垮。

        熔断:熔断一种在服务调用链路中解决雪崩效应的技术。在服务调用链路中,如果某个服务出现了问题,可能会导致后续的服务也出现问题,进而导致整个系统不可用。熔断机制会在服务出现问题时,及时断开该服务的调用,从而避免出现雪崩效应。Sentinel提供了熔断降级的功能,可以设置一个阈值,当系统的请求超过这个阈值时,Sentinel会触发熔断降级机制,避免系统的崩溃

        降级:降级是一种在服务不可用时,为了保证系统的可用性而采取的一种措施。降级机制会在服务出现问题时,及时切换到备用方案或者返回预设的默认值,从而保证系统的稳定性。Sentinel提供了降级的功能,可以设置一个阈值,当系统的请求超过这个阈值时,Sentinel会触发降级机制,避免系统的崩溃。

        总之,Sentinel是一个功能强大的开源框架,可以帮助开发者在分布式系统中实现限流、熔断和降级等功能,保证系统的稳定性和可用性。

限流是怎么做到的

        限流是一种常见的流量控制方法,可以

 

 

对分布式的理解

        分布式是指将一个大型的问题或任务拆分成多个小问题或子任务,通过将这些小问题分别交由不同的计算机节点(通常是互相连接的)处理,并将其结果或数据汇总、协作,最终完成整个任务的过程。简而言之,就是把一个大型系统或任务,分解成小规模的部分,让它们在不同的计算机节点上并行处理,响应速度更快,容错性和可扩展性更强。

要理解分布式系统,需要明白两个方面:

        分布式系统一定是由多个节点组成的系统。其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互相连接和通信的。

        这些连通的节点上部署了我们的节点,并且相互之间可以进行数据传输和通信,各个节点协同工作完成各自分配到的任务。这使得分布式系统可以并行地处理任务,从而提高系统的吞吐量和性能。同时,分布式系统还可以具有高可用性、容错性和可扩展性等优点。

什么是分布式锁

        分布式锁是一种在分布式系统中用于控制对共享资源的访问的机制。在多个节点并发操作同一资源的情况下,需要确保在任何时刻只能有一个节点访问该资源,从而避免数据的混乱、冲突和错误。分布式锁通常涉及到多个节点之间的通讯和协调,通过加锁和解锁操作来保证资源的互斥访问。

Dubbo和HTTP Rest的区别

        Dubbo和HTTP Rest都是常见的分布式系统中的RPC框架,两者的主要区别:

        通讯协议不同:Dubbo使用TCP协议进行通信,而HTTP Rest则使用HTTP协议。

        序列化方式不同:Dubbo使用Hession2、Java原生序列化、JSON等序列化方式,而HTTP Rest一般使用JSON作为数据传输的格式。

        传输方式不同:Dubbo采用点对点通信方式,即服务提供方与服务消费方之间建立连接,而HTTP Rest是一种无状态的通行方式,即每次请求都是相互独立的。

        服务治理能力不同:Dubbo提供了注册中心、负载均衡、服务降级、服务熔断等服务治理能力,而HTTP Rest则缺乏这些服务治理能力。

        性能差异:由于Dubbo采用二进制协议和自定义序列化方式,因此其性能一般比HTTP Rest更高效。

        综上所述,Dubbo更适合高性能、高可靠性的分布式系统,而HTTP Rest更适合简单的、对性能要求不高的系统。

跨域问题产生的原因和解决方法

        跨域问题的产生是因为浏览器的同源策略限制了从一个源加载的文档或脚本如何与另一个源的资源进行交互。同源策略是一种安全机制,它可以防止恶意网站窃取用户数据或者执行恶意操作

        同源指的是协议、域名、端口号完全一致,只要有任何一个不同,都会被认为是跨域。

        解决跨域问题的几种方式:

        JSONP:利用script标签的src属性不受同源策略限制的特点,通过在服务器端动态生成JavaScript脚本,实现跨域传输数据。

        CORS:通过在服务端设置响应头部,允许跨域访问,是一种比较安全的跨域解决方案。

        代理:将客户端请求发送到同源服务器,由同源服务器再讲请求发送到跨域服务器,然后将跨域服务器的响应发送给客户端,实现跨域访问。

        Websocket:通过建立一条全双通信的通道,可以在客户端和服务器之间进行实时数据传输,绕过同源策略的限制。

        Nginx反向代理:通过Nginx配置反向代理服务器,将客户端的请求转发到目标服务器,然后将响应发送回客户端,从而实现跨域访问。

        每种解决方案都有其优缺点,根据实际情况选择最合适的方式。同时,在实际开发中需要注意安全问题,避免产生潜在的安全隐患。

 

心跳机制

        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值