6.微服务架构的一般架构模式概论

news/2024/9/28 19:28:03/

TOC

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

理解一下微服务架构

需求:

设计思路

实现思路分析

我们重点讨论一下各个要素重要的模式实现,有时间我们讨论实现

1.微服务架构

这里不做赘述,主要考虑系统组件实现模式

2.服务发现

服务发现是一种架构模式,用于在分布式系统中自动发现和管理服务。根据不同的特点和实现方式,服务发现可以分为以下几种分类:

  1. 客户端发现模式(Client-side discovery):在这种模式下,客户端负责发现可用的服务实例。客户端通过查询服务注册中心或者使用负载均衡算法选择服务实例,并直接与服务实例通信。客户端需要实现服务发现和负载均衡的逻辑,但这种模式可以提高系统的灵活性和可伸缩性。

  2. 服务器发现模式(Server-side discovery):在这种模式下,服务注册中心负责发现可用的服务实例,并将这些信息提供给客户端。客户端通过查询服务注册中心获取服务实例的地址,并与所选择的服务实例通信。服务器发现模式相对于客户端发现模式,减轻了客户端的负担,但服务注册中心成为了单点故障的风险。

  3. 混合模式(Hybrid discovery):混合模式将客户端发现模式和服务器发现模式结合起来。客户端首先通过查询服务注册中心获取服务实例的列表,然后使用负载均衡算法选择服务实例进行通信。在运行时,如果发现注册中心的信息有变化,客户端可以通过订阅注册中心的通知,动态更新服务实例的列表。

  4. 数据中心感知模式(Data center aware discovery):在大规模分布式系统中,通常会有多个数据中心提供服务。在数据中心感知模式中,服务发现根据客户端和服务实例所在的数据中心,选择最近的服务实例进行通信。这种模式可以减少延迟和网络带宽的消耗,提高系统的性能。

总之,服务发现是一种重要的架构模式,它可以帮助分布式系统自动发现和管理服务。不同的服务发现方式适用于不同的场景和需求,选择适合的服务发现模式可以提高系统的可伸缩性、灵活性和性能。

3.负载均衡

负载均衡是一种架构模式,它的作用是将工作负载(即用户请求)分散到多个服务器上,从而提高系统的性能、可靠性和可扩展性。

根据不同的需求和实现方式,负载均衡可以分为以下几种架构模式:

  1. 集中式负载均衡:集中式负载均衡模式中,有一个独立的负载均衡设备(如负载均衡器或反向代理服务器)来分发请求到后端服务器。这个负载均衡设备负责监控服务器的健康状况,并根据预先定义的算法将请求分发到最优的服务器上。

  2. 分布式负载均衡:分布式负载均衡模式中,负载均衡的功能被分散到多个节点上。每个节点都具有负载均衡的能力,并且可以独立地进行负载均衡决策。这种模式可以提供更高的可靠性和可扩展性,但也更加复杂。

  3. 客户端负载均衡:客户端负载均衡模式中,负载均衡的功能由客户端自己完成。客户端可以根据自己的算法和策略选择一个服务器来发送请求。这种模式可以减轻服务器的负载,并且可以根据客户端的需求进行灵活的负载均衡决策。

以上是常见的负载均衡的架构模式分类,不同的模式适用于不同的场景和需求。

4.API网关

API网关是一种架构模式,用于管理和控制对后端服务的访问。它充当了前端和后端服务之间的中间层,并提供了统一的入口点和接口。在API网关模式中,所有的客户端请求都通过网关进行处理和路由,然后再转发到相应的后端服务。

API网关的主要功能包括请求路由、负载均衡、安全认证、缓存、日志记录等。通过集中管理和控制,API网关可以提供一些重要的功能,例如安全性、可靠性和可扩展性。

使用API网关模式的好处包括:

  1. 统一的入口点:通过API网关,客户端只需要知道一个URL地址就可以访问系统中的所有后端服务。

  2. 请求路由和负载均衡:API网关可以根据请求的URL路径和参数将请求路由到相应的后端服务,并进行负载均衡,以提高系统的性能和可扩展性。

  3. 安全认证:API网关可以集中处理和验证客户端的身份和权限,以保证系统的安全性。

  4. 缓存和性能优化:API网关可以缓存一些常用的请求结果,以减轻后端服务的负载,提高系统的性能。

  5. 监控和日志记录:API网关可以记录和监控所有的请求和响应,以便于系统的调试和分析。

总之,API网关是一种重要的架构模式,可以提供统一的入口和接口,以及一些重要的功能,例如安全性、可靠性和可扩展性。它可以帮助开发人员更好地管理和控制对后端服务的访问。

5.数据处理

数据处理架构模式是指用于组织和管理数据处理系统的一种设计模式或架构风格。它提供了一套约定和规范,以帮助开发人员构建可靠、可扩展和高效的数据处理系统。

