ZooKeeper

SpringCloud与Dubbo的比较

元气小坏坏 提交于 2020-10-17 01:38:08
Dubbo 一、dubbo简介 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。 Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 现已发展成为Apache的顶级孵化开源项目,详见官网: http://dubbo.apache.org/en-us/ 二、dubbo组织架构图 官网的dubbo组织架构图 详细介绍 1、Registry:服务注册与发现中心,作为服务提供者和消费者注册与发现的中心。 2、Provider:服务提供者,在注册中心注册作为服务提供的一方,发布服务到服务注册中心。 3、Consumer:服务消费者,通过注册中心协调,订阅可用的已注册的服务。 4、Container:服务运行容器,独立的容器类似于tomcat/jboss的作用,作为服务运行的容器。 5、Monitor:dubbo的监控中心,用来显示接口暴露、注册情况,也可以看接口的调用明细,调用时间等。 三、dubbo的优势 单一应用架构,当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的 数据访问框架(ORM)是关键。 垂直应用架构,当访问量逐渐增大

全面详细对标P7岗,这份即将爆火的Java突击手册,github已标星81.6k

旧街凉风 提交于 2020-10-16 11:32:47
Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性: 封装、继承、多态 。此外还有 泛型、反射 的特性, 很多框架的技术 都依赖它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的动态代理也是利用反射实现的。 此外还有 Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在 Web 开发中无处不在,也是面试经常会被问到的,所以在面试Java后端岗位之前,不妨先打好这些核心的基础。 Github作为 程序员们的后花园 ,一直以来都是程序员最喜欢逛逛、学习的地方,小编也不例外,最近看到一份 对标阿里P7Java核心架构笔记 ,已经 标星81.6K ,很是惊讶,看了一下,觉得知识点整理的非常的详细,也不愧能获得这么多星,资料已被整理好,发放福利给朋友们! 一、Java基础 1.1Java 基本功 1.2Java 语法 1.3 数据类型 1.4 方法 (函数) 1.5Java 面向对象 1.6集合 1.7多线程 1.8文件与I/O流 二、并发 2.1 并发容器 总结 2.2 乐观锁 与 悲观锁 总结 2.3JUC 中的 Atomic 原子类总结 2.4AQS 原理以及 AQS 同步组件总结 三、JVM 3.1Java 内存区域 3.2JVM 垃圾回收 3.3JDK 监控和故障处理工具 3.4 类文件结构

分布式锁的三种实现方式

六月ゝ 毕业季﹏ 提交于 2020-10-16 10:31:01
思维导图总览 为什么要使用分布锁? 维护数据的一致性 在单机多线程环境中,我们经常遇到多个线程访问同一个共享资源(这里需要注意的是:在很多地方,这种资源会称为临界资源)的情况。为了维护数据的一致性,我们需要某种机制来保证只有满足某个条件的线程才能访问资源,不满足条件的线程只能等待,在下一轮竞争中重新满足条件时才能访问资源。 这个机制指的是,为了实现分布式互斥,在某个地方做个 标记 ,这个标记每个线程都能看 到,到标记不存在时可以设置该标记,当标记被设置后,其他线程只能等待拥有该标记的线程执行完成,并释放该标记后,才能去设置该标记和访问共享资源。这里的标记,就是我们常说的 锁 。 也就是说, 锁是实现多线程同时访问同一共享资源,保证同一时刻只有一个线程可访问共享资源所做的一种标记 。 与普通锁不同的是, 分布式锁 是指分布式环境下,系统部署在多个机器中,实现多进程分布式互斥的一种锁。为了保证多个进程能看到锁,锁被存在公共存储(比如 Redis、Memcache、数据库等三方存储中),以实现多个进程并发访问同一个临界资源,同一时 刻只有一个进程可访问共享资源,确保数据的一致性。 那什么场景下需要使用分布式锁呢? 比如,现在某电商要售卖某大牌吹风机(以下简称“吹风机”),库存只有 2 个,但有 5 个来自不同地区的用户{A,B,C,D,E}几乎同时下单,那么这 2

奈学教育《大数据开发工程师》课程大纲

