首页 > 数据库 > 数据库开发技术 > 架构师的视角:积累沉淀,知行合一

远程服务调用
核心概念:
数据表示:如何在不同系统间标准化数据格式。
数据传递:确保数据可靠、高效地在客户端和服务器间传输。
方法表示:如何唯一标识并调用远程方法。
模拟进程间方法调用:RPC旨在使远程服务器上的函数调用感觉就像本地函数调用一样,隐藏网络通信的复杂性。
基本问题:
发展方向:
面向对象发展:支持复杂的数据类型和对象。
性能发展:优化网络通信和数据处理的效率。
简化发展:简化使用和部署过程,降低学习和使用的门槛。
框架多样性:不同的RPC框架针对这些发展方向有不同的实现和优化,因此市场上存在多种RPC框架。
RESTful 服务
核心概念:
面向资源编程:将问题空间中的数据对象视为核心,关注于资源的状态和状态转换。
网络适应性:REST是基于网络的分布式系统的理想交互方式,适应当代网络主流的交互方式。
特点:
无状态:每个请求包含所有必要信息,服务器不需要保存会话状态。
统一接口:标准化的方法(如GET、POST、PUT、DELETE)来操作资源。
可缓存:响应可以被缓存以提高性能。
适用场景:REST适用于需要大规模分布式系统,特别是需要广泛兼容性和可扩展性的Web服务。
对于 REST,我的第一印象就是服务端无状态,有利于水平扩展,但更多的是停留于具体的技术层面。过程如果有意义的话,一定会产生一个结果,这个结果就是资源的状态发生了转移(幂等前提下的重试不算),但是过程的细节更多,所以抽象程度无法做到向面向资源看齐。
在一个过程中,我们可以对有关联关系的不同层次与结构的资源同时进行处理,但是面向资源却不容易做到。我能想到的例子是转账操作,同时操作两个资源(即账户),而且要保证事务的 ACID。
在转账的过程中要处理很多异常情况,尤其是涉及到多方交易的时候,所以写这样的交易就非常复杂,容易出错。如果用面向资源的角度去考察,可以看成是对三个资源的操作:转出账户、转入账户以及事务。
这里把事务列为单独的资源,是为了呼应上面提到的一个资源状态变化引起的关联资源的变化。如果转账操作利用 TCC(Try-Confirm-Cancel)的方法,我觉得就是一种更偏向于面向资源的做法,每次只改变一个资源的状态。如果某个关联资源的状态改变失败,就对它发起一个逆操作(比如冲正)。
这样可以做到很高的并发,在做到保序性的前提下,做差错处理也很简单。相当于把一个复杂操作分解成了多个简单操作,这样开发起来也很快,很容易复用。有点类似 CISC 和 RISC 指令集的关系。
事务处理
本地事务、全局事务、共享事务以及分布式事务是数据库事务管理的不同类型,它们各自应对特定的应用场景和需求。以下是对这些事务类型的另一种表述方式:
概念:本地事务仅涉及单一数据库系统内的操作,不需要全局事务管理器的介入。
ARIES理论:该理论采用Write-Ahead Logging(预写日志)方法,确保了日志记录的效率和严谨性。通过分析、重做和回滚阶段,实施了STEAL和NO-FORCE策略,从而优化了故障恢复过程。
隔离性与锁:不同的隔离级别(如幻读、脏读等)实际上是锁在不同阶段的应用结果,锁是维持隔离性的关键。
定义:适用于单个服务访问多个数据源的场景。
实现:通常使用两段式或三段式提交模式,以确保ACID的强一致性。
局限性:这种追求强一致性的目标使得全局事务在复杂度、吞吐量和使用效率方面存在挑战。
描述:指多个服务共享同一个数据源的情况。
现状:尽管共享事务在现代应用中较少见,但理解其概念有助于深入了解其他事务类型。
主流趋势:现代系统设计趋向于采用强调BASE(基本可用、软状态、最终一致性)的弱一致性事务模型,即分布式事务。
特点:适用于多个服务同时访问多个数据源的场景。
设计挑战:在分布式系统中,不存在完美的事务解决方案。设计者必须根据具体场景,选择恰当的解决方案来平衡一致性和可用性。
透明多级分流系统
客户端缓存、域名解析、传输链路、内容分发网络(CDN)、负载均衡和服务端缓存是网络系统中的关键技术组件,它们各自扮演着不同但重要的角色。下面是对这些概念的重新表述:
类型:包括状态缓存、强制缓存和协商缓存。
作用:通过减少重复的数据请求,节省网络带宽,是提高网络应用并发能力的基本策略。
功能:将用户友好的域名地址转换为计算机能够理解和处理的IP地址。
重要性:对于基于互联网的系统来说,域名解析是一个必不可少的步骤。
关联:与客户端紧密相连的传输优化机制。
重点:不仅仅是内容的传输,还包括高效和无状态的传输目标。
进步:HTTP/2引入了多路复用和头压缩等功能,显著提高了传输效率。
工作流程:包括路由解析、内容分发、负载均衡和支持的应用内容。
优势:提高性能、增强安全防御和资源管理,且对开发者来说非常透明。
职责:决定处理用户请求的服务并进行请求转发。
应用:在集群部署的环境中,负载均衡器作为技术组件,统一处理向多台机器的请求调度。
目的:减少重复资源请求,降低服务器负担,作为分流手段的一部分。
重要性:是提升服务处理能力和效率的关键技术。
安全架构
在网络安全和系统设计中,认证、授权、凭证、保密、传输和验证是六个关键方面,它们各自解决不同的安全问题。以下是对这些概念的另一种表述:
目的:确定用户的真实身份。
方法:包括基于通讯信道、通讯协议和通讯内容的认证方式。
问题:决定用户可以访问和操作哪些资源。
解决方案:使用OAuth 2.0解决跨系统的授权问题;采用基于角色的访问控制(RBAC)来管理授权的细节。
作用:确保用户承诺的真实性和不可否认性。
实现:Cookie-Session机制和无状态的JWT,各适合于不同的应用场景。
关注点:保护敏感数据不被未授权访问或滥用。
考虑因素:实现更高级别的安全需要更多的资源和努力。
目标:确保网络传输的数据安全,防止被第三方窃听、篡改或冒充。
技术:包括哈希摘要、对称和非对称加密,以及数字证书和传输安全层(TLS)等。
重要性:确保提交的数据不会影响系统的稳定性和数据的一致性。
平衡:过少的验证可能影响数据质量,而过多的验证可能导致代码冗余甚至产生不良影响。
原文作者:二进制跳动;如有侵权,请联系管理员删除。