系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第四部分:微服务架构

本心、输入输出、结果

文章目录

  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第四部分:微服务架构
    • 前言
      • 典型的微服务架构是什么样的
        • 微服务的优势
      • 微服务最佳实践
        • 在开发微服务时,我们需要遵循以下最佳实践:
      • 微服务通常使用什么技术堆栈
        • ▶️预生产
        • ▶️生产
      • 为什么卡夫卡(Kafka)很快
        • 步骤说明
      • 弘扬爱国精神

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第四部分:微服务架构


编辑:简简单单 Online zuozuo
地址:https://blog.csdn.net/qq_15071263

在这里插入图片描述


如果觉得本文对你有帮助,欢迎点赞、收藏、评论

前言

我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节

我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节

在这里插入图片描述

典型的微服务架构是什么样的

下图显示了典型的微服务体系结构。

  1. 负载均衡器:这会在多个后端服务之间分配传入流量。
  2. CDN(内容交付网络):CDN 是一组地理位置分散的服务器,用于保存静态内容以加快交付速度。客户端首先在 CDN 中查找内容,然后进行到后端服务。
  3. API 网关:处理传入请求并将其路由到相关服务。它与标识提供者和服务发现通信。
  4. 身份提供程序:用于处理用户的身份验证和授权。
  5. 服务注册和发现:微服务注册和发现发生在此组件中,API 网关在此组件中查找要与之通信的相关服务。
  6. 管理:此组件负责监视服务。
  7. 微服务:微服务在不同的域中设计和部署。每个域都有自己的数据库。API 网关通过 REST API 或其他协议与微服务通信,同一域中的微服务使用 RPC(远程过程调用)相互通信。

在这里插入图片描述

微服务的优势
  • 它们可以快速设计、部署和水平扩展。
  • 每个域都可以由专门的团队独立维护。
  • 因此,可以在每个域中自定义业务需求并得到更好的支持。

在这里插入图片描述

微服务最佳实践

开发微服务的 9 个最佳实践

在这里插入图片描述

在开发微服务时,我们需要遵循以下最佳实践:
  1. 为每个微服务使用单独的数据存储
  2. 将代码保持在类似的成熟度级别
  3. 为每个微服务单独生成
  4. 为每个微服务分配一个职责
  5. 部署到容器中
  6. 设计无状态服务
  7. 采用领域驱动设计
  8. 设计微前端
  9. 编排微服务

在这里插入图片描述

微服务通常使用什么技术堆栈

下面将显示一个图表,显示开发阶段和生产的微服务技术堆栈

在这里插入图片描述

▶️预生产
  • 定义 API - 这将在前端和后端之间建立协定。为此,我们可以使用 Postman 或 OpenAPI。
  • 开发 - Node.js 或 react 在前端开发中很受欢迎,java/python/go 在后端开发中很受欢迎。此外,我们需要根据 API 定义更改 API 网关中的配置。
  • 持续集成 - 用于自动化测试的 JUnit 和 Jenkins。代码打包到 Docker 映像中,并部署为微服务。
▶️生产
  • Nginx 是负载均衡器的常见选择。Cloudflare提供CDN(内容交付网络)。
  • API 网关 - 我们可以对网关使用 Spring boot,并使用 Eureka/Zookeeper 进行服务发现。
  • 微服务部署在云上。我们有AWS,Microsoft Azure或Google GCP之间的选择。 缓存和全文搜索 - Redis 是缓存键值对的常见选择。ElasticSearch 用于全文搜索。
  • 通信 - 为了使服务相互通信,我们可以使用消息传递下 Kafka 或 RPC。
  • 持久性 - 我们可以将 MySQL 或 PostgreSQL 用于关系数据库,将 Amazon S3 用于对象存储。如有必要,我们还可以将Cassandra用于宽柱存储。
  • 管理和监控 - 为了管理如此多的微服务,常见的Ops工具包括Prometheus,Elastic Stack和Kubernetes

