面试知识储备-SpringCloud

1.为什么要出现springcloud?

单体架构

定义:传统的项目所有功能打成一个jar包就能直接部署,所有功能糅合到一起,非常简单

缺点:大公司项目某些功能的并发量大,会占用大量的资源,影响其他功能的正常运行(比如非常重要的交易功能)

微服务架构

定义:将各个功能拆分为独立项目,单独编译,拥有独立数据库

特点:高内聚低耦合

2.springcloud

提供了各种微服务组件,如果要使用的话只能用到2021的版本,否则jdk8不支持后续版本

如何拆分服务

1.独立工程 - 分开设计project 多个文件夹

2.Maven聚合 只有一个project 每个服务设为一个module

3.注册中心Nacos

服务治理的三个角色:服务提供者,服务调用者,注册中心

所有的服务都应该在注册中心注册,注册中心提供调用者多个ip地址以达到负载均衡,注册服务应每隔一段时间发送心跳续约,确保服务没有宕机

nacos是springcloudalibaba的注册服务中心,首先它是一个服务,我们需要去启动它,然后引入依赖,配置它的ip地址

服务注册

然后启动我们的单体服务,服务会自动在注册中心注册,启动多个实例时复制启动项就可以(只需要一份代码),新的启动项要放在新的端口,防止冲突

服务发现

服务发现springcloud定义了一套标准,我们通过注入discoveryclient和服务名称来调用实例列表,然后通过负载均衡算法来挑选实例,在获取实例的uri

4.简化版微服务openfeign

以上部分是nacos的原理部分,为了简化代码的书写我们引入一个新的组件openfeign和负载均衡器,然后启动openfeign

可以通过注解的方式简化以上三步

在openfeign中引入连接池可提高性能

相关推荐
进击的野人18 分钟前
CSS选择器与层叠机制
css·面试
T___T3 小时前
全方位解释 JavaScript 执行机制(从底层到实战)
前端·面试
9号达人3 小时前
普通公司对账系统的现实困境与解决方案
java·后端·面试
程序员杰哥3 小时前
软件测试之压力测试详解
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试
勤劳打代码3 小时前
条分缕析 —— 通过 Demo 深入浅出 Provider 原理
flutter·面试·dart
努力学算法的蒟蒻4 小时前
day10(11.7)——leetcode面试经典150
面试
进击的野人4 小时前
JavaScript 中的数组映射方法与面向对象特性深度解析
javascript·面试
南山安4 小时前
以腾讯面试题深度剖析JavaScript:从数组map方法到面向对象本质
javascript·面试
橘颂TA6 小时前
【剑斩OFFER】算法的暴力美学——二分查找
算法·leetcode·面试·职场和发展·c/c++
吃着火锅x唱着歌15 小时前
LeetCode 1128.等价多米诺骨牌对的数量
算法·leetcode·职场和发展