系统
文章平均质量分 90
学习一些系统的基本概念和结构涉及思路
FserSuN
这个作者很懒,什么都没留下…
展开
-
基于消息的分布式事务的概念学习
这里写自定义目录标题1.背景2 事务消息机制3. 本地消息表4. 远程调用支持扩展5. ACID特性分析1.背景在日常业务中存在本地事务操作和MQ共同使用的场景,可能出现任意一个失败,导致数据不一致的问题。常见教程中一个例子:对于订单系统来说,它创建订单的过程中实际上执行了2个步骤的操作:1在订单库中插入一条订单数据,创建订单;1.1 发消息给消息队列,消息的内容就是刚刚创建的订单。1.2 发消息给消息队列,消息的内容就是刚刚创建的订单。2 购物车系统订阅相应的主题,接收订单创建的消息,然翻译 2021-08-22 22:12:26 · 301 阅读 · 0 评论 -
基于数据变更抓取系统进行缓存更新的问题及处理方式学习总结
1 背景对外提供的Web应用为了提高查询速度都会使用缓存来提高查询速度。当数据库发生变更时,我们需要更新缓存数据,从而保证数据库与缓存的数据的最终一致。为了有效监听数据变更,通常会基于数据变更监听系统来获取更新信息,随后发送到下游(可以通过MQ,RPC等方法),最后下游来更新缓存。 常见的数据变更监听系统包括DataBus、Amazon Data Pipeline、阿里DRC。2 基于数据变更系统缓存更新结构下图中关系数据库以Myql为例,MQ以kafka为例,缓存以Redis为例,数据变更抓取系统以原创 2021-04-04 16:29:27 · 296 阅读 · 1 评论 -
元数据驱动数据存储学习总结笔记
1 背景日常后台业务开发都会涉及到数据存储问题。每个需求建立新的存储模型并进行开发是常用的手段。随着需求量增多,思考后也会看到一些共性。在数据存储层面。通过有效的抽象,提炼模型,提高系统开发效率。「元数据驱动的 SaaS 架构技术思考」这篇文章文章讲了通过标准加扩展能力保证数据安全,并支持多租户共性及个性问题构建SaaS产品实现对不同业务模式支持,提供更高效的开发能力。2 常见业务开发模式通常基于贫血模型开发,分析完需求,创建数据表,随后开发数据表的CRUD服务。 数据表通常是和需求中的定义完全对应原创 2021-01-31 18:38:42 · 1389 阅读 · 3 评论 -
单数据库多租户数据隔离学习总结
1 为什么要隔离对不同租户间数据隔离,从而保证数据安全2 三种管理多租户数据的方法多租户数据管理会涉及到数据共享和隔离程度。采用不同的技术业务手段隔离和共享程度也会发生变化。但每种方法也有其相似性。以微软SQL Server为例(包含模式的定义),如果采用了 隔离数据库的方法,隔离程度最高。而采用共享模式的方法,数据共享程度最高。而共享模式的方法,正好是隔离程度与共享度的一种折中。2.1 隔离数据库每个租户一个数据库。租户共享上层应用,但每个租户在底层有自己的库存储数据,同时这些数据与其他所翻译 2020-12-31 21:34:33 · 1559 阅读 · 0 评论 -
配置中心工作原理学习
1 配置中心功能简述日常开发系统,对于常变的信息会通过配置的形式来完成。并在运行时调整配置改变系统运行状态。为了实现这样的能力就需要用到统一配置中心。实现对配置的管理。本文以Java服务端应用为例进行说明。2 配置中心的组成一个完整的配置中心需要具备下列能力:配置服务器提供最终配置的管理能力:将配置存储在不同的存储介质中,并可以快速查找配置变更通知:当配置变更时能通知客户端配置管理平台:外部操作界面,用户可在平台上完成配置增改其它的能力可能还包括权限控制、配置回滚等能力客户端本地代理与原创 2020-12-27 21:08:25 · 925 阅读 · 0 评论 -
Hystrix并发请求合并(Request Collapsing)模式学习
1 背景我们日常开发的系统,对外会提供一些接口。例如提供id可以查询用户个人信息。采用每请求每线程时,系统在处理这类请求时都是来一个请求分派一个处理线程。这些查询都有相似的特性,根据一个同类id查对应的数据。如果是在一个批量查询的场景,如分页查询,我们通常会一次传一批id去查。但在查单次请求的场景下,后台每收到一次请求,就会请求一次存储系统。由于用户每次请求只传一个id,因此乍一看没法像批量查那样减少网络连接数量、请求线程数。受批量查的启发。如果有这种性质相似的单次查询请求。服务端收到了,缓冲一原创 2020-09-30 21:42:15 · 555 阅读 · 0 评论 -
并发调用隔离之BulkHead模式学习
1 BulkHead模式是什么bulkhead指船的防水壁,如下图:当一个防水壁漏水时不会导致整个船沉掉,起到保护作用,提高稳定性。即通过隔离的形式,让不稳定因素限制在某一个小范围内,不会导致整个系统崩溃。在我们日常开发系统,对外提供服务均以HTTP或RPC的形式对外提供。如下图,每种形式在接收到请求后根据业务的不同会在内部调用多个外部依赖来完成业务。一个接口会依赖多个外部远程服务。外部服务由于各种原因,可能不可靠。会出现超时,无响应的情况。这样就会导致调用线程阻塞。如果有大量的这种请求产生,则会原创 2020-09-26 21:29:53 · 1136 阅读 · 0 评论 -
熔断保护之断路器模式概念学习
熔断保护在软件系统中进行远程函数调用是很常见的操作。本地和远程函数调用最大的一个区别是远程调用可能会由于各种原因导致调用失败。例如:远程服务没有响应而导致调用挂起,最终直到超时。更糟糕的是,如果有大量的远程调用都出现问题阻塞,这是可能会导致系统关键资源耗尽,例如,线程或连接对象等。最终使多个系统发生级联失败。为了解决这个问题提出了“断路器模式”来防止这种情况发生。断路器的思想很简单,将调用函数包装在一个断路器对象中,这个包装对象会监控调用失败次数。一旦调用失败次数达到阈值,断路器将会打开,对函数的调用翻译 2020-09-23 08:46:11 · 423 阅读 · 0 评论 -
分布式系统中分布式锁的几种实现方式学习
0 背景RPC(Remote Procedure Call)远程过程调用。不同语言中有很多的框架,比如Java下的dubbo,通用的thrift,gRpc等。本文主要是学习RPC调用通用涉及的流程,不针对具体的RPC框架1 RPC的结构RPC框架一般都由Client和Server两部分组成...原创 2020-08-02 17:40:49 · 247 阅读 · 0 评论 -
WEB系统访问权限管理模型
1 权限系统模型日常开发的系统包含很多功能,但对于不同的用户只能访问不同的功能。因此这就涉及到了权限管理。权限管理都是针对用户进行,因此前置条件是用户登陆到系统中,最终有一个身份,最终根据这个身份来管理。所以这类权限管理应该包含如下实体。资源:我们系统中所包含的各种功能(系统接口、链接等)。例如查看系统访问记录、更新系统用户资料。权限 :可以操作资源的能力。例如查看系统访问记录权限。角色 :一个系统中有很多权限,而实际在访问系统时,可拥有的权限可能是权限集合的一个子集。因此通过角色来关联可拥有的权原创 2020-07-11 13:58:16 · 613 阅读 · 0 评论 -
API网关基本概念学习
背景介绍随着公司规模扩大,业务线越来越多。每个业务线肯定会存在一些重复的系统能力。为了提高开发效率,常会将一些公共的能力沉淀,日后复用,从而避免重复工作,提升研发效率。随着微服务的流行,开始出现API网关的概念。介于外部用户与内部系统之间的,作为一个入口,实现对外部请求的协议转换、流量控制、接口监控、鉴权等功能。而这些能力是不同服务所通用,最终实现能力复用,提升研发管理效率。在没有统一服务的时候,我们自己会独立开发一个应用层,介于外部客户端和内部服务见。实现协议转换、流量控制、接口监控、鉴权等功能。原创 2020-07-12 16:56:44 · 454 阅读 · 0 评论