首页 > 其他分享 >【虹科干货】如何构建弹性、高可用的微服务?

【虹科干货】如何构建弹性、高可用的微服务?

时间:2023-10-19 17:05:34浏览次数:35  
标签:服务 数据库 Redis 干货 构建 Enterprise 虹科 架构 数据

基于微服务的应用程序可实现战略性数字转型和云迁移计划,对于开发团队来说,这种架构十分重要。那么,如何来构建弹性、高可用的微服务呢?Redis Enterprise给出了一个完美的方案。

文况速览:

  • 什么是微服务架构?
  • 为什么微服务很重要?
  • Redis Enterprise:微服务的完美方案
  • 微服务架构的设计模式
  • 适合微服务架构的 Redis 企业功能


一、什么是微服务架构

正如著名的微服务专家 Chris Richardson 所定义的那样,微服务架构是一种将应用程序构建为低耦合服务集合的架构风格,这些服务具有高度的可维护性和可测试性,可独立部署,受特定业务领域的约束,并由小型团队负责。微服务架构可以快速、频繁、可靠地交付大型复杂应用程序。

【虹科干货】如何构建弹性、高可用的微服务?_微服务

Monolith架构 vs. 微服务架构

二、为什么微服务很重要

基于微服务的应用程序可实现战略性数字转型和云迁移计划。

1.微服务是一种架构风格,有助于开发团队更快地创建更好的软件,并最大限度地降低应用现代化的成本和复杂性。这种架构风格及其相关的软件开发文化使微服务开发团队能够按照自己的发布周期运作,拥抱端到端产品的所有权,并采用基于持续集成/持续交付的 DevOps 框架。这样的好处是,企业可以缩短新服务开发的上线时间,通常可将以月为单位的项目缩短至以天为单位。

2.微服务可加速数据层云迁移。这是因为微服务主要依赖于云原生 NoSQL 数据库。2021 年 IDC InfoBrief 调查显示,NoSQL 数据库正在取代内部部署的关系型数据库,因为后者不是为云或独立发布周期而构建的。

此外,一些企业无法一次性将其传统的单体应用迁移到云原生应用。微服务可实现子域从单体架构向现代技术栈进行增量迁移。


三、Redis Enterprise:微服务的完美方案

1.微服务规模的性能

在微服务环境中,需要实时运行的服务必须平衡网络开销。Redis Enterprise 为所有 Redis 数据类型和模型提供亚毫秒级延迟。 此外,它可以立即线性扩展,以满足几乎任何吞吐量需求。

【虹科干货】如何构建弹性、高可用的微服务?_数字化转型_02

2.为容错和恢复而设计

为确保您的应用程序具有故障恢复能力,Redis Enterprise 采用了无共享集群架构。它在各个故障级别都具有容错能力:在进程层面、单个节点甚至跨基础架构可用区自动进行故障切换。它还包括可调整的持久性和灾难恢复能力。

【虹科干货】如何构建弹性、高可用的微服务?_数字化转型_03

3.利用快速灵活的数据模型降低复杂性

Redis Enterprise允许开发人员为他们的微服务架构和领域驱动设计选择最适合他们的性能和数据访问要求的数据模型,同时在单个数据平台上保持多租户部署的隔离。

【虹科干货】如何构建弹性、高可用的微服务?_软件开发_04

4.利用原生 Kubernetes 部署简化操作

Redis Enterprise 提供统一的操作界面,可减少技术学习成本、简化操作并降低服务延迟。

针对的 Redis Enterprise 运营商为您提供一致的自动化部署,从而降低风险。这让开发团队能够专注于创新和业务价值。

【虹科干货】如何构建弹性、高可用的微服务?_数字化转型_05

5.可跨云跨地域适应

Redis Enterprise 可部署在任何地方:任何云平台、内部部署、多云或混合云架构。

【虹科干货】如何构建弹性、高可用的微服务?_云 迁移_06



四、微服务架构的设计模式

1.微服务查询缓存

独立或有界上下文是微服务架构的一个重要特征。作为领域驱动设计的一部分,每个服务都可以拥有一个专用数据库,该数据库有自己独特的数据模型和SLA(Service Level Agreement,服务水平协议)性能目标。查询缓存是一种常用于缩短微服务响应时间的缓存模式,其工作原理是在每个微服务旁部署 Redis Enterprise 缓存,以提供单一业务上下文中所需的数据。(也就是说,它只服务于一个微服务)。

