【行业观点】如何为微服务选择正确的数据库

自动生成RESTful API——Spring Data Rest ○ 虽然 Spring Data REST 可以自动暴露仓库方法,但你仍然可以添加自定义控制器来处理特定的业务逻辑。你可以通过 @RepositoryRestResource 注解来自定义仓库的暴露方式。创建一个自定义的认证提供者,用于处理认证逻辑。 阅读详情

微服务成为基础设施建设重点的原因在于它提供了服务分离、数据自主存储、小型化开发、测试可设置等优势,这有助于新应用程序更快地上市或迭代更新。此外,容器和容器编排工具也增加了对微服务的使用频率。
微服务的核心摒弃了传统架构,这使得它在服务之间共享一个单一的数据库。相比于传统的服务架构,微服务架构的每个微服务单元都具有独立、自主、专用的数据存储单元。
以一个电子商务解决方案为例,如图所示,该方案采用的服务包括:应用服务器、内容缓存、会话存储、产品目录、搜索发现、订单处理、订单跟踪和数据分析等等。现代电子商务解决方案不是使用大型单个数据库来存储所有的操作和交易数据,而是使用类似于图1所示的微服务架构,其中每个服务都有自己的数据库。
这里写图片描述
如何为微服务选择数据存储方式
“如何选择正确的数据存储方式”是设计微服务时最重要的问题之一。选择正确数据存储方式的第一步是确定微服务数据的性质。数据性质大致可以分为以下几类:
1. 短暂数据:缓存服务器就是短暂数据存储的一个很好的例子,它是一个临时数据存储,其目的是通过实时提供信息来改善用户体验。 微服务通常被调整为高性能,并且操作读取频繁,它没有耐久性要求,因为它不存储数据的主副本,但它又仍然必须保持高度可用,因为出现故障可能会导致用户体验不佳,从而影响收益。另外,故障也可能会导致“缓存冲突”问题,因为数据库爬网速度较慢,它们无法处理高频的访问,反而这可能导致完全可以避免的故障出现。
2. 瞬态数据:日志、消息和信号等数据通常以高容量和高速率实现传输。数据摄取服务通常在将其传递到适当的目的地之前处理该信息。 像这样的数据存储方式就需要支持高速写入。同时,支持时间序列数据和JSON的内置功能也是一个额外的好处。对瞬态数据的耐久性要求会高于短暂数据,而低于交易数据。
3. 操作数据:从用户会话收集的信息(如用户个人资料,购物车内容等)被视为操作数据。微服务器为用户提供更好的体验并进行实时反馈。即使存储在数据库中的数据不是永久的,但架构也必须最大程度地保留数据以实现业务连续性。这样就对于操作数据的持久性、一致性和可用性要求很高。一般而言,操作数据被放在特定的数据模型中,如JSON、图形、关系、键值等
4. 交易数据:从类似于付款处理和订单处理的交易收集到数据必须作为永久记录,存储在能够支持强ACID控制的数据库中。
在图1所示的电子商务应用中,我们可以对微服务及其各自的数据存储方式进行分类,如下表所示:
这里写图片描述
一致性和耐用性的可调度
为了达到优化微服务以获得高性能和数据耐久性要求,务必要确认所选数据库能够为当前数据类别提供适当的可调参数。对于高性能而言,纯内存的数据库是理想的选择。对于数据耐久性而言,让数据复制以及磁盘闪存耐久是最好的解决办法。例如,电子商务示例中的缓存服务器必须针对低延迟、高速读取操作进行优化。基于数据的性质,数据库不需要承受耐久性考验。另一方面,订单跟踪微服务重点是保持数据清晰和一致。
下表显示了如何基于对数据的原则性、一致性、隔离性和耐久性的要求来配置和调整每个微服务器的数据存储方式。
这里写图片描述
最后但也同样重要的是评估数据库可用的部署方法和编排选项,以确保能够让所有微服务在同一种环境中被部署和管理。以下是要查找的一些关键标准:
1. 作为容器的可用性:由于微服务大多都部署为由编排工具所管理的容器,所以当使用数据库作为容器时,可以获得很好的运营效率。
2. 云端/本地化选择:数据库是否可用于云端或本地,微服务器部署在哪里? 可用于两个部署选项的数据库为此提供了更大的灵活性。
3. 锁定供应商:组织有时会切换编排工具,因此确保数据库支持所有流行的编排工具对锁定供应商非常有帮助。

