9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

Couchbase 的四种微服务架构

作者:Marian Puhl

  • 2021-08-10
  • 本文字数:2477 字

    阅读完需:约 8 分钟

Couchbase 的四种微服务架构

在过去十年中,微服务已经逐渐成为了一种常见的架构模式。


在这种方法中,许多小型、自动、松散耦合的服务通过分布式网络运行在一起。每一种微服务通常都限定在特定的功能与业务边界内,在各自的进程中运行,并且可以独立于其他服务进行管理与部署。


这种架构与传统的单体应用相比更加灵活,但同时也要求各自的微服务能够保证其弹性、可扩展性与持久性。


在这篇文章中,我想要专注介绍微服务架构的数据管理部分,以及 Couchbase 是如何为用户的数据层提供低延迟、弹性与可延展性的。


集成缓存与弹性扩展带来的简单性


微服务是与明确的业务领域绑定的。


举例来说,你的业务领域可能是产品、活动、结算、电子商务应用的用户资料服务,不同的微服务在应用内共同协作,但其实却在各自为营。通常情况下,不同的团队各自负责其独立的服务,并拥有他们自己的发布循环与 CI/CD 管道,结果是更加敏捷并迅捷的开发过程。



在上图中的场景里,不同的微服务都有其各自的域数据,并通过 API 进行不同服务间的数据共享。在交易结算中,结算服务可以从用户资料服务中调用对应的客户数据。这种架构模式带来了更多的灵活性的同时,也让微服务跨平台复用成为了可能。


搭建弹性与可扩展的服务是很关键的。对于无状态的微服务而言,这点应当很容易实现的。但如果需要保留数据,你最终还是需要一个弹性的数据库架构,随着服务用量的增加而与微服务一同扩展。


Couchbase 是搭建在一个内存优先的架构上,不仅提供了为低延迟数据访问的集成缓存,同时还有弹性的扩展性。这样你就可以单独地扩展 Couchbase 的各个服务,而不会影响你的微服务运维。


随着你的数据流量的增加,你要做的也只是增加更多的 Couchbase 节点。如果你需要额外的队列容量,添加更多的 Couchbase 队列节点到你的集群中即可。


通过这种多维扩展,不同的 Couchbase 服务将再也不用为系统资源而竞争了。与之相反,Couchbase 的底层基础设施将是围绕服务的特定需求而量身定制,举例来说,Couchbase 查询服务通过使用具有大量内存的计算实例,尽可能多地提供来自集成缓存的数据,并利用一个具有额外内核的节点以支持更大量的查询请求。



Coachbase 的可扩展性与资源的独立性。


具备弹性与分布式的 Couchbase 架构还可以通过维护数据的副本来保证其高可用性。在一个节点发生故障的情况下,Couchbase 会自动将其失效以保证整体继续运行。


Couchbase 中微服务的常见模式


微服务的关键特征之一就是其松散的耦合,而这一特征则允许它们单独进行开发、部署、访问控制和扩展。


松散耦合要求底层数据库的基础设施支持隔离各个微服务的数据,可以通过为每个微服务单独运行各自的数据库实例,或者通过控制对数据相关部分的访问来达成这一点。


虽然传统的关系型数据库支持使用数据库模式(schema)进行隔离,但这一类型的数据库通常很难进行扩展。它们缺乏 JSON 数据模型的灵活性,并且在数据库基础设施中断的情况下将造成单点故障。在涉及微服务架构时,我们尤其需要注意这一点,中断将会对所有使用同一数据库的微服务造成非常严重的后果。


Couchbase 是为微服务设计的。它是一个高度可扩展且具有弹性的分布式数据库,提供极强的灵活性以及多层次的隔离机制,以支持在同一 Couchbase 集群中运行的多达一千的微服务。


Couchbase Server 7 引入了作用域以及集合的概念。


作用域和集合是在一个桶(bucket)中创建逻辑容器,用于数据的整理及隔离。桶作为一个关键空间,允许用户进行个人内存配额、磁盘和 I/O 优先级的配置,而这些设置也仅仅是提供了部分的资源隔离。桶、作用域以及集合在基于角色的访问控制、跨数据中心复制(XDCR),以及备份和恢复等所有层面上,提供了独立的部署和生命周期管理。



这些功能会为你的开发团队带来更高的灵活性,并允许多种模式的微服务存在。下面我们将更详细地为各位讲解四种最常见的模式。


模式 1:每个微服务的专用 Couchbase 集群


通过一个专门的 Couchbase 集群,以物理隔离的方式提供独立的扩展,虽然可行,但如果要处理的是成百上千的微服务,这种方式可能就不太现实了。



模式 2:使用桶进行隔离


对比起使用专有集群进行隔离的手段,桶可以通过内存分配、磁盘 I/O 以及复制提供部分的资源隔离。然而,每个 Couchbase 集群拥有的桶的数量是有限制的,这就导致每个集群中支持的微服务数量不能超过 30 个。


如果你对于隔离不同服务之间的数据没有严格的要求,或者还有其他用于确保每个微服务仅在自己的数据库中运行的手段,那么我们可以让多个微服务使用同一个桶。一般来说,桶的共享使用是通过识别文档中的密钥或额外类型属性来完成的。