Redis Smart Cache 是一个开源库,可将缓存无缝添加到任何符合 JDBC 标准的平台、应用程序或微服务中,在提高查询性能的同时降低操作复杂性,而且无需更改应用程序代码。Redis Enterprise 支持多种数据模型,可轻松实现多租户部署,保持数据隔离的同时,不降低性能。

【虹科干货】如何构建弹性、高可用的微服务?_Redis_07


2.通过 CQRS 缓存跨域共享数据

微服务需要快速访问数据,但当数十或数百个微服务试图从同一个缓慢的磁盘数据库中读取数据时,就会产生许多问题。跨域数据需要实时提供给每个微服务,而且不能超出其重点业务环境和目标的范围。

命令查询责任隔离(Command-Query Responsibility Segregation, CQRS)是微服务架构中一种重要的预取缓存模式,它将读取(查询)和写入命令分离开来,这使应用程序能够将数据写入速度较慢的基于磁盘的 SQL 数据库,同时使用 Redis Enterprise 中集成的变更数据捕获(CDC)功能预取和缓存该数据,以实现高速读取。这样,其他需要数据的微服务就能立即获得这些数据。

【虹科干货】如何构建弹性、高可用的微服务?_Redis_08


3.全局数据的 API 网关缓存

微服务应用程序可以在 API 网关级别缓存全局访问数据,以分发和加速所有服务都会访问的数据。通常情况下,这些数据包括会话数据(如用户 ID 和偏好设置)和验证数据(令牌、授权状态和权限)。这样,所有服务都能实时获得频繁请求的数据。结果如何?减少应用延迟,同时不打破每个微服务业务上下文的界限。

在 API 网关上还可以使用 Redis Enterprise 实现速率限制,即在一定时间范围内对 API 请求的数量进行计量。这可以防止系统超载,并防止 DDoS 。

【虹科干货】如何构建弹性、高可用的微服务?_微服务_09


4.用于服务间通信的异步消息传递

微服务必须在不破坏隔离的情况下相互通信状态、事件和数据,而且必须保持解耦。常见的解决方案是在架构中引入发布-订阅消息代理,即让服务间通信由事件驱动并最终保持一致,并将微服务之间的每条消息都视为一个事件。

Redis Streams 是一种不可变的按时间排序的日志数据结构,可让服务(生产者)发布异步消息,多个消费者可订阅这些消息。可以对其进行配置,以处理不同的交付保证、支持消费者群组,并应用与 Apache Kafka 主题分区类似的其他功能。更棒的是,Redis Streams 可帮助在后端创建报告、分析、审计和取证分析。

【虹科干货】如何构建弹性、高可用的微服务?_软件开发_10

五、适合微服务架构的 Redis 企业功能

1.双活备份

微服务架构有许相互多连接的服务,但它面临着与单体应用程序相同的性能需求。为尽量减少延迟,数据应尽可能靠近服务。您还需要确保数据库在发生故障或更新冲突时彼此保持一致。Redis Enterprise 可以部署为双活、无冲突复制的数据库,以处理来自多个本地服务安装的更新,而不会影响延迟或数据一致性,并在发生故障时提供连续性服务。

2.多种数据模型

Redis Enterprise 提供多种数据结构(哈希值、字符串、流、列表等)和模型,包括 JSON、搜索、时间序列和图形,可让您选择最适合您的微服务领域、性能和数据访问要求的数据模型,这一切都在一个数据平台中实现。

3.多用户数据库

在微服务架构的数据库设计中,单个 Redis Enterprise 集群可为多个不同的服务提供数据库,每个服务都有自己的独立实例,并针对给定的工作负载进行了调整。每个数据库实例的部署、扩展和建模都独立于其他实例,同时利用相同的集群环境,在不增加操作复杂性的情况下隔离服务之间的数据。

4.灵活跨云

微服务提供了极大的技术灵活性,选择在哪里部署数据库也不例外。Redis Enterprise 可以部署在任何地方:任何云平台、企业内部、多云或混合云架构。它还可在 Kubernetes、Pivotal Kubernetes Service (PKS) 和 Red Hat OpenShift 上使用。

5.本地 Kubernetes 容器编排和管理

容器与企业部署微服务应用程序密切相关,并有助于企业部署微服务应用程序。Kubernetes 是容器部署、调度和编排的标准平台。Redis 是在容器上运行的顶级数据库技术,Docker hub 启动次数超过 20 亿次。用于 Kubernetes 的 Redis Enterprise Operator 提供:自动可扩展性、持久存储卷、简化的数据库端点管理和零停机时间滚动升级。它可在多个 Kubernetes 平台和云托管服务上使用。

