设计一种100%可用性服务的架构--适用于任何系统(B/S,C/S)[中英文版本]

简介: 设计一种100%可用性服务的架构--适用于任何系统(B/S,C/S)[中英文版本] -- How to design an architecture which have 100 percent availability service?   版权所有,转载请注明出处http://blog.

设计一种100%可用性服务的架构--适用于任何系统(B/S,C/S)[中英文版本]

-- How to design an architecture which have 100 percent availability service?

 

版权所有,转载请注明出处http://blog.csdn.net/yangzhenping,谢谢!

本篇原创非译文,有需要设计和部署这种架构的,请私信我,谢谢!

最近一直在想怎样设计一种100%可用性的服务,于是有了最初的版本:

如上图,有多个备份的网页服务器和数据库服务器,还有一台同步服务器把主数据库A中的数据同步到其他副本从服务器

问题来了:

当数据库服务器A还没来得及被DBSync  Server同步到B上,这时A宕机了,我们可能会丢失部分数据。

那我们怎么才能不丢失数据呢?

As above graph, there are some backup web servers and database servers, also have one sync server to sync data from master database server A to other slave database servers.

Then problem comes:

We may lost some data when some data in DBS A didn’t sync toDBS B and it is outage!

How can we NOT to lose any data?

 

根据上面这个设计所碰到的问题,我又设计了下面的架构,当然这个架构还可以继续提升,文章结尾再说哈:

Based on above problem, I design another architecture like below, of course we can improve it again, talk it at the end of this article:

网页服务器A提交一个SQL脚本请求(包含requestId,它是一种Guid类型)给主数据库服务器A, A的DbSync Service会将这个SQL脚本请求同步给副本服务器B,然后再在A上执行这个SQL脚本,最终把结果返回给网页服务器A。

同样数据库服务器接受到来自A的请求,会同步这个SQL脚本到下一个副本服务器C上,然后执行结果返回给RCS结果比较服务器(所有的副本服务器的DBSync  Service都会返回结果给RCS)。

RCS结果比较服务器会根据同一个requestId比较主数据库服务器执行的结果和副本服务器执行的结果:

如果主DBS执行成功,副本执行失败,RCS会重新在副本上重新执行直到成功。

如果主DBS执行失败,副本也执行失败,RCS不会做任何事。

如果主DBS执行失败,副本执行成功,我们有两种选择:

选择一:RCS在主DBS上重新执行直到成功,然后通知用户他之前提交的失败任务现在成功了。

选择二:RCS在副本服务器上回滚已经成功的这个SQL脚本,在主DBS上不做任何事。

Web Server A request a SQL script (Contains requestId, it isa Guid type) to Master DBS A, in DBS A its sync service will sync the SQLscript to Slave B, then DBS A’s Sync service will do the SQL script and thenreturn the result to Web Server A.

Also DBS B’s sync service receive the SQL script will syncthe SQL script to the next Slave DB server C, then execute the SQL script andreturn toResult Compare Server (allslave DB server’s DB sync service will return the result toResult Compare Server).

Result Compare Server will compare the result usingrequestId, compare the Mater’s requestId result to Slave’s requestId result:

If Master execute pass, but Slave execute failure, RCS willrerun until pass on Slave.

If Master execute fail, and Slave execute failure, RCS willdo nothing on Slave.

If Master execute fail, but Slave execute pass,  

Option 1, RCS will rerun on Master until pass and notifyuser about this request pass when it pass.

Option 2, RCS will roll back the SQL script action on Slave,and do nothing on Master.

 

文章的结尾顺便说下,这个可以继续提升为可用性更高的服务,就是搭建一台RCS的备份服务器。

本文主要提供一种100%可用性架构是针对网页服务器和数据库服务器,当然您也可以把它应用于C/S架构上。

At the end of this article, you can improve it to be a better service, that's deploy another RCS backup server.

This article provide a way to deploy 100% high availability web server and database server, of course, you can also use it in C/S, not only B/S, thanks.

