0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何构建弹性、高可用的微服务?

虹科网络可视化技术 2023-11-26 08:06 次阅读

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

文况速览:

什么是微服务架构?

为什么微服务很重要?

Redis Enterprise:微服务的完美方案

微服务架构的设计模式

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

一、什么是微服务架构

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

98bc8d2a-8bef-11ee-9788-92fbcf53809c.png

Monolith架构 vs. 微服务架构

二、为什么微服务很重要

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

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

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

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

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

1.微服务规模的性能

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

2.为容错和恢复而设计

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

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

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

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

Redis Enterprise 提供统一的操作界面,可减少技术学习成本、简化操作并降低服务延迟。针对 Kubernetes 的 Redis Enterprise 运营商为您提供一致的自动化部署,从而降低风险。这让开发团队能够专注于创新和业务价值。

5.可跨云跨地域适应

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

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

1.微服务查询缓存

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

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

99852ef6-8bef-11ee-9788-92fbcf53809c.png

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

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

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

999a070e-8bef-11ee-9788-92fbcf53809c.png

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

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

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

99b5c188-8bef-11ee-9788-92fbcf53809c.png

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

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

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

99e17ddc-8bef-11ee-9788-92fbcf53809c.png

五、适合微服务架构的 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 平台和云托管服务上使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 架构
    +关注

    关注

    1

    文章

    513

    浏览量

    25468
  • 数字化
    +关注

    关注

    8

    文章

    8708

    浏览量

    61726
  • 微服务
    +关注

    关注

    0

    文章

    137

    浏览量

    7337
收藏 人收藏

    评论

    相关推荐

    宝藏级微服务架构工具合集

    构建,Eclipse Vert.X提供多语言支持且资源高效;Kubernetes是强大的容器编排工具,Tyk是开源API管理平台;RabbitMQ帮助微服务间通信,Apache Kafka则适用于处理
    的头像 发表于 12-21 16:33 51次阅读

    k8s微服务架构就是云原生吗?两者是什么关系

    k8s微服务架构就是云原生吗?K8s微服务架构并不等同于云原生,但两者之间存在密切的联系。Kubernetes在云原生架构中扮演着核心组件的角色,它简化了容器化应用程序的管理,提供了弹性、自动化
    的头像 发表于 11-25 09:39 136次阅读

    SSR与微服务架构的结合应用

    随着互联网技术的快速发展,前端技术栈不断更新迭代,后端架构也经历了从单体应用到微服务的变革。在这个过程中,服务端渲染(SSR)作为一种提升页面加载速度和SEO性能的技术,与微服务架构的结合应用,为
    的头像 发表于 11-18 11:34 317次阅读

    微服务架构与容器云的关系与区别

    微服务架构与容器云密切相关又有所区别。微服务将大型应用拆分为小型、独立的服务,而容器云基于容器技术,为微服务提供构建、发布和运行的平台。区别
    的头像 发表于 10-21 17:28 210次阅读

    弹性服务器怎么样?好用吗?

    答案是肯定的。弹性服务器以其弹性伸缩、可用性、灵活性、高性能以及安全防护等特性,为用户提供了高效、可靠、灵活的计算
    的头像 发表于 10-15 16:15 138次阅读

    入门级攻略:如何容器化部署微服务

    第一步理解容器化基础,第二步创建Dockerfile,第三步构建推送镜像,第四步部署微服务,第五步管理微服务、第六步优化更新。容器化部署微服务是现代软件开发中的一种高效方法,可提供良好
    的头像 发表于 10-09 10:08 149次阅读

    借助NVIDIA Metropolis微服务构建视觉AI应用

    伴随着视觉 AI 复杂性的增加,精简的部署解决方案已成为优化空间和流程的关键。NVIDIA 能够加快企业的开发速度,借助 NVIDIA Metropolis AI 工作流和微服务,企业只需数周就能将想法变成现实,而原本这项工作需要耗费数月时间。
    的头像 发表于 09-09 09:46 325次阅读
    借助NVIDIA Metropolis<b class='flag-5'>微服务</b><b class='flag-5'>构建</b>视觉AI应用

    NVIDIA NIM微服务带来巨大优势

    服务通过热门 AI 模型为数百万开发者带来高达 5 倍的 token 效率提升,使他们能够立即访问在 NVIDIA DGX Cloud 上运行的 NIM 微服务
    的头像 发表于 08-23 15:20 479次阅读

    采用OpenUSD和NVIDIA NIM微服务创建精准品牌视觉

    全球领先的创意和制作服务机构率先采用 OpenUSD 和 NVIDIA NIM 微服务来创建精准的品牌视觉。
    的头像 发表于 08-01 14:33 415次阅读

    全新 NVIDIA NeMo Retriever微服务大幅提升LLM的准确性和吞吐量

    企业能够通过提供检索增强生成功能的生产就绪型 NVIDIA NIM 推理微服务,充分挖掘业务数据的价值。这些微服务现已集成到 Cohesity、DataStax、NetApp 和 Snowflake 平台中。
    的头像 发表于 07-26 11:13 824次阅读
    全新 NVIDIA NeMo Retriever<b class='flag-5'>微服务</b>大幅提升LLM的准确性和吞吐量

    华为云 FunctionGraph 构建可用系统的实践

    ,详细介绍如何构建可用的 Serverless 计算平台,实现客户和平台双赢。 可用介绍
    的头像 发表于 05-09 23:14 462次阅读
    华为云 FunctionGraph <b class='flag-5'>构建</b><b class='flag-5'>高</b><b class='flag-5'>可用</b>系统的实践

    【算能RADXA微服务器试用体验】Radxa Fogwise 1684X Mini 规格

    通过网络可以了解到,算能RADXA微服务器的具体规格: 处理器:BM1684X 算力:高达32Tops INT8峰值算力 内存:16GB LPDDR4X 内存 存储:64GB eMMC 编程框架
    发表于 02-28 11:21

    Java微服务随机掉线排查过程简析

    我们的业务共使用 11 台(阿里云)服务器,使用 SpringcloudAlibaba 构建微服务集群, 共计 60 个微服务, 全部注册在同一个 Nacos 集群。
    的头像 发表于 01-13 17:41 932次阅读
    Java<b class='flag-5'>微服务</b>随机掉线排查过程简析

    薄膜键盘弹性可用弹 UV 胶

    键盘弹性体高弹UV胶,用于薄膜键盘的弹性体部分。
    的头像 发表于 12-30 09:22 517次阅读
    薄膜键盘<b class='flag-5'>弹性</b>体<b class='flag-5'>可用</b>的<b class='flag-5'>高</b>弹 UV 胶

    游戏公司不使用微服务架构的原因

    微服务基本只有 request/response 的模式。做不了 streaming?微服务通常要求应用是无状态的才能做到水平扩展。streaming 本身就是加入了状态
    的头像 发表于 12-29 11:18 432次阅读