在这里插入图片描述

为什么卡夫卡(Kafka)很快

有许多设计决策对Kafka的性能做出了贡献。在这篇文章中,我们将重点介绍两个。我们认为这两个人最有分量

在这里插入图片描述

  1. 第一个是 Kafka 对顺序 I/O 的依赖。
  2. 使 Kafka 具有性能优势的第二个设计选择是它对效率的关注:零拷贝原则。
步骤说明
该图说明了数据如何在生产者和消费者之间传输,以及零拷贝的含义。步骤 1.1 - 1.3:创建者将数据写入磁盘
步骤 2:使用者在没有零拷贝的情况下读取数据2.1 数据从磁盘加载到操作系统缓存2.2 数据从操作系统缓存复制到Kafka应用程序2.3 Kafka 应用程序将数据复制到套接字缓冲区2.4 数据从套接字缓冲区复制到网卡2.5 网卡向消费者发送数据
步骤 3:使用者使用零拷贝读取数据3.1:数据从磁盘加载到操作系统缓存 3.2 操作系统缓存通过 sendfile() 命令直接将数据复制到网卡 3.3 网卡向消费者发送数据零拷贝是在应用程序上下文和内核上下文之间保存多个数据副本的快捷方式

弘扬爱国精神

在这里插入图片描述

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

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

相关文章

笔记:绘图进阶

主要功能: 双坐标轴多子图共用一个横坐标横坐标时间刻度设置(简便方法)自定义时间坐标轴起止时间 # -*- coding: utf-8 -*-import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdatesif …

网站技术查看

当打开一个网页感觉很好奇,他使用了什么框架和什么技术? 常用的网页技术分析网站。 1. w3techs Check web technologies used by a website - Site InfoW3Techs identifies which web technologies such as CMS, programming language, web server an…

算法学习之 背包01问题 , 备战leecode

来看题目 我们分析一下题目&#xff0c;首先我们要排序&#xff0c;这有助于我们得到最大的值&#xff0c;我们要得到一个递推公式 代码如下: class Solution { public:int maxSatisfaction(vector<int>& satisfaction) {int n satisfaction.size();vector<v…

微软官方推出的四款工具,太实用了,值得收藏

目录 一、Officeplus——丰富的办公资源库 二、微软数学求解器 三、微软内置edge浏览器 四、Microsoft To-Do 办公待办神器 所以今天小编给大家分享4个微软官方推出的实用工具&#xff0c;每一个都非常好用&#xff0c;对于大家日常办公&#xff0c;非常有必要&#xff0c;感兴…

C语言--冒泡排序和简答选择排序

冒泡排序 一种典型的交换排序 类似水冒泡&#xff0c;大元素经不断的交换由水底慢慢的浮出 从头到尾&#xff0c;循环比较两相邻的元素 大的元素移到后面&#xff0c;小的放前面-每次循环&#xff0c;大的元素会排到最后 代码如下&#xff1a; #include<stdio.h> …

常用消息中间件

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…

竞赛 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 DeepSORT车辆跟踪3.1 Deep SORT多目标跟踪算法3.2 算法流程 4 YOLOV5算法4.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…

程序连接oracle查询数据的环境配置

连接oracle 数据库真麻烦&#xff0c;还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的&#xff0c;引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…

R语言的计量经济学技术

量经济学通常使用较小样本&#xff0c;但这种区别日渐模糊&#xff0c;机器学习在经济学领域、特别是经济学与其它学科的交叉领域表现日益突出&#xff0c;R语言是用于统计建模的主流计算机语言&#xff0c;在本次培训中&#xff0c;我们将从实际应用出发&#xff0c;重点从数据…

ArmSoM-RK3588编解码之mpp解码demo解析:mpi_dec_test

1. 简介 [RK3588从入门到精通] 专栏总目录 mpi_dec_test 是rockchip官方解码 demo 本篇文章进行mpi_dec_test 的代码解析&#xff0c;解码流程解析 2. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板 软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian11 3.…

