- 博客(47)
- 问答 (1)
- 收藏
- 关注
原创 101- zookeeper-1
文章目录分布式环境特点分布性并发性无序性分布式环境下面临的问题网络通信网络分区(脑裂)三态分布式事务中心化和去中心化经典的CAP/BASE理论CAPBASE初步认识zookeeperzookeeper是什么zookeeper能做什么zookeeper的特性顺序一致性原子性可靠性实时性zookeeper安装单机环境安装集群环境zookeeper中的一些概念数据模型节点特性会话WatcherACLzo...
2020-01-09 18:14:03
623
原创 100-分布式日志收集-ELK
文章目录1. Elasticsearch版本控制2. 9200与9300的区别3. 倒排索引1. Elasticsearch版本控制索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)1.为什么要进行版本控制为了保证数据再多线程操作下的准确性2.悲观锁和乐观锁悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据准确性的操作悲观锁:假设不...
2019-11-13 11:49:23
308
原创 69-分布式解决方案-Apollo分布式配置中心
文章目录1. apollo分布式配置中心原理1. apollo分布式配置中心原理ConfigService提供配置获取接口提供配置推送接口服务于Apollo客户端AdminService提供配置管理接口提供配置修改发布接口服务于管理界面PortalClient为应用获取配置,支持实时更新通过MetaServer获取ConfigService的服务列表使用客户端...
2019-11-13 10:20:49
226
原创 86-彻底解决分布式事务-集成LCN框架解决分布式事务
文章目录1. LCN框架解决分布式事务原理_1. LCN框架解决分布式事务原理_LCN客户端(发起方和参与方都必须要注册到事务协调者中)建立一个长连接订单服务(发起方)调用库存服务接口(参与方)之前会向TxManager事务协调者创建一个事务分组id订单服务(发起方)调用库存服务接口(参与方)的时候,会在请求头中存放该事务的分组id给库存服务如果库存服务获取到请求头中对应的事务分组id...
2019-11-08 22:47:39
366
原创 85-彻底解决分布式事务-Cap与Base理论
文章目录1. 理解Base与CAP理论、最终一致性概念2. 2PC两阶段提交协议3. 2PC和3PC提交的区别1. 理解Base与CAP理论、最终一致性概念C:Consistency,一致性。在分布式系统中所有数据备份,在同一时刻具有同样的值,所有节点在同一时刻读取的数据都是最新的数据副本A:Availability,可用性。完全的可用性指的是在任何故障下,服务都会在有限的时间内处理完成并进...
2019-11-08 22:38:08
266
原创 105-分布式解决方案-高并发情况下分布式全局Id生成
文章目录1.利用全球唯一UUID生成订单号2.利用数据库自增3. 基于redis生成全局id策略4. snowflake(雪花算法)高位随机+毫秒数+机器码——10位流水号1.利用全球唯一UUID生成订单号UUID优缺点优点:简单,代码方便生成ID性能非常好,基本不会有性能问题全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更情况下,可以从容应对缺点:没有排序,无法保证趋势递增...
2019-11-08 17:13:38
284
原创 71-分布式解决方案-分布式锁解决解决方案-基于Redis方式实现分布式锁
文章目录1. 三种实现分布式解决方案原理分析2. Redis实现分布式锁获取锁原理3. redis实现释放锁4. zookeeper和redis实现分布式锁的区别1. 三种实现分布式解决方案原理分析采用数据库 不建议 性能不好基于redis实现分布式锁(setnx)多个客户端(jvm),使用setnx命令方式,同时在redis上创建一个相同的key(如果存入成功返回1,存入失败返回0),...
2019-11-08 15:45:03
168
原创 67-分布式解决方案-全面解密分布式任务调度平台
文章目录1. 分布式任务job特征2. 分布式任务调度平台xxl-job3. xxl-job执行定时job原理3. 使用nginx实现xxl-job集群的负载均衡1. 分布式任务job特征如何保证分布式Job唯一性使用Zookeeper实现分布式锁(效率不是很高)在配置文件中加上启动定时job开关(有一台挂了就完了)启动的时候使用数据库唯一标识不推荐!!使用分布式任务调度平台(XX...
2019-11-08 13:56:01
222
原创 65-分布式解决方案-彻底解决网站跨域请求
文章目录1. 什么是跨域问题2. 跨域问题产生的原因3. 跨域问题解决方案1. 什么是跨域问题2. 跨域问题产生的原因浏览器跨域问题产生的原因,如果使用ajax请求调用第三方接口,如果ajax访问的接口域名和端口号与浏览器访问的域名和端口号不一致的情况下,就会产生跨域问题(属于浏览器安全策略)跨域不属于前端问题一定要端口号和域名一定要保持一致3. 跨域问题解决方案使用jsonp解决...
2019-11-07 18:11:12
290
原创 64-分布式协调工具-ZooKeeper实现选举策略与哨兵机制
文章目录1. zookeeper实现master选举2. Zookeeper实现哨兵机制代码1. zookeeper实现master选举2. Zookeeper实现哨兵机制代码@Componentpublic class MyApplicationRunner implements ApplicationRunner { // 创建zk连接 ZkClient zkClient = ...
2019-11-07 16:17:00
304
原创 63-分布式解决方案-分布式Session一致性问题
文章目录1. 分布式session一致性概述2. session的底层实现原理3. 分布式session一致性解决方案4. 方案5和方案61. 分布式session一致性概述分布式Session一致性(服务器集群session共享问题)session的作用?(服务端与客户端保存整个通讯的会话信息)应用场景 (账号密码登陆成功之后,获取到userId,存放到session,下次获取用户信息...
2019-11-07 15:45:53
202
原创 62-分布式协调工具-基于ZooKeeper实现分布式锁
文章目录1.分布式锁常见解决方案2. 基于zookeeper实现分布式锁原理2. zookeeper实现分布式锁代码1.分布式锁常见解决方案分布式锁解决方案(目的:为了保证在分布式领域中共享数据安全问题)数据库实现分布式锁(不推荐、效率特别低)基于redis实现分布式锁 setNX(非常麻烦 考虑死锁、释放问题) redsession分布式锁基于Zookeeper实现分布式锁(强烈推...
2019-11-07 14:06:49
226
原创 61-分布式协调工具-ZooKeeper实现动态负载均衡
文章目录1.为什么使用zookeeper1.1 什么是zookeeper1.2 zookeeper应用场景1.为什么使用zookeeper1.1 什么是zookeeperzookeeper是一个分布式协调工具(java语言编写开源框架)1.2 zookeeper应用场景命名服务(注册中心)分布式配置中心 (还有SpringCloud Config)消息中间件 事件通知(类似发布订...
2019-11-07 10:42:27
157
原创 60-分布式缓存架构-缓存雪崩&穿透&命中率
文章目录1. Redis雪崩效应产生的原因2. Redis雪崩效应解决方案3. 使用锁解决redis雪崩效应4. 使用mq解决redis雪崩效应5. 穿透与命中率问题6. 穿透解决方案1. Redis雪崩效应产生的原因2. Redis雪崩效应解决方案分布式锁或者本地锁使用消息中间件(最靠谱)一级和二级缓存(redis+ehcache)均摊分配redis key的失效时间。比较靠谱...
2019-11-06 17:59:26
280
原创 54-互联网安全架构-互联网API开放平台安全设计-生产环境配置Https协议
文章目录1.传统Http请求弊端2. https请求的整个过程3. http和https的区别4. nginx配置证书1.传统Http请求弊端2. https请求的整个过程证书中包含什么信息证书信息:过期时间和序列号所有者信息:姓名等所有者公钥3. http和https的区别http与https协议区别 端口号: http是80, https是443https采用加密传输, ...
2019-11-06 16:52:12
224
原创 52-互联网安全架构-互联网API开放平台安全设计-APIGateway-网关
文章目录1.企业网关架构流程图2.API网关设计3.网关的应用场景4.Nginx实现网关5. rpc通讯架构原理6. zuul实现网关1.企业网关架构流程图zuul框架使用java语言编写,Nginx使用C语言写nginx功能比zuul功能更加强大,Nginx实现反向代理功能比zuul要好SpringCloud 注册中心,生产者消费者 断路器 zuul(网关) 分布式配置中心Zuul框...
2019-11-06 15:40:35
575
原创 51-互联网API开放平台安全设计-接口安全加密传输对称加密与非对称加密
文章目录1. URL特殊字符转码2. 为什么接口需要加密传输3. 对称加密4. 移动APP接口安全性设计1. URL特殊字符转码什么是URL转码不管是以何种方式传递url时,如果要传递的url中包含特殊字符,如想要传递一个+,但是这个+会被url会被编码成空格,想要传递&,被url处理成分隔符。尤其是当传递的url是经过Base64加密或者RSA加密后的,存在特殊字符时,这里的特殊...
2019-11-05 21:47:29
542
原创 50-互联网安全架构-互联网API开放平台安全设计-基于OAuth2.0协议方式
文章目录1.什么是Oauth2.0认证过程2. 整个oauth2.0原理3. 第三方联合登陆过程1.什么是Oauth2.0认证过程为什么会产生oauth2.0认证互联网开放瓶体相互调用保证安全性(大型互联网公司)什么是开放平台:暴露公网提供API接口微信联合登陆(读取微信头像),需要调用微信提供的第三方用户信息接口2. 整个oauth2.0原理oauth2.0原理(appid、a...
2019-11-05 18:30:53
278
原创 49-互联网安全架构-互联网API开放平台安全设计-基于AccessToken方式实现API设计
文章目录1. 互联网API开放平台安全设计概述2. 编写拦截器拦截请求,验证accessToken1. 互联网API开放平台安全设计概述需求:现在A公司与B公司进行合作,B公司需要调用A公司开放的外网接口获取数据,如何保证外网开放接口安全性。搭建API网关控制接口访问权限开放平台设计oauth2.0协议(安全认证)采用https加密传输协议API接口数字签名基于令牌方式实现API...
2019-11-05 16:29:14
349
原创 47-互联网安全架构-Web常用攻击手段之上传文件漏洞&忘记密码漏洞&其他漏洞
文章目录1.忘记密码漏洞案例分析2.上传文件漏洞防御手段3.Web常见攻击手段总结1.忘记密码漏洞案例分析使用短信验证码,在忘记密码短信找回中有一个短信验证码破解思路(暴力破解):假设验证码为4位数字使用java程序 HttpClient技术开启多线程技术调用找回密码接口 暴力破解生成对应的4位数字以内验证码进行验证,如果一旦验证成成,破解ok如何防止暴力破解找回密码?找回验证码...
2019-11-05 11:19:26
160
原创 46-互联网安全架构-Web常用攻击手段之防盗链&防止CSRF模拟请求
文章目录1. 防盗链技术底层实现原理分析2. 使用过滤器实现防盗链技术1. 防盗链技术底层实现原理分析防盗链技术底层实现原理使用http协议请求头中的referer记录请求来源。使用过滤器拦截请求,判断请求头中的域名referer与需要限制的域名访问是否一致,如果不一致的请款,说明可能被盗用2. 使用过滤器实现防盗链技术@WebFilter(filterName = "imgFil...
2019-11-04 21:10:15
310
原创 45-互联网安全架构-Web常用攻击手段之XSS脚本&SQL注入攻击
文章目录1. 什么是XSS攻击&XSS攻击应用场景2. XSS脚本攻击原理分析3. 使用过滤器防御XSS攻击4. 使用#传递参数防御SQL注入攻击1. 什么是XSS攻击&XSS攻击应用场景XSS其实就是使用javascript脚本语言注入进行攻击XSS攻击场景:具体例子A请求提交表单信息,表单信息转发到另一个页面进行展示。有一些钓鱼网站,在提交参数的后面带上XSS脚本攻...
2019-11-04 17:34:27
143
原创 CDN内容分发
文章目录1. Web前端优化方案2. CDN加速部署整个原理3. CDN内容分发1. Web前端优化方案网站动静分离 动态资源和静态资源分别部署到不同的服务器上,使用nginx实现静态服务器, 因为nginx实现静态服务器访问速度比tomcat实现景台服务器访问效果好很多使用浏览器缓存 客户端(浏览器)内置缓存技术,只要访问一次静态资源请求,都会缓存到本地,304状态码表示客户端缓存 ...
2019-11-04 14:20:30
739
原创 Nginx + Tomcat动静分离
文章目录1. 动态网站与静态网站区别2. 动静分离架构模式原理分析3. 动静分离与前后分离区别4. 解密互联网公司静时间戳的作用5. 使用时间戳控制浏览器缓存1. 动态网站与静态网站区别静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。2. 动静分离架构模式原理分析 ###静态资源访问 serv...
2019-11-04 11:25:50
96
原创 Nginx(二)
文章目录1. lvs+keepalived区别2. lvs+Keepalived+Nginx架构流程图3. Linux环境Keepalived4. 使用Keepalived创建虚拟IP1. lvs+keepalived区别2. lvs+Keepalived+Nginx架构流程图3. Linux环境Keepalived将keepalived安装成Linux系统服务,因为没有使用keepa...
2019-11-04 09:32:40
203
原创 Nginx
文章目录1. DNS解析过程2. Nginx应用场景3. 基于虚拟主机配置域名4. Nginx配置反向代理1. DNS解析过程2. Nginx应用场景1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。2、虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。3、反向代理,隐藏真实ip地址4、负载均衡。当网站的访问量达到一...
2019-10-31 18:23:32
196
原创 Spring
文章目录1. 手动编写注解事务1.1 思路1.21. 手动编写注解事务1.1 思路1.2//编程事务(需要手动begin 手动回滚 手都提交)@Component()@Scope("prototype") // 设置成原型解决线程安全public class TransactionUtils { private TransactionStatus transactionSta...
2019-10-29 16:09:40
85
原创 集合
文章目录1. HashMap1.1 底层结构1.2 put和get方法1.3 扩容机制2. ArrayList3. Vector1. HashMap1.1 底层结构JDK1.7 HashMap的底层结构是由数组+链表构成的。JDK1.8 HashMap的底层结构是由数组+链表+红黑树成的。数组(紫色):hash数组(桶),数组元素是每个链表的头节点链表(绿色):解决hash冲突,不...
2019-10-22 17:43:59
81
原创 JVM相关(三)
文章目录1.字节码技术1.2使用Javassist创建类1.2 使用Javassist修改类文件信息2. 类加载器3. 类加载器的层次结构1.字节码技术AOP技术、Lombok去除重复代码插件、动态修改class文件等1.2使用Javassist创建类 public static void main(String[] args) throws CannotCompileExceptio...
2019-10-18 14:21:49
173
原创 JVM相关(二)
文章目录1. JVM参数配置1.1 常用配置参数1.2 堆内存大小配置1.2 设置新生代比例参数1.3 设置新生代与老年代比例参数2. Java堆溢出3. 虚拟机栈溢出4. 内存溢出与内存泄漏区别5. 垃圾收集器1. JVM参数配置1.1 常用配置参数-XX:+PrintGC 每次触发GC的时候打印相关日志-XX:+UseSerialGC 串行回收-XX:+Pri...
2019-10-17 18:19:54
103
原创 JVM相关(一)
文章目录1. java内存结构2. finalize2.1 什么是垃圾回收机制3. 如何判断对象是否存活3.1 引用计数法3.2 可达性算法4. 垃圾回收机制策略4.1 复制算法4.2 标记清除算法4.3 标记压缩算法1. java内存结构2. finalize2.1 什么是垃圾回收机制不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的...
2019-10-17 15:57:01
278
原创 设计模式(二)
文章目录1. 原型模式2. 策略模式3. 观察者模式1. 原型模式复制一个已经存在的实例可使程序运行更高效应用场景(1)类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。(2)通过new产生的一个对象需要非常繁琐的数据准备或者权限,这时可以使用原型模式。(3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷...
2019-10-17 10:56:50
89
原创 设计模式(一)
文章目录1. 反射机制2. 单例模式2.1 饿汉式2.2 懒汉式2.3 枚举式1. 反射机制什么是反射机制就是正在运行,动态获取这个类的信息反射的作用.class --> .java通过反射机制访问对象的属性、方法、构造函数等public class UserEntity { private String userName; //构造方法中有异常是创建不成...
2019-10-17 09:12:50
99
原创 并发编程(四)
文章目录1. 重入锁1. 读写锁1. 重入锁重入锁:也叫递归锁;指的是同一个线程 外层函数获得锁之后,内层递归函数仍然有获取该锁的代码; 不会受影响。Synchronized和ReentranLock都是可重入锁// 重入锁 轻量级(Lock) 重量级(synchronized) --可重入性public class Test001 { public static void ma...
2019-10-12 18:25:50
75
原创 并发编程(三)
文章目录1. 阻塞队列和非阻塞队列1. 阻塞队列和非阻塞队列ArrayBlockingQueue:是一个有边界的阻塞队列,它的内部实现是一个数组。有边界的意思是它的容量是有限的,初始化的时候必须制定容量大小,容量大小一旦指定就不可改变(先进先出)LinkedBlockingQueue:大小的配置是可选的,如果初始化时指定一个大小,它就是有边界的,如果不指定就是无边界的。无边界采用了默认大小...
2019-10-10 22:02:04
74
原创 并发编程(二)
文章目录1. 什么是多线程安全2. 同步代码块解决线程安全1. 什么是多线程安全2. 同步代码块解决线程安全public class Thread5 { public static void main(String[] args) { TicketThread ticketThread = new TicketThread(); new Thread...
2019-10-09 21:08:32
85
原创 并发编程(一)
1. 继承Thread类创建线程/** * 1. 什么是线程 线程是一条执行路径,每个线程都互不影响 * 2. 什么是多线程 多线程在一个进程中有多个不同的执行路径,并行执行。目的为了提高程序效率 * 3. 在一个进程中一定会有主线程 * 4. 线程分几种: 用户线程,守护线程 * 5. 主线程 子线程 GC线程 * 6. 进程是所有线程的集合,每一个线程是进程中的一条执行路径。...
2019-10-02 19:50:38
190
原创 java面试
文章目录1. hashmap2.JVM2.1详细jvm内存模型2.2 讲讲什么情况下回出现内存溢出,内存泄漏?2.3 JVM 年轻代到年老代的晋升过程的判断条件是什么呢?2.4 类的实例化顺序2.5 JVM垃圾回收机制,何时触发MinorGC等操作2.6 各种回收算法1. hashmap1、put(key, value)中直接调用了内部的putVal方法,并且先对key进行了hash操作;2...
2019-08-21 11:21:56
150
原创 大型电商架构亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构(七)
文章目录八十九、高并发场景下恐怖的缓存雪崩现象以及导致系统全盘崩溃的后果九十、缓存雪崩的基于事前+事中+事后三个层次的完美解决方案九十一、基于hystrix完成对redis访问的资源隔离以避免缓存服务被拖垮八十九、高并发场景下恐怖的缓存雪崩现象以及导致系统全盘崩溃的后果缓存雪崩这种场景,缓存架构中非常重要的一个环节,应对缓存雪崩的解决方案,避免缓存雪崩的时候,造成整个系统崩溃,带来巨大的经济损...
2019-08-14 13:30:04
2361
原创 大型电商架构亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构(六)
文章目录七十五、深入理解hystrix的短路器执行原理以及模拟接口异常时的短路实验七十六、深入理解线程池隔离技术的设计原则以及动手实战接口限流实验七十七、基于timeout机制来为商品服务接口的调用超时提供安全保护七十八、基于hystrix的高可用分布式系统架构项目实战课程的总结七十九、基于request collapser请求合并技术进一步优化批量查询八十、hystirx的fail-fast与f...
2019-08-13 17:06:50
1251
2
空空如也
多层级组织树,怎么通过多个id,查询出其所有的父级
2022-06-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人