关于Ghostcloud
Ghostcloud(中文名:精灵云)坐落于成都天府软件园,是成都高新区重点扶持企业,国内首批从事容器虚拟化研发的企业,是西南地区唯一一家基于Docker的云计算服务商,为企业级行业客户提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务。
Ghostcloud因容器技术而生,以最新容器技术Docker为基础,为适应不同行业客户需求,全自主研发了一套调度引擎框架Newben,且全方位适配Kubernetes主流开源调度引擎,也是国内率先实现双调度引擎的企业,是一流的企业级容器云服务专家。Ghostcloud推出了企业级容器云PaaS/CaaS平台,命名为EcOS(EnterpriseContainer Operation System)。Ghostcloud将EcOS平台与微服务/DevOps相融合,运用至企业IT系统的全生命周期的开发、测试、运维及发布流程中,致力于为多个领域企业向“互联网+”转型提供针对互联网化、私有云管理平台、大数据业务基础架构的平台服务,帮助企业级客户降低成本、提升效率、简化运维及产品部署,并提升系统的可靠性和安全性。

单节锂电池充电管理芯片应用原理阐述及应用领域 当电池电压超过2.9V时,采用恒流模式对电池充电,充电电流由PROG 管脚和GND之间的电阻RPROG确定。充电电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置当充电电流在达到最终浮充电压之后降至设定值1/10时,WD4054将自动终止充电循环。在待机模式中,WD4054 对 BAT 引脚电压进行监控,只有当 BAT 引脚电压低于再充电阈值电压4.1V时(对应电池容量80%~90%),才会开始新的充电循环,重新对电池进行充电,这就避免了对电池进行不必要的反复充电,有效延长电池的使用寿命。 阅读详情

相关推荐

Web3前沿技术的智能合约安全审计

随着Web3技术的快速发展,智能合约作为区块链应用的核心组件,其安全性问题日益突出。本文旨在系统性地介绍智能合约安全审计的技术体系,帮助开发者理解智能合约安全风险,掌握安全审计的方法论和工具链。智能合约安全的基本概念常见漏洞类型及其原理安全审计的技术方法实际审计案例分析安全审计工具和资源首先介绍基本概念和背景然后分析常见漏洞和安全风险接着详细讲解安全审计技术提供实际案例和代码示例最后讨论工具资源和未来趋势智能合约:运行在区块链上的自执行程序,代码即法律安全审计。

AI天才研究院 1548

Spring Data Rest 指南

Spring Data Rest 一.Restful简介 REST是一种Web软件结构风格,而不是一种标准,匹配或兼容这种架构风格称之为REST服务,REST服务简洁并且有层次,REST通常基于HTTP,URI和XML以及HTML这些现有的广泛流行的协议和标准,在REST中,资源是由URI来指定的,对资源的增删改查也是通过HTTP协议提供的POST,PUT,GET,DELETE等方法实现,使用REST可以更高效率的利用缓存来提高响应速度,同时REST中的通信会话状态有客户端来维护,这可以让不同服务器来处理一

ToBeMaybe_的博客 3096

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 320

Spring Data REST

Spring Data REST 是一个现代化的、基于 RESTful 风格的框架,可以帮助开发者快速构建和暴露 RESTful API,从而简化了应用程序的开发和维护过程。Spring Data REST 的核心思想是通过简单的编写领域模型类和接口,就可以自动生成可访问和操作这些实体的 RESTful API。开发者只需要编写少量的代码,即可实现常见的 CRUD 操作,包括创建、读取、更新和删除实体。

Flying_Fish_roe的博客 1744

第十篇|网络子系统 ②——无损以太网、PFC/ECN、DCQCN 与拥塞可视化

网络部分了解了解

qq_37535542的博客 1876

手把手教你学simulink(8.3)--实例:基于 Simulink 的自动驾驶汽车速度控制系统设计与仿真

基于 Simulink 的自动驾驶汽车速度控制系统设计与仿真。

MHD0815的博客 1210

【Java开发】 Spring 09 :Spring Data REST 实现并访问简单的超媒体服务

Spring Data REST 是提供一个灵活和可配置的机制来编写可以通过HTTP公开的简单服务,简单来说,而且可以省去大部分controller和services的逻辑,因为Spring Data REST 已经为你都做好了,目前支持JPA、MongoDB、Neo4j、Solr、Cassandra 和 Gemfire,因此本文以 JPA 举例。

尹煜的博客 1747

