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

news2024/12/28 2:57:16

本心、输入输出、结果

文章目录

  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第四部分:微服务架构
    • 前言
      • 典型的微服务架构是什么样的
        • 微服务的优势
      • 微服务最佳实践
        • 在开发微服务时,我们需要遵循以下最佳实践:
      • 微服务通常使用什么技术堆栈
        • ▶️预生产
        • ▶️生产
      • 为什么卡夫卡(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.coloradmin.cn/o/1126911.html

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

相关文章

hdlbits系列verilog解答(向量门操作)-14

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 构建一个具有两个 3 位输入的电路,用于计算两个向量的按位 OR、两个向量的逻辑 OR 以及两个向量的逆 (NOT)。将b反相输出到out_not上半部分,将a 的反相输出到out…

Vue里面怎么使用站点地图Sitemap做SEO

在Vue中使用站点地图(Sitemap)来进行SEO优化的方法与在其他前端框架中类似。 1:安装vue-router:首先确保Vue应用程序正在使用vue-router来进行路由管理。使用以下命令安装它: npm install vue-router2:创建路由配置::Vue应用程序中需要创建一个路由配置文件。这个文件…

理解了springboot那些约定俗成的Java类命名规范,就很容易读懂springboot的源代码

去阿里面试,由于简历上写了读过 spring 的源码,所以面试官就问到了:看你读过 spring 的源码,可以介绍一下他的流程么? 肚子好像很多,但是脑子关于spring相关概念,很好混乱,回答的…… 那怎办呢?何不试一下,找一下springboot那些约定俗成的Java类命名规范,来辅助自…

[SQL开发笔记]AND OR运算符:基于一个以上的条件对记录进行过滤

上一篇博客示范了在where子句中使用一个条件进行查询,如果需要多个条件限制呢?需要使用and或or运算符; 一、功能描述: 用于基于一个以上的条件对记录进行过滤 二、AND & OR语法详解: 1.and运算符(co…

电子标签模块:让传感器智能化,工程安全监测更便捷

电子标签模块:让传感器智能化,工程安全监测更便捷 在之前的文章《振弦传感器的发展及信息化的核心技术-VM系列振弦采集模块》中,我们提到了河北稳控科技研发并批量生产的激励测读模块(振弦采集模块),该模块…

医院绩效考核系统源码,医院绩效考评管理系统全套成品源码

医院综合绩效核算系统全套源码 (医院实际应用案例自主版权演示) 医院绩效考核系统以医院的发展战略为导向,把科室、员工的绩效考核跟战略发展目标紧密结合,引导医院各个科室、各员工的工作目标跟医院的发展目标结合在一起&#x…

基于遥感影像的分类技术(监督/非监督和面向对象的分类技术)

遥感图像分类技术 “图像分类是将土地覆盖类别分配给像素的过程。例如,类别包括水、城市、森林、农业和草原。”前言 – 人工智能教程 什么是遥感图像分类? 遥感图像分类技术的三种主要类型是: 无监督图像分类监督图像分类基于对象的图像分析…

滤波器设计工具简介

目录 快速入门 设计滤波器 查看其他分析 更改轴单位 标记数据点 优化设计 更改分析参数 导出滤波器 生成 MATLAB 文件 量化滤波器 目标 其他功能 此示例说明如何使用方便的滤波器设计工具替代命令行滤波器设计函数。 滤波器设计工具是 Signal Processing Toolbox™…

Python 下载首页图片

以下是一个使用RoboBrowser和Python下载首页图片的下载器程序,并使用https://www.duoip.cn/get_proxy获取代理: import os import time from robobrowser import RoboBrowser import requests ​ def get_proxy():url "https://www.duoip.cn/get_…

【Linux】Centos 8 服务器部署:阿里云端口开放与应用实例教程

目录 一、基本流程 二、进入实例安全组 (1)进入实例详情 (2)打开安全组列表 三、配置规则 (1)默认安全组 (2)自定义安全组 ① 创建安全组添加入方向端口 ② 编辑安全组导入…

紫光同创FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持

目录 1、前言免责声明本去雾模块的特点 2、目前我这里已有的图像处理方案3、设计思路框架SD卡初始化SD卡读操作SD卡读图片OV5640摄像头配置及采集HDMA图像缓存输入输出视频HDMA缓冲FIFOHDMA控制模块 图像去雾模块详解HDMI输出 4、PDS工程1详解:SD卡提供有雾图片5、P…

用“qwer”打造类似梦幻西游中比巧克力还丝滑的状态机

点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 梦幻西游是流量密码吗&…

Trace 在多线程异步体系下传递最佳实践

JAVA 线程异步常见的实现方式有&#xff1a; new ThreadExecutorService 当然还有其他的&#xff0c;比如fork-join&#xff0c;这些下文会有提及&#xff0c;下面主要针对这两种场景结合 DDTrace 和 Springboot 下进行实践。 引入 DDTrace sdk <properties><java.…

Sui特性将推动下一波游戏大发展

随着游戏行业的竞争日益激烈&#xff0c;区块链技术为游戏工作室提供了必要的优势&#xff0c;以保持观众对他们的兴趣。实际上&#xff0c;区块链技术可能是未来游戏设计中最令人愉快和吸引人的关键。游戏在深入探索世界方面表现很棒&#xff0c;它们通过视觉、叙事和社区建设…

Scala入门到放弃—02—函数

文章目录 函数方法定义默认参数命名参数可变参数条件语句循环表达式 函数 方法定义 def 方法名(参数: 参数类型): 返回值类型 {//方法体//最后一行作为返回值(不需要使用return) } def max(x: Int, y: Int): Int {if(x > y)xelse y }package org.example object App {de…

C++ 模板的编译链接讨论

//头文件 #ifndef Test_h__ #define Test_h__ template<class T> class Test1 { public: static T Add(const T& x, const T& y); }; #endif // Test_h__ //cpp文件 #include "Test.h" template<class T> T Test1<T>::Add(const …

Qt 案例 使用QNetworkReply或者URLDownloadToFile 下载http、https资源到本地路径

Qt 使用QNetworkReply或者URLDownloadToFile两种不同方式下载http、https链接资源文件&#xff0c;并且获取下载进度。 目录 一、 使用 URLDownloadToFile 下载二、 使用 QNetworkReply 下载三、 打包好的可执行程序示例下载四、 会员或订阅专栏下载源码 一、 使用 URLDownload…

USB协议学习(二)设备枚举过程分析

USB协议学习&#xff08;二&#xff09;设备枚举过程分析 笔者来聊聊设备枚举过程分析. 这里写自定义目录标题 USB协议学习&#xff08;二&#xff09;设备枚举过程分析USB设备运行过程USB设备枚举USB设备通信构成USB设备请求USB枚举过程分析如何改变文本的样式插入链接与图片如…

【算法训练-动态规划 二】【线性DP问题】最长递增子序列

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【动态规划】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

跨境电商:经济合作新引擎,技术赋能新亮点

随着数字化浪潮席卷全球&#xff0c;跨境电商正蓬勃发展&#xff0c;成为中国外贸高质量发展的新引擎。中国的跨境电商行业在"买全球、卖全球"方面正经历着显著的增长&#xff0c;延展出新的商业生态&#xff0c;以技术创新和国际合作为支撑&#xff0c;促进了中国制…