07 Spring Cloud 微服务
1、什么是 Spring Cloud?(必问)
是一组微服务技术的框架集合
2、使用 Spring Cloud 有什么优势?
SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。
使用 Spring Boot 开发分布式微服务时,我们面临以下问题
1、与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
2、服务注册中心管理-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连 接到该目录中的服务。
3、冗余-分布式系统中的冗余问题。
4、负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
5、性能-问题 由于各种运营开销导致的性能问题。
6、部署简单、直接普通jar包就可以运行
SpringCloud的优缺点
优点:
1.耦合度比较低。不会影响其他模块的开发。
2.减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发。
3.配置比较简单,基本用注解就能实现,不用使用过多的配置文件。
4.微服务跨平台的,可以用任何一种语言开发。
5.每个微服务可以有自己的独立的数据库也有用公共的数据库。
6.直接写后端的代码,不用关注前端怎么开发,直接写自己的后端代码即可,然后暴露接口,通过组件进行服务通信。
缺点:
1.部署比较麻烦,给运维工程师带来一定的麻烦。
2.针对数据的管理比麻烦,因为微服务可以每个微服务使用一个数据库。
3.系统集成测试比较麻烦
4.性能的监控比较麻烦。
3、什么是集群和微服务
集群:多个人同一件事、把一个项目复制多分、分别部署
微服务(分布式):一件事分解成多人协作完成、把一个项目分解成多个项目完成
3、Eureka、Nacos、Zookeeper是什么?
服务注册中心
4、Ribbon和OpenFeign的作用?什么是负载均衡?
实现服务之间调用的负载均衡
Ribbon:一个服务集群多个、Ribbon来决定选择调用哪一个(负载均衡)
Feign是Ribbon的升级组件、也是用来实现负载均衡的
让多个服务器均衡的处理请求、而不是某一个服务器处理多个请求、而其他服务器处理较少服务器
轮询实现负载均衡
5、Hystrix、Sentienl断路器(熔断、降级)
有3个服务、当Feign在三个中选一个时、假如选得2号、但2号这时候恰好宕(dang)机了、此时就属于熔断
降级就是熔断后做的处理
6、SpringBoot和SpringCloud的区别?
SpringBoot专注于快速方便的开发单个个体微服务。
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并 管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞 选、分布式会话等等集成服务SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关 系.
SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架
7、微服务的优点缺点?说下开发项目中遇到的坑?
优点:
1.每个服务直接足够内聚,代码容易理解
2.开发效率高,一个服务只做一件事,适合小团队开发
3.松耦合,有功能意义的服务。
4.可以用不同语言开发,面向接口编程。
5.易于第三方集成
6.微服务只是业务逻辑的代码,不会和HTML,CSS或其他界面结合.
7.可以灵活搭配,连接公共库/连接独立库
缺点:
1.分布式系统的责任性
2.多服务运维难度加大。
3.系统部署依赖,服务间通信成本,数据一致性,系统集成测试,性能监控。
8、什么是 zuul|Gateway路由网关(必问)
主要作微服务请求,权限控制、浏览器请求服务器的负载均衡、路由转发、监控、安全控制黑名单和白名单等、限流
zuul是第一代网关,只有负载均衡、路由转发、监控
Gateway是第二代网关
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w3gNLhgX-1676384462649)(C:\Users\Chengshiyong\AppData\Roaming\Typora\typora-user-images\image-20230206193111174.png)]
Gateway是第二代网关
[外链图片转存中…(img-w3gNLhgX-1676384462649)]