时光毁灭记忆、已成空白 提交于 2020-10-16 05:09:09
本课程针对企业不同数据规模技术方案进行讲解,紧贴企业热门需求,深入讲解企业级大数据技术的数据存储技术、数据采集技术、数据处理技术、任务调度技术等;课程针对知识点进行企业级案例式教学,理论结合实战,从0到1构建大数据生态技术的方方面面,内容涵盖大数据平台、Spark、Flink、OLAP等核心技术;用真实的企业级实时数仓项目、离线数仓项目、PB级实时用户行为分析系统、千亿级实时广告系统等多个大型项目,把大数据生态技术知识串连起来,让学员形成自己的技术栈,真正成为企业级的大数据开发工程师! 阶段一:小规模数据处理篇 第一单元 掌握Python基础语法 集合类型 条件,循环 文件操作 函数和函数式编程 面向对象 第二单元 掌握NumPy进行数据分析 NumPy基本使用 Numpy进阶知识 第三单元 掌握Pandas进行数据分析 Pandas基础知识 Series数据结构 DataFrame数据结构 综合案例演示 阶段二:中等规模数据处理篇 第四单元 掌握Elastichsearch核心设计 Elastichsearch总体架构设计 Elastichsearch核心流程分析 Elastichsearch核心概念详解 第五单元 掌握Elastichsearch API使用与调优 Elastichsearch语法详解 Elastichsearch容错原理剖析

我在搜刮了全网的Java学习分享后,精选了这些最强干货!!

扶醉桌前 提交于 2020-10-15 05:20:20
内容包含:Spring boot、Spring cloud、Dubbo、Redis、ActiveMQ、Nginx、Mycat、Spring、MongoDB、ZeroMQ、Git、Nosql、Jvm、Mecached、Netty、Nio、Mina、性能调优、高并发、tomcat 负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr 集群与应用、分布式实战、主从复制、高可用集群等。 有想获取以下干货视频资料的朋友:点赞+关注后,私信【Java干货】就可以了(一定要记得关注我,不然没办法回复陌生人私信) 学习路线图 坦克大战 干货视频,高级架构师最新java、spring、Redis、JVM、分布式、高并发。里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点高级进阶干货 来源: oschina 链接: https://my.oschina.net/u/4389867/blog/4650809

免费白嫖10个干货视频,吃透它 ,大厂offer通杀!

北慕城南 提交于 2020-10-14 16:50:14
金九银十找工作黄金季,因为疫情,上半年找时间看完了下面这 10 个视频 ,收获真的不小!这套视频 原价1800元 ,现在 免费 给你!希望你能有所收获!进个大厂! 视频目录 01-大规模分布式存储系统概述 02-大规模高性能分布式存储之存储原理与设计 03-分布式存储系统分析对比 04-大规模高性能分布式存储系统之一致性篇 05-大规模高性能分布式存储系统之高可用高可靠篇(上) 06-大规模高性能分布式存储系统之高可用高可靠(下) 07-大规模高性能分布式存储系统之安全篇 08-大规模高性能分布式存储系统之高性能篇 09-大规模高性能分布式存储系统之监控&稳定性篇 10-大规模高性能分布式存储系统设计与实现之实战篇 扫码添加小助手,本号粉丝限量100份! 先到先得,免费领取 扫码人数较多 小助手会一一通过 这么多视频资料还不过瘾?那再免费分享给你一个 价值999元的《百万架构师魔鬼训练营》直播课 !“百万架构师”系列课程一直备受业内人士关注,其内容结合大厂实战案例,具有非常强的实战应用性和高阶知识延展性。 本次训练营直播课将帮助你 深入理解注册中心AP模型、掌握Zookeeper适用场景以及以 Zookeeper 为例的传统注册中心架构设计优缺点 ,并且会结合实践与你探讨相关问题。兼具理论知识到项目实践,对千万级并发接入的企业级注册中心实践有全面而深入的了解,立体式掌握相关核心技术

我敢打赌!这绝对是10月整理的最全的《高频Java面试题集合》

核能气质少年 提交于 2020-10-14 11:51:25
周末,天气放晴,玩的还挺开心, 过后,我像往常一样坐在窗台,看着电脑“发呆”,就不给大家分享技术干货了。 给大家整理一份面试清单总结吧, 都是一些基础的题, 但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~当复习期末考吧。 花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题! 面试题模块介绍: 一、Java 基础 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什么作用? java 中的 Math.round(-1.5) 等于多少? String 属于基础的数据类型吗? java 中操作字符串都有哪些类?它们之间有什么区别? String str="i"与 String str=new String("i")一样吗? 如何将字符串反转? String 类的常用方法都有那些? 抽象类必须要有抽象方法吗? 普通类和抽象类有哪些区别? 抽象类能使用 final 修饰吗? 接口和抽象类有什么区别? java 中 IO 流分为几种? BIO、NIO、AIO 有什么区别? Files的常用方法都有哪些? 二、容器 java 容器都有哪些? Collection 和 Collections 有什么区别? List、Set、Map