在 Couchbase 7 中引入作用域和集合之前,这种模式就已经在被业界普遍使用了。



模式 3:使用集合进行隔离


另一种更为强大的微服务部署方式是利用集合进行隔离。


虽然我们所使用的桶可以提供资源隔离,但集合可以在逻辑上隔离并控制微服务的访问,使得用户得以在一个 Couchbase 集群中运行多达一千的微服务。在下面的示意图中,每一个微服务都有各自的集合,Couchbase 基于角色的访问限制确保了每个微服务都只能在对应的集合中访问它们各自的数据库。



模式 4:使用桶和集合进行隔离


这一种微服务模式与模式 3 相类似,区别在于模式 3 是将所有的集合放进一个桶,而模式 4 则是将不同的集合分组到不同的桶中。


这种模式允许你根据桶内微服务或集合的特征分别配置桶,并以内存分配或复制数等方式达成单独桶和其内含的集合的物理隔离。



Coachbase 中并不存在构造与隔离数据的单一最佳解决方案,但通过使用桶作用域以及集合,你将拥有无穷尽的解决方案以轻松满足你对微服务架构的具体需求。


容器化部署


现如今的部署环境正在向微服务的方向转移,这一点是毋庸置疑的。而于此同时,业界内也在向通过 Kubernetes 和 OpenShift 管理的容器化部署发展。


有了 Couchbase,你的自主且完全管理的有状态数据库应用和你的微服务将在同一 Kubernetes 平台上运行,这种方式为你提供了完全的隔离,并通过自动故障转移,甚至是自动扩展集群为你减轻工作负担。


更多信息,请访问 Couchbase 自动 Operator。


原文链接:

https://blog.couchbase.com/microservices-architecture-in-couchbase

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2021-08-10 11:342612
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 316.9 次阅读, 收获喜欢 1781 次。

关注

评论

发布
暂无评论
发现更多内容

Intel要跟华硕等OEM品牌推出DG2显卡?官方:消息不属实

科技新消息

Java变异出现错误:No enclosing instance of type XXX is accessible

华为云开发者联盟

Java

【墨天轮专访第五期】偶数科技常雷:创新改变世界,深耕云数据仓库

墨天轮

数据库 国产数据库

等保是强制的吗?企业不办等保有啥处罚?

行云管家

网络安全 等保 等保2.0

全网通用Python点赞器(俗称刷分机器),想知道原理吗?看完本文你自己也能写个

梦想橡皮擦

9月日更

Chrome浏览器控制台支持中文

FunTester

chrome 浏览器 控制台 FunTester 中文

多租户是什么意思?怎么理解?

行云管家

云计算 运维 SaaS

浏览器测试的三大挑战及解决方案【译】

FunTester

软件测试 测试 FunTester 兼容性测试 浏览器测试

“智感超清”之HDR技术落地实践

百度开发者中心

最佳实践 音视频

在线Emoji符号大全

入门小站

工具

Flutter 对状态管理的认知与思考

小呆呆666

flutter ios android 大前端 dart

Python代码阅读(第28篇):计算列表中位数

Felix

Python 编程 Code Programing 阅读代码

一张图读懂Z-ONE Studio Lite

SOA开发者平台

一张图读懂Z-ONE Studio Lite

SOA开发者

考试系统高并发试卷存储设计方案

Imaginary

Prometheus 2.27.0 新特性

耳东@Erdong

release Prometheus 9月日更

滴滴 x StarRocks:极速多维分析创造更大的业务价值

StarRocks

数据库 数据分析 滴滴 Clickhouse StarRocks

【存储专栏】打破K/V存储的性能瓶颈

趣链科技

区块链 存储

一文教你如何落地spring cloud alibaba企业级架构

小鲍侃java

后端 引航计划

Linux用户/用户组编辑

在即

9月日更

如何实现一款毫秒级实时数据分析引擎

Shopee技术团队

大数据 数据分析 后端 HBase

你知道怎么离线安装全局 node 模块吗?

编程三昧

大前端 npm Node 离线包 9月日更

书单 | 带你轻松度假的10本好书!

博文视点Broadview

送你一个Python 数据排序的好方法

华为云开发者联盟

Python 数据分析 数据排序

华为云GaussDB(for MySQL)2.0全新升级,三大技术大揭秘

华为云开发者联盟

数据库 云原生 GaussDB GaussDB(for MySQL) 华为全联接2021

一张图读懂Z-ONE Digital Car

SOA开发者平台

Go 中五个常见错误

baiyutang

golang 9月日更

Intel高管披露Arc显卡合作厂商?官方否认

科技新消息

从敏捷开发到全自动开发,加速实现企业数字化转型

SoFlu软件机器人

华为云开天aPaaS 上线,服务千万开发者,使能行业场景化创新

华为云开发者联盟

华为云 企业应用 开天aPaaS aPaaS 华为云生态

Redis可观测最佳实践,5大关键指标最全解析!

观测云

redis

  • 扫码添加小助手
    领取最新资料包
Couchbase 的四种微服务架构_架构_InfoQ精选文章