[TCP1P 2023] 部分crypto,pwn,reverse

Crypto Final Consensus 这是个AES爆破密钥的题&#xff0c;加密方法是先后用两个密钥加密。远程先给出加密后的flag&#xff0c;然后允许输入值并进行加密。 from Crypto.Cipher import AES import random from Crypto.Util.Padding import pada b"" b b"&…

SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造

在某些设计情况中,如果一些条件为真,则我们不想执行检验。换句话说,这就像是一个异步的复位,使得检验在当前时刻不工作。SVA提供了关键词“ disable iff来实现这种检验器的异步复位。“ disable iff”的基本语法如下。 disable iff (expression) <property definition> …

Modelsim无法生成LICENSE的问题

按照网上的破解教程&#xff0c;将mgls.dll和mgls64.dll属性都是去掉只读后&#xff0c;点击patch64_dll.bat文件生成LICENSE&#xff0c;发现在弹出的对话框中一直提示找不到其文件&#xff0c;无法正常生成LICENSE。 解决方法&#xff1a; 1.按winR键或者在电脑搜索界面中输…

【论文解读】The Power of Scale for Parameter-Efficient Prompt Tuning

一.介绍 1.1 promote tuning 和 prefix tuning 的关系 “前缀调优”的简化版 1.2 大致实现 冻结了整个预训练模型&#xff0c;并且只允许每个下游任务附加k个可调令牌到输入文本。这种“软提示”是端到端训练的&#xff0c;可以压缩来自完整标记数据集的信号&#xff0c;使…

ssrf漏洞学习

目录 ssrf漏洞 相关函数 相关协议 file协议 dict协议 gopher协议 ctfshow ssrf web351 web352 web353 web354过滤01 web355五位长度 web356 三位长度 web357 DNS重定向 web358 正则 ssrf漏洞 SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器端请…

位操作符^以及正负数在计算机中的存储

(数据是怎么在计算机中存储的)​ 正数和负数在内存中都是以补码的形式存储的&#xff0c;但不同的是正数的原码&#xff0c;补码&#xff0c;反码都是相同的&#xff0c;而负数的原码&#xff0c;补码和反码是不同的。 负数的原码&#xff0c;补码&#xff0c;反码之间存在什么…

人大金仓与哪吒科技达成战略合作,加快推动智慧港口建设

近日&#xff0c;人大金仓与哪吒港航智慧科技&#xff08;上海&#xff09;有限公司&#xff08;以下简称“哪吒科技”&#xff09;达成战略合作。双方旨在共享优势资源&#xff0c;联合为港口企业转型升级提供完备的技术支撑与行业解决方案。人大金仓总裁杜胜、哪吒科技总经理…

elementui中el-select和el-tree实现下拉树形多选功能

实现效果如下&#xff1a; 代码如下&#xff1a; html中 <el-col :lg"12"><el-form-item label"可用单位" prop"useOrgListTemp"><div class"departAll"><el-selectref"selectTree"v-model"valu…

英语——分享篇——每日200词——2601-2800

2601——resistant——[rɪzɪstənt]——adj.抵抗的——resistant——resi热死(拼音)st石头(拼音)ant蚂蚁(熟词)——热死了石头上的蚂蚁还在抵抗——The body may be less resistant if it is cold. ——天冷时&#xff0c;身体的抵抗力会下降。 2602——prospect——[prɒspe…

42911-2023 碳纤维增强复合材料 密封压力容器加速吸湿和过饱和调节方法

1 范围 本文件描述了碳纤维增强复合材料加速吸湿和过饱和调节的方法&#xff0c;该方法在温度高于100 ℃但低 于试验材料玻璃化转变温度(T) 的饱和水蒸气密封压力容器中进行。 本文件适用于玻璃化转变温度大于150℃的热固性碳纤维增强复合材料。热塑性碳纤维增强复合 材料也…