黑马微服务实用篇知识梳理

news2024/11/19 21:29:27

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博客​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1720531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python根据版本下载外部库的.whl文件、python下载离线whl文件、python查找whl历史版本

文章目录 一、python下载外部库的.whl文件 当遇到pip源中没有对应的包,或者网络波动时,可能出现需要离线安装的方法。这里记录一下下载安装whl文件的操作。 一、python下载外部库的.whl文件 1、在浏览器输入https://pypi.org/进入PYPI官网 2、在弹出的…

CentOS7配置国内清华源并安装docker-ce以及配置docker加速

说明 由于国内访问国外的网站包括docker网站,由于种种的原因经常打不开,或无法访问,所以替换成国内的软件源和国内镜像就是非常必要的了,这里整理了我安装配置的基本的步骤。 国内的软件源有很多,这里选择清华源作为…

【PHP项目实战训练】——laravel框架的实战项目中可以做模板的增删查改功能(2)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

three.js官方案例(animation / keyframes)webgl_animation_keyframes.html学习

目录 ​编辑 1 PMREMenerator 1.1 构造函数 1.2 fromScene方法 2 AnimationMixer 3 animal1.html全部 4 animal1.js全部 1 PMREMenerator 此类生成预过滤的 Mipmapped 辐射环境贴图 (PMREM) 来自 cubeMap 环境纹理。这允许不同的级别 的模糊&…

lynis安全漏洞扫描工具

Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。这款软件会扫描一般系统信息,脆弱软件包以及潜在的错误配置。 安装 方式1 git下载使用git clone https://github…

mac电脑用谷歌浏览器对安卓手机H5页面进行inspect

1、mac上在谷歌浏览器上输入 chrome://inspect 并打开该页面。 2、连接安卓手机到Mac电脑:使用USB数据线将安卓手机连接到Mac电脑。 3、手机上打开要的h5页面 Webview下面选择要的页面,点击inspect,就能像谷歌浏览器页面打开下面的页面&#…

61. UE5 RPG 实现敌人近战攻击技能和转向攻击

在前面,我们实现了敌人的AI系统,敌人可以根据自身的职业进行匹配对应的攻击方式。比如近战战士会靠近目标后进行攻击然后躲避目标的攻击接着进行攻击。我们实现了敌人的AI行为,但是现在还没有实现需要释放的技能,接下来&#xff0…

提升船舶安全性与效率:隔离驱动芯片的应用

随着科技的不断发展,船舶行业也在不断迎来新的技术革新,其中隔离驱动芯片作为一种关键的电子元件,在船舶领域发挥着重要作用。本文将深入探讨隔离驱动芯片在船舶领域的应用及其技术特点。 隔离驱动芯片提升船舶系统安全性 船舶作为大型交通工…

信息系统项目管理师0604:项目整合管理 — 历年考题(详细分析与讲解)

点击查看专栏目录 1、2017年11月第34题 项目经理张工带领团队编制项目管理计划,(34)不属于编制项目管理计划过程的依据。 A. 项目章程B. 事业环境因素C. 组织过程资产D. 工作分解结构【答案】D 【解析】考查的是编写项目管理计划的相关知识,需要掌握。编写项目管理计划的…

Kafka broker的新增和剔除(服役与退役)

说明:集群现有broker:node1,node2,node3三个,broker.id分别为0,1,2 已有两个topic:products、cities 1、退役(Kafka集群中减少一个服务器broker2) 退役后要保证剩下的服务器数量大于等于备份数&#xff0c…

自适应全屏滚动,实现swiper 全屏滚动效果与解决bug

原来是想复刻明日方舟的滚动代码,基于此进行开发 js实现网页全屏切换(平滑过渡),鼠标滚动切换_网页滚动条下滑和全屏切换是什么-CSDN博客 但是发现bug BUG 原因是只获取了一次高度 于是增加窗口监听, 但是发现拉伸…

Python | Leetcode Python题解之第123题买卖股票的最佳时机III

题目: 题解: class Solution:def maxProfit(self, prices: List[int]) -> int:n len(prices)buy1 buy2 -prices[0]sell1 sell2 0for i in range(1, n):buy1 max(buy1, -prices[i])sell1 max(sell1, buy1 prices[i])buy2 max(buy2, sell1 - …

从一个netty程序说一说TCP三次握手的总结及参数优化

一、背景 TCP连接经历了三次握手,当我们开发一个netty程序,运行在线上环境后,如何对其进行监控,并适时地进行参数调优。 本文以我们生产环境的一个通道程序,看一看三次握手的过程,以及Linux系统关于创建h…

翻译《The Old New Thing》- What a drag: Dragging a virtual file (IStream edition)

What a drag: Dragging a virtual file (IStream edition) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080319-00/?p23073 Raymond Chen 2008年03月19日 拖拽虚拟文件(IStream 版本) 上一次,我们看…

Spring Cloud | 客户端 “负载均衡器“ : Ribbon

目录: 1. 什么是 "负载均衡" ? ( 通过 "负载均衡" 可以将 "用户请求" "分发" 到 不同的服务器,以此来提高 "性能" 和 "可靠性" )2. "负载均衡" 的 分类 ?3. 认识 Ribbon :3.1 R…

Vitis HLS 学习笔记--控制驱动与数据驱动混合编程

目录 1. 简介 2. 示例分析 2.1 代码分析 2.2 控制驱动TLP的关键特征 2.3 数据驱动TLP的关键特征 3. 总结 1. 简介 在 HLS 硬件加速领域,Vitis HLS 提供了强大的抽象并行编程模型。这些模型包括控制驱动和数据驱动的任务级并行性(TLP)&…

【网络安全的神秘世界】MySQL

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 MySQL MySQL 教程 | 菜鸟教程 (runoob.com) 什么是数据库 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库 在do…

Mac OS 用户开启 80 端口

开启端口 sudo vim /etc/pf.conf # 开放对应端口 pass out proto tcp from any to any port 8080 # 刷新配置文件 sudo pfctl -f /etc/pf.conf sudo pfctl -e获取本机ip地址 ifconfig en0 | grep inet | grep -v inet6 | awk {print $2}访问指定端口

Pytorch反向传播算法(Back Propagation)

一:revise 我们在最开始提出一个线性模型。 x为我们的输入,w为权重。相乘的结果是我们对y的预测值。 那我们在训练时就是对这个权重w进行更新,就需要用到上一章提到的梯度下降算法,不断更新w。但是此时注意不是用y的预测值对w进…

go解析yaml

go解析yaml文件关键就是结构体的创建 初学go tag字段要和yaml文件中的key对应起来,每个层级都要创建对应的结构体,有点烦 package configimport ("gopkg.in/yaml.v3""os" )type Config struct {MysqlConfig MysqlConfig yaml:&q…