常见的数据处理架构模式包括:

  1. 批处理架构模式:将大量数据按批次处理,适用于离线、批量处理的场景,例如批量数据导入/导出、大规模数据计算等。

  2. 流式处理架构模式:实时处理来自不同数据源的数据流,适用于实时数据分析、实时监控、实时推荐等场景。常用的流式处理框架包括Apache Kafka、Apache Flink等。

  3. Lambda架构模式:将批处理和流式处理相结合,使得系统既能处理实时数据,又能进行离线批量处理。它通常包括一个实时层和一个批处理层,并通过一个查询层将结果合并。Lambda架构适用于对大规模数据进行实时分析和查询的场景。

  4. 数据仓库模式:将数据从不同的数据源汇聚到数据仓库中,并提供灵活的数据查询和分析能力。数据仓库模式通常包括数据抽取、数据转换和数据加载等步骤,常用的数据仓库工具有Apache Hive、Apache Hadoop等。

  5. 微服务架构模式:将数据处理系统拆分为多个独立的服务,每个服务负责不同的数据处理任务,通过消息队列或API网关进行通信。微服务架构可以提高系统的可维护性、可扩展性和灵活性。

这些架构模式可以根据具体的业务需求和系统规模选择和组合使用,以构建适合的数据处理系统。

6.监控和日志

监控和日志是在软件系统中非常重要的两个方面。监控主要是指对系统运行状态的实时监控和性能分析,包括硬件资源使用、服务运行状态、用户请求响应时间等。而日志则是指系统在运行过程中所产生的各种事件和操作记录。

在软件架构中,通常会采用以下两种模式来实现监控和日志功能:

  1. 中心化模式:这种模式下,系统的监控和日志功能都集中在一个中心化的服务器上。所有的监控数据和日志都会被发送到这个服务器上进行集中管理和分析。这种模式的优点是集中管理方便,可以实时监控系统运行情况和快速定位问题,但同时也存在单点故障和可扩展性差的缺点。

  2. 分布式模式:这种模式下,系统的监控和日志功能分散在各个节点上,每个节点都会负责自己的监控和日志记录。监控数据和日志可以通过消息队列等方式进行传输和集中存储。这种模式的优点是具有良好的可扩展性和容错性,但同时也需要考虑数据一致性和管理复杂度的问题。

除了以上两种模式,还有一些其他的架构模式也可以用于实现监控和日志功能,例如代理模式、发布订阅模式等。

总之,监控和日志是系统运维和故障排查的重要工具,选择适合的架构模式可以提高系统的可用性和可维护性。

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~,如果有兴趣,可以加文末的交流群,大家一起进步哈


http://www.ppmy.cn/news/1531602.html

相关文章

WPF入门教学十九 属性动画与时间线

在WPF中,属性动画是通过改变对象的依赖属性值来创建动画效果的一种方式。时间线(Timeline)是控制动画播放进度的核心组件。WPF提供了多种类型的动画和时间线,包括DoubleAnimation、ColorAnimation、PointAnimation等,以…

【韩顺平Java笔记】第1章

0-1可以看视频,下面记录主要内容 2. 就业方向 Java基础又叫JavaSE,Java有三个主要的就业方向: JavaEE软件工程师:电商,团购,众筹,sns(社交网络),教育&…

基于php的医院信息管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

设计模式、系统设计 record part02

软件设计模式: 1.应对重复发生的问题 2.解决方案 3.可以反复使用 1.本质是面向对象 2.优点很多 1.创建型-创建和使用分离 2.结构型-组合 3.行为型-协作 571123种模式 UML-统一建模语言-Unified Modeling Language 1.可视化,图形化 2.各种图(9…

初识Tomcat

Tomcat是一款可以运行javaWebAPP的服务器软件。 一个服务器想要执行java代码,则需要JRE(jvm、java运行环境等),但是需要执行javaWEB项目则还需要服务器软件,Tomacat就是其中很流行的一款。因为一个javaWEB项目会有很多…

宝塔面板部署雷池社区版教程

宝塔面板部署雷池社区版教程 简单介绍一下宝塔面板,安全高效的服务器运维面板,使用宝塔面板的人非常多 在网站管理上,许多用户都是通过宝塔面板进行管理,宝塔面板的Nginx默认监听端口为80和443,这就导致共存部署时雷池…

flink 的 Barrier 对齐 的优劣详解:

Barrier 对齐(Barrier Alignment) 是分布式数据流系统中一个重要的机制,特别是在处理 状态一致性、故障恢复 和 容错 时起着关键作用。它主要用于确保在复杂的多并行子任务场景下,数据流的所有分支能够在某个时间点上达到一致的状…

Unity3D入门(三) : Android和Unity3D交互 - Android调用Unity

1. 前言 上篇文章,我们讲了如何在Unity3D中过渡地切换相机视角。这篇文章,我们来讲一下Unity3D怎么与Android交互。 1.1 unity和Android的三种通信方式 Unity官方提供的接口 : 有一个弊端,它有一个传输内容量的一个限制,传输内…