标签:服务,数据库,Redis,干货,构建,Enterprise,虹科,架构,数据
From: https://blog.51cto.com/u_15881886/7940715

相关文章

  • 虹科分享 | 选择SAS还是NVMe?虹科网络基础带您一探究竟!
    存储架构师需要通过确保他们选择的存储解决方案提供支持其生态系统所需的安全性、稳定性、可扩展性和管理特性来应对当今的业务挑战。当他们考虑采用新的存储技术时,在采用新技术之前,他们应该权衡和审查一些基本的考虑因素。新的存储协议不断进入市场,本文将探讨SAS技术为何仍然是存......
  • 智慧光伏发电管理系统 构建电站运维高质量生态
    前言光伏即光生伏特,是通过半导体材料实现的光电转化。以太阳能电池板为核心的光伏设施将太阳能直接转化为电能,释放光能这一清洁能源的应用价值。在“双碳”战略提出后,光伏行业因其突出的低碳环保属性迎来了发展的黄金时期。建设背景市场背景在全球光伏产业蓬勃发展背景下,我国......
  • 提高倾斜摄影三维模型顶层合并构建效率的技术方法初探
    提高倾斜摄影三维模型顶层合并构建效率的技术方法初探 高效提高倾斜摄影三维模型顶层构建的技术方法有许多,本文将介绍几种常见的方法,并分析它们的优势和适用场景。这些方法包括数据处理与预处理、并行计算与分布式处理、智能化算法与模型优化等。一、数据处理与预处理数据清......
  • 使用 kaniko 在 K8S 中构建镜像
    背景现有个需求需要在K8S中构建一个新的镜像,之前使用docker命令进行构建,后面K8S升级,容器运行时换成了containerd,故查了一下网络,发现kaniko比较好用。所以测试记录一下~项目地址:https://github.com/GoogleContainerTools/kaniko测试例子一:mkdir-p/data/yaml/default......
  • 项目播报 | 璞华科技助力苏州巨迈科构建数字化管理体系
    项目播报近日,苏州巨迈科智能科技有限公司(以下简称:苏州巨迈科)签约璞华科技实施PLM项目,建立苏州巨迈科统一的研发管理平台,实现产品数据在部门间的共享,提升企业技术管理水平和综合竞争力,提高信息化管理水平。苏州巨迈科是集自动化设备和工业软件一体化的智能制造整体解决方案提供......
  • # yyds干货盘点 # Python自动化办公之PDF版本发票识别并提取关键信息实战教程(上篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公发票数据处理的问题,一起来看看吧。二、实现过程这个问题在实际工作中还是非常常见的,实用性和通用性都比较强,历史文章中其实也有写过几篇文章,这里继续给大家敲敲脑壳。不过这里还涉及到一个......
  • 基于边缘网关构建水污染监测治理方案
    绿水青山就是金山银山,生态环境才是人类最宝贵的财富。但是在日常生活生产中,总是免不了各种污水的生产、排放。针对生产生活与环境保护的均衡,可以借助边缘网关打造环境污水监测治理体系,保障生活与环境的可持续性均衡发展。 水污染来源主要包括生活污水、工业污水、农业污水、天......
  • 4种过压保护电路讲解,过压保护原理+过压保护电路原理+过压保护电路构建,通俗易懂
    大家好,我是李工,创作不易,希望大家多多支持我。今天给大家分享的是:过压保护、过压保护原理、过压保护电路。一、过压保护是什么意思?过压保护是一种电源功能,当输入电压超过预设值时会切断电源,为了防止高压浪涌,通常会一些过压保护方法。大多数电源都使用过电压保护电路来防止损坏电......
  • 解析设计模式与设计原则:构建可维护性和可扩展性代码的重要性
    本文分享自华为云社区《深入解析设计模式与设计原则:构建可维护性和可扩展性代码的重要性》,作者:LionLong。一、为什么需要设计模式?1.1、设计模式的定义设计模式大概有23种。设计模式是指在软件开发中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案。从定......
  • CLion 中 使用MSVC工具链构建QT项目时出现 ninja: build stopped: subcommand failed.
    两个方法:把构建方式改为Release;或者在CMakeList.txt中把一下行给注释了。 解释一下:这段代码的意思是:如果是MSVC工具链,且处在Debug模式下,把需要的库名加个后缀“d”。......