摘要:1.开关 先讲一下开关的由来,例如京东在6月18日做店庆促销活动,在交易下单环节,可能需要调用A、B、C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时系统没有压力,容量充足的情况下,调用下没问题,但是在类似店庆之类的大促环节,系统已经满负荷了
阅读全文
摘要:为了进一步提高消费者对用户的响应速度,减轻提供者的压力,Dubbo提供了基于结果的声明式缓存。该缓存是基于消费者端的,所以使用很简单,只需修改消费者配置文件,与提供者无关 一、Dubbo中缓存策略 lru 基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。 threadlocal 当前线程缓存
阅读全文
摘要:一 背景 Dubbo是一个分布式服务框架,能避免单点故障和支持服务的横向扩容。一个服务通常会部署多个实例。如何从多个服务 Provider 组成的集群中挑选出一个进行调用,就涉及到一个负载均衡的策略。 二 Dubbo内置负载均衡策略 Dubbo内置了4种负载均衡策略: Random:随机负载均衡。随
阅读全文
摘要:一、基础概念 容错即“耐故障”或“容许故障”的意思。对于组成系统的元器件发生不可避免的故障时,采取响应的措施,仍能使系统维持正常工作状态。 容错模式:是解决容错问题的一系列解决方案。 二、dubbo服务集群容错模式 dubbo框架为服务集群容错提供了一系列好的解决方案,在此称为dubbo服务集群容错
阅读全文
摘要:第一步:在 Linux 上安装 Zookeeper Zookeeper 作为 Dubbo 服务的注册中心, Dubbo 原先基于数据库的注册中心,没采用 Zookeeper , Zookeeper 一个分布式的服务框架,是树型的目录服务 的数据存储,能做到集群管理数据 ,这里能很好的作为 Dubbo
阅读全文
摘要:一、什么是dubbo Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含: 远程通讯: 提
阅读全文
摘要:1 ArrayList是线程安全的吗? 否 2 多线程情况下往ArrayList里面添加元素,会导致什么问题? 源码分析 public boolean add(E e) { //检测长度并扩容 ensureCapacityInternal(size + 1); // Increments modCo
阅读全文
摘要:JDK1.7 版本 ConcurrentHashMap 的数据结构是由一个 Segment 数组和多个 HashEntry 组成。简单理解就是ConcurrentHashMap 是一个 Segment 数组,Segment 通过继承 ReentrantLock 来进行加锁,所以每次需要加锁的操作锁住
阅读全文
摘要:1.前言 大多数互联网系统是分布式部署的,分布式部署解决了高并发高可用的问题,但是由此带来了数据一致性问题。 当某个资源在多系统之间,被共享操作的时候,为了保证这个资源数据是一致的,那么就必须要求在同一时刻只能被一个客户端操作,不能并发的执行,否者就会出现同一时刻有客户端写,别的客户端在读,两者访问
阅读全文
摘要:一、主从复制 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。 。但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个
阅读全文
摘要:redis主从保证数据一致性 前言 在redis中为了保证redis的高可用,一般会搭建一种集群模式就是主从模式。 主从模式可以保证redis的高可用,那么redis是怎么保证主从服务器的数据一致性的,接下来我们浅谈下redis主(master)从(slave)同步的原理。 初次全量同步(即从节点作
阅读全文
摘要:一 redis key的设计 越短,而且要完整表达含义,可以缩写,但必须文档留存好说明 user:001 tm:order:001 order:1 一般以业务,功能模块或者表名开头,后跟主键(或能表示数据唯一性的值) 二 客户端连接redis 普通实现 import redis.clients.je
阅读全文
摘要:Redis是什么? Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性: 基于内存运行,性能高效 支持分布式,理论上可以无限扩展 key-value存储系统 开源的使用ANSI
阅读全文
摘要:覆盖索引概念: MySQL可以利用索引返回select列表中的字段值(就是索引值)。而不必根据主键再次读取聚簇索引数据文件查到数据,也就是平时所说的不需要回表操作。覆盖索引其实是索引覆盖的意思,索引字段就已经囊括select查询的字段,即索引字段覆盖了需查询的字段。 可以看一个例子 举个栗子,假如有
阅读全文
摘要:知识储备: 通过前面的介绍,我们已经知道,索引分为聚簇索引和非聚簇索引,mysql的所有数据都保存在聚簇索引里,B+tree的非叶子节点存的是键值和指针(指向数据页) 有了了解后,我们再专门来说一下,mysql的数据页 我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通
阅读全文
摘要:主要作用:将数组转化为List 使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合。 而一开始asList的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比较更方便的打印函数Arrays.toString(),于是打印不再使
阅读全文
摘要:一 概念 迭代器是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器对象中的各个元素的方法,而不必暴露容器对象的内部细节。 作用: 1 通过迭代器,开发人员不需要了解容器结构,就可以遍历容器元素。被称为轻量级容器(创建迭代器代价很小) 2 它的特点是更加安全,因为它可以确保,在当前
阅读全文