DongYuanxin's Blog

计算高可用:分散计算压力

概述 设计复杂度体现在「任务管理」方面。当任务在服务器 A 上执行失败,如何分配到新服务器执行。 主备 计算高可用的主备架构,不需要数据复制。 对于不同的备机状态,可以细分成冷备和热备: 冷备:备机需要人工启动 热备(推荐):备机已经启动,不对外提供服务 主从 需要进行任务分配,部分给主机,部分给从机。 集群 分为 2 类:对称集群、非对称集群。 对称...

数据存储高可用:数据冗余的多种做法

存储高可用通过数据复制,来实现数据冗余,进而实现高可用。 难点在于明确节点的职责、数据复制策略、如何处理意外(复制延迟、中断)。 双机架构 主备复制 备机不提供读写服务。当主机挂掉后,人工升级备机为主机。 一般用于内部系统,例如学生管理、员工管理等,数据变更频率低,可以人工方法补全。 主从复制 从机对外提供读服务。客户端需要感知主从关系,一些业务数据需在代码中到从机上读...

可扩展设计:分层架构、SOA、微服务

分层架构-面向流程 什么是分层架构? 它是将整体系统拆分成 N 个层次,每个层次有独立的职责,多个层次协同提供完整的功能。 常见的分层架构有哪些? MVC、TCP/IP协议栈、Linux系统 分层架构核心是什么? 保证隔层之间边界明显,层与层之间依赖稳定,支撑快速扩展。 分层架构的优缺点是什么? 优点: 强制约束,代码规范 简化系统...

理解操作系统里阻塞/非阻塞、异步/非异步

阻塞/非阻塞 与 同步/异步 在开始前,首先要了解阻塞/非阻塞、同步/异步这 2 组概念的区别。 对于阻塞/非阻塞:说的是程序等待结果时的状态。阻塞是结果返回前,程序会挂起;非阻塞是是程序不会一直挂起,先去做别的事情。 对于同步/异步:在操作系统处理 I/O 的时候,阻塞和非阻塞都是同步的 I/O。只有少数的 API 才是异步 I/O。 对于这 2 组概念时,要注意讨论的上下文。...

高性能实践总结:读写分离、分库分表、缓存设计

针对数据库集群 读写分离:将访问压力分散到集群的多个节点,没有分散存储压力 分库分表:分散访问压力,分散存储压力 读写分离 架构图: 其中,主机负责读写,复制数据到从机,从机负责读。引出 2 个问题:复制延迟、分配机制。 对于「复制延迟」,解决思路: 写操作后的读操作,都发给主机。比如注册账号后,立即登陆(读操作),请求主机。 二次读取。从机读取失败后,...

基于 Next.js 和云开发 CMS 的内容型网站应用实战开发

引言 随着腾讯云云开发能力的日渐完善,有经验的工程师已经可以独立完成一个产品的开发和上线。但网上云开发相关的实战文章非常少,很多开发者清楚云开发的能力,但是不清楚如何在现有的开发体系下引入云开发。 本文从云开发团队开发者+能力使用者的角度,以云开发官网 (http://cloudbase.net/) 的搭建思路为例,分享云开发结合流行框架与工具的实战经验。 涉及到的知识点有: ...

微服务架构下,名字服务的使用体验和功能设计

背景 本文记录下接入微服务时,名字服务的使用体验以及名字服务的相关知识概念。作为“消费”侧,理解概念以帮助熟练使用工具即可,并不需要深入其中的原理。 使用体验 在做网关相关需求时,用到了名字服务。第一次接触名字服务,直接通过 sdk 调用 api,传入服务的名字,就能拿到有效的服务地址(由 ip+host 组成)。 在代码中,可以去掉之前的名称 => ip映射相关的配置,对...

JS SDK 微内核设计实战

认识微服务架构 定义:微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Architecture),是一种面向功能进行拆分的可扩展性架构,通常用于实现基于产品的应用。 微服务架构内部包括核心系统和插件模块: 核心系统:负责与业务功能无关的通用功能,例如插件通信、插件管理等 插件系统:负责某个具体业务功能,例如图像检测、短信登录...