系统安装(kuntaiR522 kvm安装)

鲲泰R522服务器kvm安装rocky

weixin_46396917的博客 1822

Spring Data Rest!五分钟帮我们实现Rest服务

Spring Data Rest!几分钟帮我们实现Rest服务 一、概述 一直认为,Spring Data是与第三方组件进行数据交换的全家桶的整合,比如Spring Data Jpa是数据库使用,Spring Data LDAP是LDAP的使用,Spring Data Redis是Redis的使用,Spring Data Elasticsearch是Elasticsearch的使用。 然而,不起眼...

feiyangtianyao的专栏 1135

Unity引擎开发:复杂动作系统_动作捕捉数据的应用与整合

通过以上步骤,我们可以在Unity中有效地应用和整合动作捕捉数据,以实现更加真实和流畅的动画效果。从导入文件格式的选择,到预处理和优化,再到实时应用和调试验证,每一步都至关重要。希望本文能帮助你在Unity项目中更好地利用动作捕捉数据,提升动画质量和性能。

chenlz2007的博客 959

信号处理算法:离散余弦变换(DCT)_(1).离散余弦变换(DCT)概述

离散余弦变换的数学定义如下:对于一个长度为NNN的离散信号xnx(n)xn,其DCT变换后的系数XkX(k)XkXk∑n0N−1xncos⁡πNn12kk012N−1Xkn0∑N−1​xncosNπ​n21​kk012N−1其中,kkk是频率指数,nnn是时间或空间索引。离散余弦变换(DCT)是一种强大的信号处理技术,广泛应用于图像压缩、音频处理、数据压缩等领域。

2401_87715305的博客 1556

微服务(Microservices)。

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

孤芳不自赏 3389

qt医疗信息系统(HIS)

**UI 组件**: QWidget、QTextBrowser、QTableWidget、QGraphicsView 等。- **网络通信**: Qt Network (TCP/IP)- **DICOM 处理**: DCMTK 3.6.7。- **数据库**: SQLite (轻量、跨平台)**数据库文件**: `hospital.db`- **开发框架**: Qt 6 (C++)- 医疗影像 (DICOM) 查看器。**医疗影像 (DICOM) 查看器****电子病历 (EMR) 浏览器**

寒寒豆豆软件公司的博客 339

[译]微服务-Martin Fowler

翻译自Martin Fowler的microservices, 翻译于2015年7月22日。翻译尽量贴近原文,减少意译带入的个人观点,如有不当之处,请指正。 在过去几年中,“微服务架构”这一术语如雨后春笋般涌现出来,它描述了一种将软件应用程序设计为一组可独立部署的服务的特定方式。虽然这...

qq_43233736的博客 323

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【微服务】复杂系统:微服务与人类

普罗布斯特:我叫凯瑟琳·普罗布斯特。我是谷歌的工程总监。我在这里向你们介绍复杂系统、微服务和人类。让我们从一个可能会有点意外的问题开始。北极熊与微服务有什么关系?乍一看,你可能会说他们之间可能没什么关系。让我们再深入一点。你可能知道,北极熊吃海豹。很容易理解北极熊的数量与海豹的数量有着密切的关系。如果你再往前走几步,事情就会变得复杂得多,速度也会快得多。让我们这样做吧。随...

全网:架构师研究会 430

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

微服务

英文原文:http://martinfowler.com/articles/microservices.html 翻译原文:http://blog.cuicc.com/blog/2015/07/22/microservices/ 翻译自Martin Fowler的microservices, 翻译于2015年7月22日。翻译尽量贴近原文,减少意译带入的个人观点,如有不当之处,请

魔力鸟的专栏 1554

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

微服务架构

基于微服务构建的应用程序的目标是尽可能的解耦和尽可能的内聚 - 他们拥有自己的领域逻辑,他们的行为更像经典UNIX理念中的过滤器 - 接收请求,应用适当的逻辑并产生响应。虽然本文作者一直是这个相当松散的社区的活跃用户,我们的目的是试图描述我们工作中和我们知道的一些团队的相似努力中的所见所闻。然而,很多单体不需要这个级别的性能优化和常见的更高层次的抽象,也不是DSL的。当然这也不是绝对的,一些变更将会改变服务接口导致一些协作,但一个好的微服务架构的目的是通过内聚服务边界和按合约演进机制来最小化这些协作。

hitbobtomer的博客 167

微服务SpringCloud Alibaba ------(二)微服务架构介绍

