1、微服务治理
1.1服务注册与发现Eureka和Nacos
a、nacos和eureka,二者都支持服务注册与发现,但nacos还包括了动态配置管理、服务健康监测、动态路由等功能,是更全面的服务管理平台
b、eureka需要独立部署为服务并运行,需要自行搭建服务集群来实现高可用。nacos提供了单机模式和集群模式的部署方式。
综上所述,eureka适用于简单的场景,nacos更适合复杂的微服务架构中。
1.2远程调用Feign
Feign是一种声明式、模板化的HTTP客户端,它可以使HTTP客户端调用变得更加简单和优雅。可以与Eureka、Ribbon等组件集成,用于实现微服务架构中的服务之间的通信
总的来说,Feign可以帮助开发者快速、简单地实现服务之间的通信,减少了繁琐的HTTP请求代码编写
ps:Ribbon在微服务架构中扮演着非常重要的角色,可以帮助应用程序实现对服务实例的负载均衡和故障转移,提高了系统的稳定性和可用性。
1.3统一网关Gateway
网关有以下五个作用:
a,身份认证和权限校验 b,服务路由、负载均衡 c,请求限流
技术实现:gateway,zuul
Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。
ps:阻塞式编程是传统的编程模式,程序进行IO操作时会阻塞当前线程的执行,期间新城无法执行其他任务
响应式编程是更现代和高效的编程范式,基于异步和事件驱动,允许程序中的不同部分相互通信和协作,无需等待其他操作完成
2、Docker
2.1docker原理
Docker的工作原理可以简单描述为:
1. Docker利用容器技术,把应用程序及其依赖项打包成独立的容器,在隔离的环境中运行。
2. Docker镜像是容器的模板,包含应用程序所需的所有文件和依赖项。
3. Docker Daemon是后台服务,管理容器、镜像等,Docker客户端与Daemon通信进行操作。
4. Docker Registry是存储镜像的仓库,Docker Hub是公共的镜像仓库。
5. Docker网络实现容器之间的通信和与外部网络的连接。
2.2docker使用
安装yum工具-设置镜像源-安装docker
1、先pull从镜像站拉取镜像,或者自己导入
2、通过镜像创建容器并设置挂载数据卷的参数、端口等
详情见:黑马Docker从安装到容器命令-CSDN博客
2.3dockerfile
1.Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
2.Dockerfile的第一行必须是FROM,从一个基础镜像来构建
3.基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine
2.4docker-compose
其作用在于帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。
通过定义一个docker-compose.yml文件,来一键启动、停止、重建应用的所有服务
3、异步通信
3.1同步和异步
同步和异步是描述程序执行流程中的两种不同方式:
1. 同步:同步操作指的是程序按照顺序执行,一步一步地完成任务。在同步操作中,当某一个任务开始执行时,程序会等待该任务完成后才能继续执行下一个任务。同步操作的优点是简单直观,易于理解和调试,但可能会导致程序在处理一些耗时操作时出现阻塞,影响整体性能。
2. 异步:异步操作指的是程序在执行过程中,可以同时执行多个任务,不需要等待某个任务完成就可以继续执行其他任务。在异步操作中,任务的执行顺序不固定,可以根据任务的完成情况来确定后续操作。异步操作的优点是可以提高程序的性能和响应速度,特别适用于处理一些耗时的I/O操作,如网络请求、数据库查询等。
总的来说,同步是按照固定顺序逐步执行任务,而异步是并发执行多个任务,任务的完成顺序可以不固定。在实际编程中,可以根据任务的性质和需求选择合适的同步或异步操作方式。
3.2MQ技术选型
常见的消息队列技术包括 RabbitMQ、Apache Kafka、ActiveMQ、Redis、RocketMQ 等,它们各有特点和适用场景。
在做技术选型时,需要明确具体的性能区别以及优劣,以此确定。
3.3SpringAMQP
SpringAMQP是Spring框架对消息队列的支持库,帮助开发人员更轻松地在Spring应用程序中实现消息传递和处理。它提供了一些工具和功能,使开发人员可以更方便地构建可靠的消息驱动应用程序。
详情见:黑马SpringAMQP大纲与实操-CSDN博客
3.4消费者限流
消费者限流是指在消息队列中对消费者的消费速率进行限制,以防止消费者过载和系统负荷过重的现象发生。通过消费者限流可以控制消费者每单位时间内可以处理的消息数量,保证系统在高负载情况下的稳定性和可靠性。常见的消费者限流策略包括基于消息数量、基于时间窗口、基于消费者权重等。
可以通过不同的队列模型和交换机来实现限流以及广播组播等操作
详情见:黑马SpringAMQP大纲与实操-CSDN博客
4、分布式搜索
4.1ES的基本用法
ES组成:
文档:一条数据就是一个文档,es中是Json格式
字段:Json文档中的字段
索引:同类型文档的集合
映射:索引中文档的约束,比如字段名称、类型
elasticsearch与数据库的关系:
数据库负责事务类型操作
elasticsearch负责海量数据的搜索、分析、计算
在 Elasticsearch 中,数据存储在索引中。可以通过 Elasticsearch 提供的 RESTful API 将数据索引到 Elasticsearch 中。使用 PUT 请求将数据存储到指定索引、类型和 ID 中。亦或者使用GET、UPDATE等。
可以结合kibana工具,进行ES数据的可视化展示
4.2中文、拼音搜索
在 Elasticsearch 中,分词器(Analyzer)是用来将文本数据拆分成词语(Token)的组件,它在索引和搜索阶段都发挥着重要作用。
其中中文和拼音都可以通过设置特定的分词器来取得,例如:ik分词器和pinyin分词器
详情见:黑马es0-1实现自动补全功能-CSDN博客
4.3聚合和统计
聚合是对文档数据的统计、分析、计算,例如:
在es中即为对搜索结果数据进行处理,详情见:黑马聚合的分类及实现-CSDN博客
4.4高可用集群
具体搭建步骤见:黑马es集群-CSDN博客