2020-07-24:聊一下zookeeper的同步算法。

与世无争的帅哥 提交于 2020-10-14 04:14:17
福哥答案2020-07-24: 同步算法基于 ZAB 协议,一种快速 Paxos 算法。 快速Paxos算法 Paxos算法可能出现死循环,就是在两个Proposer总是在交替prepare。并且,Paxos算法在出现竞争的情况下,其收敛速度很慢,甚至可能出现活锁的情况,例如当有三个及三个以上的proposer在发送prepare请求后,很难有一个proposer收到半数以上的回复而不断地执行prepare。因此,为了避免竞争,加快收敛的速度,在算法中引入了一个Leader这个角色,在正常情况下同时应该最多只能有一个参与者扮演Leader角色,而其它的参与者则扮演Acceptor的角色,同时所有的人又都扮演Learner的角色。 在这种优化算法中,只有Leader可以提出议案,从而避免了竞争使得算法能够快速地收敛而趋于一致,此时的paxos算法在本质上就退变为两阶段提交协议。但在异常情况下,系统可能会出现多Leader的情况,但这并不会破坏算法对一致性的保证,此时多个Leader都可以提出自己的提案,优化的算法就退化成了原始的paxos算法。 一个Leader的工作流程主要有分为三个阶段: (1)学习阶段 向其它的参与者学习自己不知道的数据(决议);当一个参与者成为了Leader之后,它应该需要知道绝大多数的paxos实例,因此就会马上启动一个主动学习的过程

java8中parallelStream提升数倍查询效率是怎样实现的,来看看这篇文章

橙三吉。 提交于 2020-10-14 03:33:14
作者:我恰芙蓉王 原文: https://www.cnblogs.com/-tang/p/13283216.html 业务场景 在很多项目中,都有类似数据汇总的业务场景,查询今日注册会员数,在线会员数,订单总金额,支出总金额等。。。这些业务通常都不是存在同一张表中,我们需要依次查询出来然后封装成所需要的对象返回给前端。那么在此过程中,就可以把这个接口中“大任务”拆分成N个小任务,异步执行这些小任务,等到最后一个小任务执行完,把所有任务的执行结果封装到返回结果中,统一返回到前端展示。 同步执行 首先看看同步执行的代码 public class Test { @Data @NoArgsConstructor @AllArgsConstructor @ToString class Result { /** * 在线人数 */ Integer onlineUser; /** * 注册人数 */ Integer registered; /** * 订单总额 */ BigDecimal orderAmount; /** * 支出总额 */ BigDecimal outlayAmount; } @org.junit.Test public void collect() { System.out.println("数据汇总开始"); long startTime = System

分布式缓存Redis的穿透和雪崩

核能气质少年 提交于 2020-10-12 08:36:52
缓存击穿 先了解一下缓存击穿, 大量的请求都集中请求在一个 key 上 ,一般体现在一个热点数据,例如双十一,秒杀等, 突然一下缓存失效了,所有的请求一瞬间就砸到了MySQL上面。持续的并发就穿破的缓存。总结一下,在某个key过期的瞬间,有大量的并发请求,一般都是热点数据,缓存过期。 解决方案 1、设置热点数据延长过期时间 从缓存层面来说,设置过期时间,就不会产生穿透问题。例如,一般秒杀时间1分钟,缓存可以考虑设置2分钟。 2、加互斥锁 分布式锁:只要加了锁,可以保证每个key,只有一个线程去查询后端的服务。只能够等待。 核心:转移压力,尽量服务不崩。 将数据库承受的压力转义到了分布式锁上面。 缓存穿透 出现大量请求,缓存都没有命中,所有的请求最终还是给了数据库持久层,这就是缓存穿透! 解决方案 : 当请求到数据库查出值的值不为空,将该(key,value)放到redis中 当请求到数据库查出值的值为空,将该(key,value)放到redis中,value为空,并设置过期时间。 Redis雪崩 什么是Redis雪崩 雪崩是基于数据库,所有原来应该到Redis的查询全到DB,并且是同时到达 缓存在同一时间大量的key过期 多个用户同时请求并到达数据,而且这个请求只有一个是有意义的,其他的都是重复无用功 Redis雪崩解决方案 缓存用不过期:这样会导致冰封 过期时间错开