- 博客(46)
- 资源 (7)
- 收藏
- 关注
原创 抢实战(二)-业务模型
或许大家体验过抢红包,但如何对现实世界的业务场景进行抽象,形成软件系统的需求,进行建模与技术选型,这是有一套“方法论”的。因此,本章分四点:红包系统业务知识;选用的技术框架;业务建模与数据库建模;红包算法&库存超卖问题。…1 红包业务和业务模型概述1.1 红包业务场景通过移动互联网应用发红包成为了普遍娱乐现象!1.1.1 发红包场景表白、祝福等庆祝、营销、装逼、曝光、知识付费...
2019-07-29 04:54:02 1333
原创 一文看懂这篇MySQL的锁机制
1 MySQL的三种锁1.1 表锁开销小,加锁快不会出现死锁锁定粒度大,发生锁冲突的概率最高,并发度最低1.2 行锁开销大,加锁慢会出现死锁锁定粒度小,发生锁冲突的概率最低,并发度最高1.3 页锁开销和加锁时间介于表锁和行锁之间会出现死锁锁定粒度介于表锁和行锁之间,并发度一般1.4 引擎与锁MyISAM和MEMORY支持表锁BDB支持页锁,也支持表锁I...
2019-07-28 19:43:46 1281 1
原创 CentOS7系统环境下载安装Maven
1 下载压缩文件wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz2 解压tar -zxvf apache-maven-3.3.9-bin.tar.gz 3 配置环境变量vim ~/.bash_profile在文...
2019-07-27 20:11:59 1312
原创 Flink实战(八) - Streaming Connectors 编程
Flink实战(八) - Streaming Connectors 编程
2019-07-27 04:48:28 2268
原创 环境配置CentOS7
sudo - i 进入root模式删除网络配置文件查看ip,并复制ens33的地址根据自己的网络环境,配置网卡相关信息ping成功,可联网使用本机终端连接虚拟机...
2019-07-24 12:52:00 1604
原创 Flink实战(七) - Time & Windows编程
Windows是处理无限流的核心。Windows将流拆分为有限大小的“桶”,可在其上应用计算。/**如何在Flink中执行窗口程序员如何从其提供的函数中获益最大化第一个片段指的是被Keys化流第二个片段指的是非被Keys化流唯一区别是keyBy(…)呼吁Keys流和window(…)成为windowAll(…)非被Key化的数据流。} });原来传递进来的数据是字符串,此处我们就使用数值类型,通过数值类型来演示增量的效果。
2019-07-23 09:48:02 2441 1
原创 Flink实战(六) - Table API & SQL编程
1 意义1.1 分层的 APIs & 抽象层次Flink提供三层API。 每个API在简洁性和表达性之间提供不同的权衡,并针对不同的用例。而且Flink提供不同级别的抽象来开发流/批处理应用程序最低级抽象只提供有状态流。它通过Process Function嵌入到DataStream API中。它允许用户自由处理来自一个或多个流的事件,并使用一致的容错状态。此外,用户可以...
2019-07-21 22:34:00 4999
原创 Flink实战(五) - DataStream API编程
1 概述Flink中的DataStream程序是实现数据流转换的常规程序(例如,过滤,更新状态,定义窗口,聚合)。最初从各种源(例如,消息队列,套接字流,文件)创建数据流。结果通过接收器返回,接收器可以例如将数据写入文件或标准输出(例如命令行终端)。Flink程序可以在各种环境中运行,独立运行或嵌入其他程序中。 执行可以在本地JVM中执行,也可以在许多计算机的集群上执行。有关Flin...
2019-07-20 23:56:19 3002
原创 网络协议的意义
如今的世界,正是因为互联网,才连接在一起。当"Hello World!"从显示器打印出来的时候,还记得你激动的心情吗?作为程序员,一定看得懂上面这一段文字。这是每一个程序员向计算机世界说“你好,世 界”的方式。但是,你不一定知道,这段文字也是一种协议,是人类和计算机沟通的协议,只有通过这种协议,计算机才知道我们想让它做什么。1 协议三要素当然,这种协议还是更接近人类语言,机器不能直接读...
2019-07-19 01:34:05 2117
原创 Flink实战(四) - DataSet API编程
1 你将学到◆ DataSet API开发概述◆ 计数器◆ DataSource◆ 分布式缓存◆ Transformation◆ Sink2 Data Set API 简介Flink中的DataSet程序是实现数据集转换(例如,过滤,映射,连接,分组)的常规程序.最初从某些Source源创建数据集(例如,通过读取文件或从本地集合创建)结果通过sink返回,接收器可以例如将数据写...
2019-07-19 00:35:14 2312
原创 电商详情页系统实战(2) -小型电商网站商品详情页的页面静态化架构及缺陷
商品详情页的系统架构 => 缓存架构 => 高并发 => 高可用电商网站里,大概可以说分成两种小型电商简单的一种架构方案,页面静态化的方案大型电商复杂的一套架构,大电商,国内排名前几的电商,用得应该咱们这里讲解的这套大型的详情页架构页面静态化,全量的页面静态化<html> <title></title> <bo...
2019-07-16 01:39:36 1616
原创 电商详情页系统实战(1) - 简介
1 缓存技术掌握不够,会对发展带来了哪些阻碍1.1 工作中如果你这块技术掌握不够,然后你的公司的项目遇到了一些相关的难题,高并发+高性能的场景,hold不住类似的这种高并发的系统因为缓存架构做得不好,不到位,实际在公司的项目里,出了一些大case,导致系统崩溃,巨大的经济损失1.2 职业发展中redis,memcached,activemq,zookeeper,kafka,lucene,...
2019-07-16 01:00:56 1458
原创 高可用服务架构设计(17) - 基于Hystrix的高可用分布式系统架构设计的总结
已经学到的东西hystrix的核心知识1、hystrix内部工作原理:8大执行步骤和流程2、资源隔离:你如果有很多个依赖服务,高可用性,先做资源隔离,任何一个依赖服务的故障不会导致你的服务的资源耗尽,不会崩溃3、请求缓存:对于一个request context内的多个相同command,使用request cache,提升性能4、熔断:基于短路器,采集各种异常事件,报错,超时,rejec...
2019-07-16 00:34:57 1230
原创 高可用服务架构设计(16) - 基于timeout机制来为商品服务接口的调用超时提供安全保护
一般来说,在调用依赖服务的接口的时候,比较常见的一个问题,就是超时超时是在一个复杂的分布式系统中,导致不稳定,或者系统抖动,或者出现说大量超时,线程资源hang死,吞吐量大幅度下降,甚至服务崩溃分布式复杂的系统里,可能你的依赖接口的性能很不稳定,有时候2ms,200ms,2s如果你不对各种依赖接口的调用,做超时的控制,来给你的服务提供安全保护措施,那么很可能你的服务就被各种垃圾的依赖服务的性...
2019-07-16 00:32:15 1324
原创 Hystrix线程池隔离设计原则及接口限流实验
Hystrix 通过判断线程池或者信号量是否已满,超出容量的请求,直接 Reject 走降级,从而达到限流的作用。限流是限制对后端的服务的访问量,比如说你对 MySQL、Redis、Zookeeper 以及其它各种后端中间件的资源的访问的限制,其实是为了避免过大的流量直接打死后端的服务,限制服务对后端的资源的访问1 线程池隔离技术的设计原则Hystrix采取了bulkhead舱壁隔离技术,将...
2019-07-15 21:01:20 1816
原创 高可用服务架构设计(14) - 深入理解hystrix的断路器执行原理以及模拟接口异常时的短路实验
短路器深入的工作原理1 RequestVolumeThresholdnumber of requests that must be made within a statisticalWindow before open/close decisions are made using stats在使用统计数据进行打开/关闭决策之前必须在滑动窗口中进行的请求数如果经过断路器的流量超过了一定...
2019-07-15 19:11:26 1388
原创 大厂互联网电商基于本地缓存的fallback降级机制
本来你是从mysql,redis获取数据,获取调用其他服务的接口的,结果它故障,fallback,可返回一个默认值。若那个品牌服务宕机,可尝试本地内存中,会保留一份时间比较过期的一份品牌数据,有些品牌没有,有些品牌的名称过期了,调用品牌服务失败了,fallback降级就从本地内存中获取一份过期的数据,先凑合用。有个商品数据,brandId品牌,假设拿到个商品数据后,用brandId再调用一次请求,到其他的服务去获取品牌的最新名称。若外部依赖异常,fallback这里,直接尝试从本地缓存获取数据。
2019-07-15 01:38:19 1315 1
原创 高可用后端架构设计实战-利用request cache请求缓存优化批量查询接口
回顾执行流程1、创建command,2种command类型2、执行command,4种执行方式3、查找是否开启了request cache,是否有请求缓存,如果有缓存,直接取用缓存,返回结果首先,reqeust context(请求上下文)一般在一个web应用中,Hystrix会在一个filter里面,对每个请求都添加一个请求上下文即Tomcat容器内,每一次请求,就是一次请求上下文...
2019-07-15 00:59:59 1474
原创 SpringCloud - Hystrix的执行流程
当开始执行command,调用了它的execute()之后,Hystrix内部的执行流程和步骤以及原理是怎样的呢?Hystrix执行时的8大流程及原理图1 创建HystrixCommand/HystrixObservableCommand一个HystrixCommand或HystrixObservableCommand对象,代表对某个依赖服务发起的一次请求或者调用构造的时候,可在构造函...
2019-07-15 00:03:20 1459
原创 高可用架构(10)-Hystrix隔离策略、Command及资源池大小控制
资源隔离两种策略线程池隔离信号量隔离对于资源隔离,做更加深入一些的讲解,除了可以选择隔离策略,对选择的隔离策略,可以做一定的细粒度的控制1 execution.isolation.strategy指定HystrixCommand.run()的资源隔离策略THREAD基于线程池// to use thread isolationHystrixCommandProperti...
2019-07-14 20:52:56 1778
原创 Hystrix线程池机制的资源隔离在业务中的最佳实践
1 pom.xml<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>1.5.12</version></dependency>...
2019-07-14 17:17:21 1503
原创 高可用架构设计(3) -电商商品详情页缓存背景及框架说明
0 导读我们这个教程,基于hystrix,如何来构建高可用的分布式系统的架构,项目实战模拟真实业务的这么一个小型的项目,来全程贯穿,用这个项目中的业务场景去一个一个的讲解hystrix高可用的每个技术纯讲hystrix,脱离实际的业务背景,听起来有点枯燥,大家学完了hystrix以后,可能没法完全感受到技术是如何融入我们的项目中的大背景:电商网站,首页,商品详情页,搜索结果页,广告页,促销...
2019-07-14 00:15:54 1828
原创 高可用的微服务架构设计-资源隔离、限流、熔断、降级、监控
1 hystrix是什么?Netflix(国外最大的类似于,爱奇艺,优酷)视频网站,五六年前,也是,感觉自己的系统,整个网站,经常出故障,可用性不太高有时候一些vip会员不能支付,有时候看视频就卡顿,看不了视频。。。影响公司的收入!!!五六年前,netflix,api team,提升高可用性,开发了一个框架,类似于spring,mybatis,hibernate,等等这种框架高可用性的...
2019-07-13 22:49:01 2371 2
原创 大厂都在用的MySQL主从复制、读写分离及高可用方案
1 面试题有没有做过MySQL读写分离如何实现MySQL的读写分离主从复制原理如何解决MySQL主从同步的延时问题准备好面对这炮轰式面试了吗?2 考点分析高并发阶段,肯定需要做读写分离.实际上大部分互联网公司/网站/APP,都是读多写少针对现状,写一个主库,挂着多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗?3 MySQL读写分离的实现基于主从复制架构...
2019-07-13 21:05:33 2439
原创 分库分表后全局ID生成方案
1 面试题分库分表之后,id主键如何处理?2 考点分析其实这是分库分表之后你必然要面对的一个问题,就是id咋生成?要是分成多个表之后,每个表都是从1开始累加,那肯定不对啊,需要一个全局唯一的id来支持!下面来看看有哪些可行方案~3 数据库自增id分库分表的id主键问题系统每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据然后获取一个数据库自增id拿到该...
2019-07-13 15:34:12 1868
原创 如何设计可动态扩容缩的分库分表
1 面试题设计可动态扩容的分库分表2 考点分析选一个数据库中间件,然后深入之设计分库分表的方案,要分成多少个库,每个库分成多少个表基于已选的数据库中间件,以及在测试环境建立好的分库分表,
2019-07-13 13:16:49 1604
原创 分库分表在大厂的实践
1 面试题现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?2 考点分析你现在已经明白为啥要分库分表了,你也知道常用的分库分表中间件了,你也设计好你们如何分库分表的方案了(水平拆分、垂直拆分、分表),那问题来了,你接下来该怎么把你那个单库单表的系统给迁移到分库分表上去?所以这都是一环扣一环的,就是看你有没有全流程经历过这个过程假设,你现有...
2019-07-13 00:10:56 1240
原创 Java微服务系统分布式事务解决方案
1 面试题分布式事务了解吗?你们如何解决分布式事务问题的?2 考点分析只要聊到做了分布式系统,必问分布式事务,若你对分布式事务一无所知的话,确实很坑,起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配.你做系统肯定要用事务,那你用事务的话,分布式系统之后肯定要用分布式事务.先不说你搞过没有,起码你得明白有哪几...
2019-07-12 11:58:11 3112
原创 手把手教你搭建GitHub个人博客网站
1 本地环境macOS10.14.14node.js@6.14.4git@1.9.2hexo@6.4.01.1 安装Node.jsnode -v1.2 安装配置Git查看git是否安装成功git --version2 GitHub操作2.1 创建仓库新建一个名为你的用户名.github.io的仓库,这里,我的github用户名是Wasabi1234,那么就新建Wa...
2019-07-11 14:10:00 1848
原创 ZooKeeper的适用场景
0 Github1 面试题ZooKeeper的适用场景?2 考点分析现在聊的面试主题,是分布式系统,其实跟你聊完Dubbo以及相关的一些问题,确认你现在分布式服务框架,RPC框架,基本都有一些认知.下面,可能开始要跟你聊分布式相关的其他问题了.分布式锁这个东西,还是很常用的,做Java开发,分布式系统,可能会有一些场景会用到.最常用的分布式锁就是ZooKeeper来实现.这个问题...
2019-07-10 11:23:02 1526
原创 突破Java面试(40)-如何设计一个类似Dubbo的RPC框架
0 Github1 面试题如何设计一个类似Dubbo的RPC框架2 考点分析就跟问你如何设计一个MQ一样的道理,就考两个:你有没有对某个RPC框架原理有非常深入的理解你能不能从整体上来思考一下,如何设计一个rpc框架,考考你的系统设计能力3 解决方案其实一般问到你这问题,你起码不能认怂,因为这既然是面试突击教程,那不可能给你深入讲解什么kafka源码剖析,dubbo源码剖析,...
2019-07-09 23:47:37 1463
原创 阿里面试官:聊聊基于Dubbo服务治理、服务降级以及重试原理?
1 面试题如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试?2 考点分析服务治理其实就是看看你有没有服务治理的思想,因为这是做过复杂微服务的人肯定会遇到的问题!服务降级涉及到复杂分布式系统中必备的一个话题,因为分布式系统互相来回调用,任何一个系统故障了,你不降级,直接就整个瘫痪了!失败重试分布式系统中网络请求如此频繁,要是因为网络问题不小心失败了一次,是不...
2019-07-09 17:15:04 1893
原创 Dubbo的SPI机制详解
1 面试题Dubbo中的SPI是什么?2 考点分析前面基础性的东西问完了,确定你应该了解Dubbo,那么自然问个稍微难的问题,就是SPI,先问问你这是个啥,然后问问你怎么实现的!其实就是看看你对dubbo的掌握如何3 SPI简介SPI 全称为 Service Provider Interface,是一种服务发现机制.说白了是啥呢,比如你有个接口,该接口有3个实现类,那么在系统运行时,...
2019-07-09 13:34:54 3309
原创 如何选型微服务架构的负载均衡算法?
1 面试题Dubbo负载均衡策略和集群容错策略都有哪些?动态代理策略呢?2 考点分析这些都是关于Dubbo必须知道,基本原理,序列化是什么协议,具体用dubbo的时候,如何负载均衡,如何高可用,如何动态代理等.就是看你对Dubbo掌握程度工作原理:服务注册,注册中心,消费者,代理通信,负载均衡网络通信、序列化:dubbo协议,长连接,NIO,hessian序列化协议负载均衡策略,集...
2019-07-08 21:51:35 1241
原创 Redis缓存雪崩、缓存穿透、缓存击穿解决方案详解
1 面试题了解什么是Redis的雪崩和穿透吗?Redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理Redis的穿透?2 考点分析缓存必问题,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命的!3 缓存雪崩3.1 发生的现象3.2 缓存雪崩的解决方案事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃事中:本地ehcache缓...
2019-07-08 13:25:59 1556
原创 Redis Cluster集群应用与原理
1 面试题Redis集群模式的工作原理说一下?在集群模式下,key是如何寻址的?寻址都有哪些算法?了解一致性hash吗?2 考点分析Redis不断在发展-Redis cluster集群模式,可以做到在多台机器上,部署多个实例,每个实例存储一部分的数据,同时每个实例可以带上Redis从实例,自动确保说,如果Redis主实例挂了,会自动切换到redis从实例顶上来。现在新版本,大家都是用Red...
2019-07-08 09:24:46 1613 2
原创 Redis的持久化机制
面试题Redis的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?考点分析Redis如果仅仅只是将数据缓存在内存里面,假若宕机了,再重启,内存里的数据就全部丢失了!你必须得用Redis的持久化机制,将数据写入内存的同时,异步的慢慢的将数据写入磁盘若Redis宕机了,重启启动,自动从磁盘上加载之前持久化的一些数据即可,也许会丢失少许数据,但至少不会将所有...
2019-07-07 13:48:08 3360 2
原创 深入解析Redis哨兵底层原理
1 sdown和odown转换机制两种失败状态1.1 概念sdown主观宕机一个哨兵自己觉得一个master宕机odown客观宕机quorum数量的哨兵都觉得一个master宕机1.2 达成条件sdown一个哨兵ping一个master,超过is-master-down-after-millisecondsodown一个哨兵在指定时间内,收到了quorum指定数量的...
2019-07-06 18:09:25 1302
原创 Redis哨兵主备切换的数据丢失问题
1 数据丢失的两个场景主备切换的过程,可能会导致数据丢失1.1 异步复制由于 master => slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机,于是这些数据就丢失了1.2 脑裂导致脑裂,也就是说,某个master所在节点突然脱离正常的网络,无法和其他slave机器连接,但实际上master还运行着此时哨兵可能就会认为master宕机了,然...
2019-07-06 14:46:31 1329
Spring基础讲义-java 入门必备
2022-11-05
南邮Windows编程课件
2017-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人