翻译自Martin Fowler的 microservices , 翻译于2015年7月22日。翻译尽量贴近原文,减少意译带入的个人观点,如有不当之处,请指正。 在过去几年中,“微服务架构”这一术语如雨后春笋般涌现出来,它描述了一种将软件应用程序设计为一组可独立部署的服务的特定方式。虽然这种架构风格没有明确的定义,但在组织、业务能力上有一些共同的特征:自动化部署,端点智能化,语言和数据的去中心化控制。 “微服务” - 软件...

Xxx的博客 1054

微服务架构 | 服务架构的演进

这也很好理解,我们划分了多个一定颗粒的服务,此时是游离且独立的,我们需要使得这些服务具备互相通讯的功能,我们会想到http或者webservice来进行通讯,也是rpc思想的一种体现,http虽然具备完整的通讯体系和标准的规范,但是满足不了企业的内网和外网之间日益复杂的信息交互。说了单体应用的诸多缺点,并不是我在找茬,它本身不是缺点,是在于面对型应用和超大型应用的出现(单纯应用的庞大,用户数并不庞大),以及用户量剧增时体现出来的不适用性,迫切需要新的且适应的架构方式来解决我们的麻烦。

Huangjiazhen711的博客 164

【微服务架构】复杂系统:微服务与人类

普罗布斯特:我叫凯瑟琳·普罗布斯特。我是谷歌的工程总监。我在这里向你们介绍复杂系统、微服务和人类。让我们从一个可能会有点意外的问题开始。北极熊与微服务有什么关系?乍一看,你可能会说他们之间可能没什么关系。让我们再深入一点。你可能知道,北极熊吃海豹。很容易理解北极熊的数量与海豹的数量有着密切的关系。如果你再往前走几步,事情就会变得复杂得多,速度也会快得多。让我们这样做吧。随着气候的变化,北极熊和海豹...

全网:架构师研究会 269

什么是微服务?

文章出处:http://blog.cuicc.com/blog/2015/07/22/microservices/ 翻译自Martin Fowler的microservices, 翻译于2015年7月22日。翻译尽量贴近原文,减少意译带入的个人观点,如有不当之处,请指正。 在过去几年中,“微服务架构”这一术语如雨后春笋般涌现出来,它描述了一种将软件应用程序设计为一组可独立部署的服务的特定方式。...

zblzbl1991的博客 388

容器编排工具_为您的项目选择正确的容器编排工具

容器编排工具 在过去十年中,使用诸如Docker之类的软件容器一直是最大的行业趋势之一。 迄今为止,重点一直在教育开发社区关于容器技术的功能以及企业如何有效使用容器编排工具的知识。 但是,由于对容器的了解已经超出了事件视界,因为人们的熟悉程度已经提高到这样的程度:组织已经不再只是简单地考虑将容器带入数据中心的想法,而是已经开始实际应用。 但是,在公司实际将软件部署到容器中之前,一个问题仍然是组织应...

服务器编程交流平台 289

美容美发SaaS开发难在哪?业务建模与行业选择是关键

在软件创业领域,SaaS已成为众多开发者追逐的方向,但选对行业往往比选对技术栈更重要。SaaS的本质是通过标准化产品提供可复用的服务,其核心价值在于降低客户交付成本、提升边际收益。然而,像美容美发这类数字化基础偏低、业务规则高度碎片化的行业,业务流程不统一、会员储值规则复杂、提成计算深藏行业暗礁,技术方案虽能支撑功能,却难以覆盖业务建模的复杂性。从预约排班到员工提成,每个模块都需要深度理解门店的真实运营逻辑,而非简单堆叠功能。对于独立开发者和小团队而言,通过小程序定制或SaaS平台切入,需先验证行业付费意愿

weixin_34310369的博客 567

微服务 (Martin Fowloer 译 文)

翻译自Martin Fowler的microservices, 翻译于2015年7月22日。翻译尽量贴近原文,减少意译带入的个人观点,如有不当之处,请指正。 在过去几年中,“微服务架构”这一术语如雨后春笋般涌现出来,它描述了一种将软件应用程序设计为一组可独立部署的服务的特定方式。虽然这种架构风格没有明确的定义,但在组织、业务能力上有一些共同的特征:自动化部署,端点智能化,语言和数据的去中心化控制...

彩色天的博客 1082
上一篇: 【行业观点】如何为微服务选择正确的数据库
下一篇: 持续部署的发展之路
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值