版权所有,转载请注明出处http://blog.csdn.net/yangzhenping,谢谢!

目录
相关文章
|
SQL 前端开发 关系型数据库
如何开发一套研发项目管理系统?(附架构图+流程图+代码参考)
研发项目管理系统助力企业实现需求、缺陷与变更的全流程管理,支持看板可视化、数据化决策与成本优化。系统以MVP模式快速上线,核心功能包括需求看板、缺陷闭环、自动日报及关键指标分析,助力中小企业提升交付效率与协作质量。
1032 29
|
12月前
|
数据采集 机器学习/深度学习 运维
量化合约系统开发架构入门
量化合约系统核心在于数据、策略、风控与执行四大模块的协同,构建从数据到决策再到执行的闭环工作流。强调可追溯、可复现与可观测性,避免常见误区如重回测轻验证、忽视数据质量或滞后风控。初学者应以MVP为起点,结合回测框架与实时风控实践,逐步迭代。详见相关入门与实战资料。
|
前端开发 JavaScript BI
如何开发车辆管理系统中的车务管理板块(附架构图+流程图+代码参考)
本文介绍了中小企业如何通过车务管理模块提升车辆管理效率。许多企业在管理车辆时仍依赖人工流程,导致违章处理延误、年检过期、维修费用虚高等问题频发。将这些流程数字化,可显著降低合规风险、提升维修追溯性、优化调度与资产利用率。文章详细介绍了车务管理模块的功能清单、数据模型、系统架构、API与前端设计、开发技巧与落地建议,以及实现效果与验收标准。同时提供了数据库建表SQL、后端Node.js/TypeScript代码示例与前端React表单设计参考,帮助企业快速搭建并上线系统,实现合规与成本控制的双重优化。
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
1432 52
|
机器学习/深度学习 人工智能 缓存
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
本文提出面向边缘通用智能的多大语言模型(Multi-LLM)系统,通过协同架构、信任机制与动态编排,突破传统边缘AI的局限。融合合作、竞争与集成三种范式,结合模型压缩、分布式推理与上下文优化技术,实现高效、可靠、低延迟的边缘智能,推动复杂场景下的泛化与自主决策能力。
925 3
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
1914 23
|
消息中间件 数据采集 NoSQL
秒级行情推送系统实战:从触发、采集到入库的端到端架构
本文设计了一套秒级实时行情推送系统,涵盖触发、采集、缓冲、入库与推送五层架构,结合动态代理IP、Kafka/Redis缓冲及WebSocket推送,实现金融数据低延迟、高并发处理,适用于股票、数字货币等实时行情场景。
1832 3
秒级行情推送系统实战:从触发、采集到入库的端到端架构
|
前端开发 API 定位技术
如何开发车辆管理系统中的用车申请板块(附架构图+流程图+代码参考)
本文详细解析了如何将传统纸质车辆管理流程数字化,涵盖业务规则、审批流、调度决策及数据留痕等核心环节。内容包括用车申请模块的价值定位、系统架构设计、数据模型构建、前端表单实现及后端开发技巧,助力企业打造可落地、易扩展的车辆管理系统。
|
12月前
|
存储 人工智能 搜索推荐
拔俗AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教融合大语言模型、教育知识图谱、多模态感知与智能体技术,重构“教、学、评、辅”全链路。通过微调LLM、精准诊断错因、多模态交互与自主任务规划,实现个性化教学。轻量化部署与隐私保护设计保障落地安全,未来将向情感感知与教育深度协同演进。(238字)
1383 0
|
12月前
|
机器学习/深度学习 人工智能 搜索推荐
拔俗AI学伴智能体系统:基于大模型与智能体架构的下一代个性化学习引擎
AI学伴智能体系统融合大模型、多模态理解与自主决策,打造具备思考能力的个性化学习伙伴。通过动态推理、长期记忆、任务规划与教学逻辑优化,实现千人千面的自适应教育,助力因材施教落地,推动教育公平与效率双提升。(238字)
1343 0