学习笔记打卡
文章平均质量分 52
李九三
一个人能够走多远,关键在于与谁同行
展开
-
《周志明的软件架构课》学习笔记 Day16
主动学习服务端缓存为系统引入缓存的理由从开发角度来说,引入缓存会提高系统的复杂度,因为你要考虑缓存的失效、更新、一致性等问题(硬件缓存也有这些问题,只是不需要由你来考虑,主流的 ISA 也都没有提供任何直接操作缓存的指令);从运维角度来说,缓存会掩盖掉一些缺陷,让问题在更久的时间以后,出现在距离发生现场更远的位置上;从安全角度来说,缓存可能泄漏某些保密数据,这也是容易受到攻击的薄弱点。理由有第一种,为了缓解 CPU 压力而做缓存。第二种,为了缓解 I/O 压力而做缓存。一种是以 Guava原创 2023-02-03 23:35:26 · 723 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day15
主动学习负载均衡集群部署的特点信息系统都需要利用多台机器来扩展服务能力,希望用户的请求不管连接到哪台机器上,都能得到相同的处理。必须对用户一侧保持足够的透明,即使请求背后是由一千台、一万台机器来共同响应的,这也都不是用户会关心的事情,用户需要记住的只有一个域名地址而已。负载均衡器Load Balancer四层负载数据链路层负载均衡网络层负载均衡应用层负载均衡七层负载均衡与实现轮循均衡(Round Robin)权重轮循均衡(Weighted Round Robin)随机均衡(Ran原创 2023-02-03 00:19:23 · 397 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day14
主动学习连接Keep-Alive 机制它的原理是,让客户端对同一个域名长期持有一个或多个不会用完即断的 TCP 连接。典型做法是在客户端维护一个 FIFO 队列,每次取完数据之后的一段时间内,不自动断开连接,以便获取下一个资源时可以直接复用,避免创建 TCP 连接的成本。HTTP/2 的多路复用,压缩CDN内容分发网络简单理解的话,CDN 其实就是做“内容分销”工作的。路由解析内容分发网络将用户请求路由到它的资源服务器上,其实就是依靠 DNS 服务器来实现的。内容分发在 DNS 服务器的协原创 2023-02-01 23:18:34 · 289 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day13
主动学习浏览器的客户端缓存背景:当万维网刚刚出现的时候,浏览器的缓存机制差不多就已经存在了。在 HTTP 协议设计之初,人们便确定了服务端与客户端之间“无状态”(Stateless)的交互原则,即要求客户端的每次请求是独立的,每次请求无法感知、也不能依赖另一个请求的存在,这既简化了 HTTP 服务器的设计,也为它的水平扩展能力留下了广阔的空间。但无状态并不是只有好的一面。因为客户端的每次请求都是独立的,服务端不会保存之前请求的状态和资源,所以也不可避免地导致它会携带重复的数据,造成网络性能的降低。那原创 2023-01-31 23:19:31 · 62 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day12
主动学习理解透明多级分流系统的设计原则整个链路请求:请求首先是从浏览器出发,在 DNS 的指引下找到系统的入口,然后经过了网关、负载均衡器、缓存、服务集群等一系列设施,最后接触到了系统末端存储于数据库服务器中的信息,然后再逐级返回到用户的浏览器之中。第一个原则是尽可能减少单点部件,如果某些单点是无可避免的,则应尽最大限度减少到达单点部件的流量。恰如其分地引导请求分流至最合适的组件中,避免绝大多数流量汇集到单点部件(如数据库),同时依然能够、或者在绝大多数时候能够保证处理结果的准确性,在单点系统出现故原创 2023-01-30 23:18:33 · 141 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day11
1.主动学习TCC事务TCC(Try-Confirm-Cancel)TCC 方案,它天生适合用于需要强隔离性的分布式事务中,它是一种业务侵入性较强的事务方案,要求业务处理过程必须拆分为“预留业务资源”和“确认 / 释放消费资源”两个子过程Try:尝试执行阶段,完成所有业务可执行性的检查(保障一致性),并且预留好事务需要用到的所有业务资源(保障隔离性)。Confirm:确认执行阶段,不进行任何业务检查,直接使用 Try 阶段准备的资源来完成业务处理。注意,Confirm 阶段可能会重复执行,因此需要原创 2023-01-29 20:24:00 · 528 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day10
1.主动学习事务事务处理中的本地事务(单个服务、单个数据源)、全局事务(单个服务、多个数据源)和共享事务(多个服务、单个数据源),这一讲我们将聚焦于事务处理中最复杂的分布式事务(多个服务、多个数据源)。CAP 理论AP 系统目前是分布式系统设计的主流选择,大多数的 NoSQL 库和支持分布式的缓存都是 AP 系统。因为 P 是分布式网络的天然属性,你不想要也无法丢弃;而 A 通常是建设分布式的目的,如果可用性随着节点数量增加反而降低的话,很多分布式系统可能就没有存在的价值了(除非银行这些涉及到金钱交原创 2023-01-28 23:28:19 · 315 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day9
1.主动学习全局事务与共享事务全局事务(Global Transactions)共享事务(Share Transactions)XA 协议为了解决分布式事务的一致性问题,而提出的事务处理框架XA 接口是双向的,是一个事务管理器和多个资源管理器之间通信的桥梁,通过协调多个数据源的动作保持一致,来实现全局事务的统一提交或者统一回滚。现在,我们在 Java 代码中还偶尔能看见的 XADataSource、XAResource 等名字,其实都是源于 XA 接口。两段式提交1:需要有两个前提条件第一原创 2023-01-27 22:28:25 · 126 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day8
1.主动学习本地事务如何实现隔离性隔离性隔离性保证了每个事务各自读、写的数据互相独立,不会彼此影响。只从定义上,我们就能感觉到隔离性肯定与并发密切相关。如果没有并发,所有事务全都是串行的,那就不需要任何隔离,或者说这样的访问具备了天然的隔离性。事务加锁总结: 1、事务一定会对数据加锁(读锁,写锁,范围锁)。锁不一定都是排它的,但只要当前事务无法对数据加锁就意味着有并发的其它事务对该数据持有某种锁,当前事务就只能等待锁的释放。锁的释放一般情况下都是在事务结束(提交或回滚)时释放,也有的情况下是在语句执原创 2023-01-24 22:37:36 · 130 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day7
1.主动学习本地事务如何实现原子性和持久性事务处理事务处理几乎是每一个信息系统中都会涉及到的问题,它存在的意义就是保证系统中的数据是正确的,不同数据间不会产生矛盾,也就是保证数据状态的一致性(Consistency)。理论上要达成一致性的目标,需要三个方面来共同努力:原子性(Atomic):在同一项业务处理过程中,事务保证了多个对数据的修改,要么同时成功,要么一起被撤销。隔离性(Isolation):在不同的业务处理过程中,事务保证了各自业务正在读、写的数据互相独立,不会彼此影响。持久性(Du原创 2023-01-23 22:34:35 · 366 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day6
1.主动学习RESTful 服务REST概念:资源,表征,状态,转移。服务端与客户端分离(Client-Server)无状态(Stateless)可缓存(Cacheability)分层系统(Layered System)统一接口(Uniform Interface)按需代码(Code-On-Demand)备注摘自极客时间 - 周志明老师的公开课《周志明的软件架构课》 <- 极其推荐大家阅读~>2. 写在最后REST 与 RPC 在思想上存在差异的核心,是抽象的目标不一样,原创 2023-01-22 22:47:20 · 783 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day5
1.主动学习远程服务调用(Remote Procedure Call,RPC)RPC 是我们构建分布式系统的最基本前置条件。这篇文章我们来了解周志明老师笔下的 RPC。RPC 出现的最初目的,就是为了让计算机能够跟调用本地方法一样,去调用远程方法。了解了 RPC 的演进后,我们就需要思考 RPC 的三个基本问题如何表示数据:将交互双方涉及的数据,转换为某种事先约定好的中立数据流格式来传输,将数据流转换回不同语言中对应的数据类型来使用。这个过程说起来比较拗口,但相信你一定很熟悉它,这其实就是序列化原创 2023-01-20 21:54:04 · 114 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day4
《周志明的软件架构课》学习笔记 Day4原创 2023-01-19 22:03:22 · 170 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day3
《周志明的软件架构课》学习笔记 Day3原创 2023-01-18 21:22:14 · 109 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day2
1.主动学习学习技术的演进,对深入理解技术设计的思路有极大的帮助。原始分布式时代制定了*分布式运算环境 DCE *的分布式技术体系DCE 包括了一整套完整的分布式服务组件的规范与实现。但那个时代机器硬件限制,要考虑远程调用成本,所以不得不做出妥协原始分布式时代的教训 某个功能能够进行分布式,并不意味着它就应该进行分布式,强行追求透明的分布式操作,只会自寻苦果。远程服务与本地服务的差异性“调用远程方法”与“调用本地方法”尽管只是两字之差,但要是想能同时兼顾到简单、透明、性能、正确、鲁棒(Rob原创 2023-01-17 21:25:38 · 102 阅读 · 0 评论 -
《周志明的软件架构课》学习笔记 Day1
《周志明的软件架构课》学习笔记 Day1原创 2023-01-16 22:05:57 · 886 阅读 · 0 评论