微服务学习总结5.10

什么是微服务:

    分布式结构的一种,可涵盖多种语言不同版本的不同模块,提高了系统的可维护性,可伸缩性,可测试性

为什么要用微服务:

    能够把不同模块分离开,提高效率减少压力。而且,微服务的使用可以方便多模块集成,可以实现一些跨版本模块的共同使用。比如如果我使用一个jdk8的项目如果想要使用当下的springai框架,我就可以通过新增一个模块,通过openFeign实现远程调用实现功能。

通过黑马微服务课程我学到了什么:

mybatisplus:

    系统的学习了mybatisplus,其主要使用lambda表达式。mybatisplus也拥有快速代码生成器,可以快速构建entity,mapper,service,controller四层。我发现mybatisplus很适用于微服务这个结构:微服务由于模块见相互补直接关联,所以正常情况下我们是不可以直接进行多表联查的。而mybatisplus的劣势有两点1.不能简单实现多表联查(可以依托于mybatis的xml实现,但是违背了mybatisplus的初衷)2.混淆了service与mapper的关系。在使用微服务的时候,我们减小了第一点,放大了第二点

docker:

    了解掌握了如何使用docker:docker是一个容器,可以承载不同的组件,通过他我们可以实现快速部署。docker可以实现组件的稳定传递,也拥有自己的镜像网站。docker的风格是极简,其中的镜像只会加载与自身相关的内容,因此所占内存是很小的

微服务:

nacos:

    注册中心原理,通过引入依赖实现了记录与监控服务器服务状态。实现了服务治理

    配置管理:微服务内配置冗余过多,我们想简化配置,引入了配置管理的概念:通过springcloud的上下文加载bootstrap.yml拉取nacos中的配置,再加载application.yml,完成springboot初始化。同时,使用配置管理,我们还能完成配置信息的热部署,通过配置一些常见易变更的参数完成不重启服务器自动读取配置完成变更。同时我们还可以通过此功能实现动态路由:将路由信息保存至nacos,实时推送数据信息

openFeign:

    是一个声明式http客户端,基于springMVC,帮我们更简单的实现远程调用:我们通过抽取一个公共api接口,配置相关信息进而实现微服务与微服务之间的远程调用

gateway:

    微服务模块较多之后,我们会发现难以处理,因此我们引入了网关的概念:统一管理各个业务,实现前端-》网关-》后端业务的统一调用。我们首先引入网关模块,通过网关设置的断言与过滤实现token的传递和使用。网关内我们可以轻易的改写请求头,进而塞入token等内容。

    这时就衍生了新的问题:微服务与微服务之间如何进行token的传递呢?我们知道微服务与微服务之间由openFeign进行调用,不经由网关。因此我们需要在openFeign中同时加入额外拦截器获取请求头内重要信息

sentinel:

    微服务保护:sentinel提供了限流,线程隔离,熔断服务等功能提供了一定的微服务系统保护功能,一定程度上防止了微服务雪崩问题

seata:

    我们知道一些方法必须具有事务性,但是在微服务之间的调用中,openFeign的使用显然是不具有这种特性的。因此我们引入seata,seata可以在更高一层面上管理协调事务实现一致性问题

rabbitMQ:

    上面我们用openFeign发出了一些同步请求。基于同步请求问题,我们衍生出了新的问题:如何通过异步请求解决部分非主线问题,以此优化程序。我们引入了MQ(消息队列),通过mq优化了请求速度

elasticsearch:

    他利用倒排索引查询,极大缩短了模糊查询的时间,同时还可以利用分词器,具备一些增强的模糊查询特性。同时他还能提供一些特殊的方式:高亮显示(比如百度),聚合,排序等。我们可以通过DSL的设置,完成一些复杂的业务查询,并且使用非索引时速度极优于MySQL等传统关系型数据库。并且他也有自己的解决深度分页的方案,可以通过restful风格进行CRUD

posted @   天启A  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示