Disk, Buffer, Files(一) 现如今的存储,仍然以磁盘为主,因为其具有良好的经济效益,从读写速度上来看:Rigister > Buffer(L1, L2, L3 Cache) > RAM > SSD > Magetic Disk,经济效益反之 DBMS是有很多 layers构成的(分层组织),层层叠加,上层通过调用 Api形式抽象下层复杂性,透明化底层实现,实现sql的声明式定义. SQL Client:管理客户端连接,登录权限校验等 Query Parsing & …
Disk, Buffer, Files(一) 现如今的存储,仍然以磁盘为主,因为其具有良好的经济效益,从读写速度上来看:Rigister > Buffer(L1, L2, L3 Cache) > RAM > SSD > Magetic Disk,经济效益反之 DBMS是有很多 layers构成的(分层组织),层层叠加,上层通过调用 Api形式抽象下层复杂性,透明化底层实现,实现sql的声明式定义. SQL Client:管理客户端连接,登录权限校验等 Query Parsing & …
CS 186 这是一门 UCB开设的有关数据库的一门课程,适用于本科阶段自学,课程相关文档:http://cs186berkeley.net/fa20/ 本门课来讲述如何开发系统去高效管理、维护、处理,与数据交互处理、理解数据,并且在非常大的数据集上以高效的方式来完成所有操作,即讲述开发系统背后需要遵循的原则 现如今,数据增长的速度远快于计算增长的速度,并且在未来计算的关键瓶颈,即计算管道,在于数据处理,大规模的数据系统成为了现代计算的核心(关于数据的言论很多,甚至衍生出了新的课程:数据科学专业) 对于这门课,on…
Lab1 6.824 Lab 1: MapReduce (mit.edu) 去年中旬就知道有这门课了,那时一直忙着准备实习,以及入职后发现忙得一批,最近实习离职了,总算空出了时间,前段时间总算把 Lab1写出来了,与此同时论文 ddl,这段时间在疯狂刚论文,一期总算是搞完了,现在偷闲出时间总结下 Lab1。 Lab1主要任务就是要我们自己去构建一个 MapReduce FrameWork,FrameWork在启动时会启动若干副本,其中包含了 Coordinator节点以及众多 Worker节点,而我们要去做的便是去…
gc Java 9之后 G1成为了默认的垃圾收集器 收集器在设计时考虑到不同维度的优化,因为它们的目标不同 CMS也是针对垃圾低延时设计的收集器,其在 Java 14中已被抛弃 对于 G1收集器,它有点像介于延迟敏感与吞吐量敏感之间 ZGC是 Java11时引入的 GC,其对于实现低延迟的应用程序具有巨大的价值 how to design a gc? 不同的 gc可以针对其设计指标进行专项设计,以 OpenJdk为例浅谈如何去设计一个 GC 任何实践之前,都需要有强有力的理论支持,设计一个 gc同样如此 OpenJ…
一致性 hash 一致性哈希是一种特殊的 hash,由于其均衡性、持久性的特点,被广泛应用于负载均衡领域,如 Nginx就有去使用一致性哈希来作为其集群负载均衡的方案 传统 hash存在什么问题? 在集群节点中,当使用传统的 hash方式去路由请求时,可以计算出请求对应的扰动值,根据路由寻找算法匹配到指定节点去执行,但这是存在问题的,当节点新增时并不会对之前的请求造成影响,但节点丢失时,之前计算出来的 hash值实际上就失效了,因为其路由寻址基数减少了 (这会导致计算定位到的桶位发生了变化),如果说集群中节点状态是…
全局唯一 ID 系统全局唯一 ID是我们设计一个系统时常会遇到的一个问题,当然不仅限于系统设计,在开发时遇见也不少:比如全局唯一地去标识某个流程,某个事物时,就有需要;生成 ID的方法有很多,但我们通常希望它是高效、快速、低占用的,以来适应不同的场景、需求以及特性要求 目前感觉一个良好的实现策略便是:SnowFlake 雪花,一种浪漫的蕴意:你永远无法在大自然中找到两片一模一样的雪花! Java中使用 long来去存储基于 snowflake生成的 id SnowFlake能做到分布式下 ID的全局唯一,其核心思想…
FastThreadLocal JDK中已经引入了 ThreadLocal,为什么 netty还要基于此进行增强造出一个 FastThreadLocal(FTL),对比之下又解决了什么痛点? 在 JDK中每个线程都会有一个 ThreadLocalMap,其采用了懒式创建法,当线程第一次访问此变量时会去创建此 map JDK中此 map基于探针碰撞的方式,如果未找到空闲的 slot,会继续往后找,而在 hash冲突严重的情况下,这种方式效率较低 而 ftl通过了分配 index的方式解决了此问题,其基于 Atomic…
租户 多租户区分于多用户 现代软件一般属于多用户的应用,即同一台机器上同一个软件允许为不同的用户建立各自的账户,也允许拥有这些账户的用户同时登陆此计算机进行各自的操作,此时也就涉及到了计算机用户以及资源的调度 租户则是和组织进行挂钩的,许多组织会去使用同一个应用程序,组织之间相互隔离,允许各自组织里的用户去访问应用程序,并且此用户访问到的数据也只能是其所属组织里头的数据 多租户其实也就是逻辑隔离的一种,多租户技术的存在允许不同的租户去使用同一套应用架构,对供应商而言这一定程度上减少了环境建置的开销:硬件的成本、操作…
分布式作业调度 作业,其实究根到底就是任务,作业调度,对应的便是任务的执行 在项目开发时,我们可能会存在这类需求:需要定时去做些任务、需要在特定的时间点去干特定的事情 Java中有去提供两个定时任务类供我们去实现此需求:Timer、ScheduledExecutorService,前者不想过于述说,只需要知道其是在单个线程中去执行的定时任务,可想而知,当定时任务量很多时,任务会出现串行执行的场景,这也是使用 Timer存在的坑;其次便是 ScheduledExecttorService的出现友好的去解决了 Time…
EventBus 消息总线,类似于中间件的存在,本身机制类似于消息订阅机制 将事件发送给监听器,并且允许监听器在总线上注册自己的方法 总线允许组件以发布-订阅的方式进行通信,而不需要组件显式地去相互注册(以此来了解彼此);它专门设计用于显式注册来替代传统的 Java进程中的事件分发;它并不是一个通用的发布-订阅系统,也不是用于进程间的相互通信 Posting Events 要发布事件,只需要 post(Obejct)方法提供事件对象;EventBus实例会根据事件类型并将其路由到已经注册的监听器上去,事件将基于本身…
RateLimiter 限流是保护高并发系统的三大利器之一,另外两个便是缓存与降级 顾名思义,限流即限定一定时间内处理请求的数量,限流业务场景十分普遍,如限定连接池指定时间内可获取的数量,限制瞬时并发数,也可以相应地来去做些预热操作,实现方案很多,Java中 Semaphore便是一种不错的可行方案 而 Guava中的 RateLimiter便是一种限流方案的实现,其实现思想便是基于令牌桶算法:往固定大小的一个桶中按指定速率存放令牌,桶有容量限制,溢出的令牌会被拒绝或者丢弃,到来的每一个网络请求都需要获取到桶中的一…
Guava Google开源的 Guava框架,本身其实是对 JDK内部一些并发容器、工具的优化,源码方面也是比较值得去学习的 Google Guava的维护团队推崇敏捷开发,持续迭代以及版本的维护,主要维护者便是 《Effective Java》一书作者 Guava库其实是锦上添花的存在,正确使用 Guava可以使得我们代码开发更加简洁,但注意一点,不要为了使用 Guava而使用 Guava,适用前提仍是实用性为主 一开始此 Library并不叫 Guava来着,原名 Google-Collections Uti…
Reactor中无界队列 SpscLinkedQueue Reactor为我们提供了一下无界队列,其本身又是怎么去实现 "无界"的,我们对此比较好奇 @SuppressWarnings("rawtypes") static final Supplier SMALL_UNBOUNDED = () -> Hooks.wrapQueue(new SpscLinkedArrayQueue<>(SMALL_BUFFER_SIZE)); public static fi…
generate挂钩函数式 使用 generate也可以快速去生成响应式流,从 generate进行剖析,我们也可以看到函数式编程的影子 public static <T> Flux<T> generate(Consumer<SynchronousSink<T>> generator) { Objects.requireNonNull(generator, "generator"); return onAssembly(new FluxGenera…
一 | 二 | 三 | 四 | 五 | 六 | 日 |
---|---|---|---|---|---|---|
« 3月 | ||||||
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
COPYRIGHT © 2020 良夜的博客. ALL RIGHTS RESERVED.
This blog has been running:
本站由
This site is protected by wp-copyrightpro.com