自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(485)
  • 收藏
  • 关注

原创 远程调用 Dubbo 与 Feign 的区别

一、相同点Dubbo 与 Feign 都依赖注册中心、负载均衡。二、区别1、协议Dubbo:支持多传输协议(Dubbo、Rmi、http、redis等等),可以根据业务场景选择最佳的方式。非常灵活。默认的Dubbo协议:利用Netty,TCP传输,单一、异步、长连接,适合数据量小、高并发和服务提供者远远少于消费者的场景。Feign:基于Http传输协议,短连接,不适合高并发的访问。2、负载均衡Dubbo:支持4种算法(随机、轮询、活跃度、Hash一致性),而且算法里面引入权重的概

2020-09-23 22:02:21 4365

原创 史上最全 SpringBoot 注解详解
原力计划

一、注解(annotations)列表1、@SpringBootApplication包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让Spring Boot扫描到Configuration类并把它加入到程序上下文。2、@ComponentScan组件扫描,可自动发现和装配一些Bean...

2020-04-20 22:41:45 2966 7

原创 史上最全 Lombok Features 注解详解
原力计划

文章目录一、@Getter and @Setter二、@ToString三、@EqualsAndHashCode四、@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor五、@Data六、@Value七、@Builder八、@Accessors九、@Slf4j and @Log4j十、@NonNull十一、@Sync...

2020-04-08 00:39:55 900 2

原创 spring的controller是单例还是多例,怎么保证并发的安全。

答案:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。我们下面来简单的验证下:package com.riemann.springbootdemo.controller;import org.springframework.context.annotation.Scope;import org.springframew...

2019-07-29 23:48:06 14318 13

原创 Proxyee-down的下载与安装教程

这个工具的名字是 proxyee-down,是在 GitHub 上发现的,工具的地址是:https://github.com/proxyee-down-org/proxyee-down下载安装教程下wiki有:https://github.com/proxyee-down-org/proxyee-down/wiki/软件下载与运行本博客Proxyee-down版本为:2.54Proxy...

2019-04-13 00:04:23 20698 23

原创 史上最全BATJ面试题精选附答案

目录JAVA基础JVM知识开源框架知识操作系统多线程TCP与HTTP架构设计与分布式数据结构与算法数据库知识消息队列缓存搜索JAVA基础String,Stringbuffer,StringBuilder的区。ArrayList和LinkedList有什么区别。什么是HashMap?用过哪些Map类,都有什么区别JAVA8的ConcurrentHashMap...

2019-01-17 21:51:03 1118 6

原创 我的架构梦:(八十二)MongoDB常用命令操作

一、MongoDB的基本操作1、查看数据库show dbs;2、切换数据库,如果没有对应的数据库则创建use 数据库名;切换库,如果库不存在则自动创建此库。创建新的库,再次查询时,并没有显示新创建的库信息,因为库中没有内容,所有不显示。3、创建集合 (相当于创建表)db.createCollection("集合名")4、查看集合show tables;show collections;5、删除集合db.集合名.drop();6、删除当前数据库db.dro

2021-01-23 00:20:49 19

原创 我的架构梦:(八十一)MongoDB在Linux环境下的搭建

一、安装MongoDB1、下载社区版 MongoDB 4.1.3去官网下载对应的MongoDB 然后上传到Linux虚拟机或者直接从云盘下载:MongoDB 4.1.3 云盘下载地址 , 提取码: hj9e2、将下载的mongodb上传到linux系统3、将压缩包解压即可tar -zxvf mongodb-linux-x86_64-4.1.3.tgz4、启动./bin/mongod启动失败,缺少目录。创建缺少的目录,重新启动mongodb。mkdir -p /data/db

2021-01-21 00:24:39 39

原创 我的架构梦:(八十)MongoDB的体系结构

一、NoSQL 和 MongoDBNoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。其性能较高, 不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵活。NoSQL数据库四大家族:列存储 Hbase,键值(Key-Value)存储 Redis,图像存储 Neo4j,文档存储 MongoDB。MongoDB 是一个基于分布式文件存储的数据库,由 C++ 编写,可以为 WEB 应用提供可扩展、 高性能、易部

2021-01-20 22:33:39 41 1

原创 我的架构梦:(七十九)基于Sharding-JDBC实现订单表的(两主四从)分库分表和读写分离

一、前言1、搭建要求搭建 两套一主二从 主从集群 架构,如下图。基于user_id对c_order表进行数据分片(分库)基于id对c_order表进行数据分表,分别是:c_order1和c_order2基于master1和master2 实现 读写分离2、建表语句CREATE TABLE `c_order1`( `id` bigint(20) NOT NULL AUTO_INCREMENT, `is_del` bit(1) NOT NULL DEFAULT 0 COMMENT '是否

2021-01-20 01:07:08 45 1

原创 我的架构梦:(七十八) MySQL高可用MHA架构搭建(下)

一、MHA架构MHA(Master High Availability)是一套比较成熟的 MySQL 高可用方案,也是一款优秀的故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。MHA还支持在线快速将Master切换到其他主机,通常只需0.5-2秒。目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器。MH

2021-01-18 01:11:36 45

原创 我的架构梦:(七十七) MySQL高可用MHA架构搭建(上)

一、读写分离1、读写分离引入时机大多数互联网业务中,往往读多写少,这时候数据库的读会首先成为数据库的瓶颈。如果我们已经优化了SQL,但是读依旧还是瓶颈时,这时就可以选择“读写分离”架构了。读写分离首先需要将数据库分为主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过主从复制机制进行数据的同步,如图所示。在应用中可以在从库追加多个索引来优化查询,主库这些索引可以不加,用于提升写效率。读写分离架构也能够消除读写锁冲突从而提升数据库的读写性能。使用读写分离架构需要注意:主从同步延迟

2021-01-15 01:01:30 61

原创 Parallels Desktop 16 网络初始化失败,无法联网、无法连接USB的解决方法

安装Parallels Desktop 16 的时候如果出现网络初始化失败,如下图:打开目录 /Library/Preferences/Parallels/复制文件 network.desktop.xml 和 dispatcher.desktop.xml 文件到桌面1、修复网络连接用文件编辑打开 network.desktop.xml搜索 UseKextless ,如果有,则将此行修改为 <UseKextless>0</UseKextless>如果没有此属性,则添加

2021-01-14 21:22:58 151 1

原创 我的架构梦:(七十六) MySQL读写分离架构搭建

一、前言上一篇:我的架构梦:(七十五) MySQL主从复制架构搭建 中遗留了一点问题,我们这节来消灭掉。mysql主从复制存在的问题:主库宕机后,数据可能丢失从库只有一个SQL Thread,主库写压力大,复制很可能延时解决方法:半同步复制(解决数据丢失的问题)并行复制(解决从库复制延迟的问题)这一节我们就来介绍半同步复制和并行复制来解决上一节遗留的问题。二、半同步复制1、半同步复制概述为了提升数据安全,MySQL让Master在某一个时间点等待Slave节点的 ACK(Ac

2021-01-14 00:03:35 67

原创 我的架构梦:(七十五) MySQL主从复制架构搭建

一、搭建准备1、软件版本软件版本虚拟机 Parallels Desktop16.1.2服务器 CentOS LinuxCentOS-7-x86_64-DVD-1810.iso数据库 MySQL5.7.28远程连接 ZenTermLite4.2.02、架构介绍机器名称角色权限IPMaster数据库Master可读写、主库10.211.55.3Slave1数据库Slave只读、从库10.211.55.4Sl

2021-01-12 23:08:26 74

原创 ‘Could not find first log file name in binary log index file‘

mysql主从复制的搭建过程中,从数据库一直报这个错。原因:从数据库读取日志文件位置问题,没有与主数据的位置相对应;解决方式:1、查看主数据库的状态2、更改从数据库读取日志的文件和位置CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=154;然后主从关系生效:...

2021-01-12 22:38:08 32

原创 我的架构梦:(七十四) Parallels Desktop搭建CentOS Linux

之前用的Windows的VMWare,现在换成MAC系统后,听朋友说Parallels Desktop是专为MAC系统量身打造的虚拟机,所以下载下来搭建了一番。1、Parallels Desktop安装Parallels Desktop官网下载地址: https://www.parallels.cn/products/desktop/pro/想要免费版的也可以找我哈~2、Centos Linux安装这里博主直接给你分享了,直接点击下载完事。链接: https://pan.baidu.com/s/

2021-01-11 01:59:13 95 1

原创 我的架构梦:(七十三) 消息中间件之RabbitMQ的消息消费的源码分析

一、消费的方式1、拉消息// 指定从哪个消费者消费消息// 指定是否自动确认消息 true表示自动确认final GetResponse getResponse = channel.basicGet("queue.biz", true);2、推消息// 监听消息,一旦有消息推过来,就调用第一个lambda表达式channel.basicConsume("queue.ca", (consumerTag, message)->{ System.out.println(new String

2021-01-05 23:55:41 64

原创 我的架构梦:(七十二) 消息中间件之RabbitMQ的消息发送的源码分析

一、消息发送案例public class MyProducer { public static void main(String[] args) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setUri("amqp://root:123456@47.113.82.141:5672/%2f"); final Connection con

2021-01-04 01:12:41 80 6

原创 我的架构梦:(七十一) 消息中间件之RabbitMQ的消息持久化

一、前言消息流转示意图:rabbit_channel进程确定了消息将要投递的目标队列,rabbit_amqqueue_process是队列进程,每 个队列都有一个对应的进程,实际上rabbit_amqqueue_process进程只是提供了逻辑上对队列的相关操作,他的真正操作是通过调用指定的backing_queue模块提供的相关接口实现的,默认情况该 backing_queue的实现模块为rabbit_variable_queue。 RabbitMQ队列中的消息随着系统的负载会不断的变化,一个消息可

2021-01-03 23:03:47 35

原创 2020年终总结暨2021年计划安排

一、前言一年前的今天,我们约定在我CSDN的见证我们去年的一年的成果。这个约定比我想象的来的更快些,逝水流年,孤影沐清辉,斜倚旧事回眸痴。我们都知道,2020年是一个不平凡之年、是一个热泪盈眶之年、是一个必定载入史册之年。一场新冠疫情席卷全球,各种大小赛事纷纷取消,每个人都戴着口罩,世界仿佛按下了暂停键。好在我们生活在的红土地上,对疫情重视刻不容缓,与时间赛跑、与新冠斗争,上演了一系列为之动容的支援救援事迹。直接导致全球的经济低迷,在这样的恶劣环境下,很多人被优化、房贷断供、各种小公司倒闭、实体经济重创,

2020-12-31 23:50:38 988 4

原创 我的架构梦:(七十) 消息中间件之RabbitMQ的消息可靠性

一、案例你用支付宝给商家支付,如果是个仔细的人,会考虑我转账的话,会不会把我的钱扣了,商家没有收到我的钱?一般我们使用支付宝或微信转账支付的时候,都是扫码,支付,然后立刻得到结果,说你支付了多少钱,如果你绑定的是银行卡,可能这个时候你并没有收到支付的确认消息。往往是在一段时间之后, 你会收到银行卡发来的短信,告诉你支付的信息。小伙伴有没有想过:支付平台如何保证这笔帐不出问题?支付平台必须保证数据正确性,保证数据并发安全性,保证数据最终一致性。支付平台通过如下几种方式保证数据一致性:1、分布式

2020-12-31 00:29:05 132 4

原创 我的架构梦:(六十九) 消息中间件之RabbitMQ的安装与配置

一、安装环境1、阿里云主机2、操作系统:centos-release-7-8.2003.0.el7.centos.x86_643、Erlang:erlang-23.0.2-1.el7.x86_644、RabbitMQ:rabbitmq-server-3.8.5-1.el7.noarchRabbitMQ的安装需要首先安装Erlang,因为它是基于Erlang的VM运行的。RabbitMQ需要的依赖:socat和logrotate,logrotate操作系统中已经存在了,只需要安装socat就可以了

2020-12-28 23:54:21 46

原创 我的架构梦:(六十八) 消息中间件之RabbitMQ的基本架构

一、RabbitMQ整体逻辑架构二、RabbitMQ Exchange类型RabbitMQ常用的交换器类型有: fanout 、 direct 、 topic 、 headers 四种。1、Fanout会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中,如图:2、Directdirect类型的交换器路由规则很简单,它会把消息路由到那些BindingKey和RoutingKey完全匹配的 队列中,如下图:3、Topictopic类型的交换器在direct匹配规则上进行了扩展,也

2020-12-28 23:30:07 39

原创 我的架构梦:(六十七) 消息中间件之RabbitMQ、RocketMQ、Kafka的区别及选型

一、消息中间件概念维基百科对消息中间件的解释:面向消息的系统(消息中间件)是在分布式系统中完成消息的发送 和接收的基础软件。消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基 于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进 程的通信。消息中间件就是在通信的上下游之间截断:break it,Broker然后利用中间件解耦、异步的特性,构建弹性、可靠、稳定的系统。异步处理、流量削峰、限流、缓冲、排队、最终一致性、消息驱动等

2020-12-22 23:54:13 68

原创 我的架构梦:(六十六) 消息中间件之分布式架构通信

一、分布式架构通信原理1、SOA架构来看下某招聘网站的架构根据实际业务,把系统拆分成合适的、独立部署的模块,模块之间相互独立。优点:分布式、松耦合、扩展灵活、可重用。SOA架构系统中,使用Dubbo和Zookeeper进行服务间的远程通信。优点:Dubbo使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以减少报文的体积,提高传输效率。2、微服务架构SpringCloud中使用Feign解决服务之间远程通信的问题。Feign:轻量级RESTful的HTTP服务

2020-12-22 22:39:54 50

原创 我的架构梦:(六十五) 分布式缓存 Redis 之手把手带你搭建三主三从集群

一、环境准备1、环境软件版本操作系统:CentOS7.7Redis:5.0.82、Redis主从架构架构如下表所示,4台机器,4个主节点,4个从节点:名称IP端口角色master147.113.82.1426379主节点1master247.113.82.1426380主节点2master347.113.82.1426381主节点3master447.113.82.1426382主节点4slave147.113.82.14

2020-12-13 11:04:33 95

原创 我的架构梦:(六十四) 分布式缓存 Redis 之大厂面试汇总

一、缓存穿透、缓存雪崩、缓存击穿Redis面试毫无疑问,这个应该是最常遇见的吧。。。那我们就来看看业界是怎么处理这些问题的。1、缓存穿透一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如 DB)。缓存穿透是指在高并发下查询key不存在的数据,会穿过缓存查询数据库。导致数据库压力过大而宕机。解决方案:对查询结果为空的情况也进行缓存,缓存时间(ttl)设置短一点,或者该key对应的数据insert了之后清理缓存。问题:缓存太多空值占用了更多的空间使

2020-12-02 01:27:40 121

原创 我的架构梦:(六十三) 分布式缓存 Redis 之持久化

分布式缓存 Redis 之持久化一、前言1、学习目标2、为什么要持久化二、RDB1、触发快照的方式2、RDB执行流程(原理)3、RDB文件结构4、RDB的优缺点三、AOF1、AOF持久化实现2、AOF原理3、AOF重写、触发方式、混合持久化4、AOF文件的载入与数据还原四、RDB与AOF对比五、应用场景一、前言1、学习目标理解RDB的原理和执行流程了解RDB的文件结构理解AOF的原理和执行流程理解AOF重写原理和触发方式掌握RDB和AOF的区别和应用场景2、为什么要持久化Redis是

2020-12-01 00:27:48 91

原创 我的架构梦:(六十二) 分布式缓存 Redis 之底层数据结构

分布式缓存 Redis 之底层数据结构一、前言二、RedisDB结构1、id2、dict3、expires三、RedisObject结构1、结构信息概览2、7种type3、10种encoding一、前言Redis作为Key-Value存储系统,数据结构如下:Redis没有表的概念,Redis实例所对应的db以编号区分,db本身就是key的命名空间。比如:user:1000作为key值,表示在user这个命名空间下id为1000的元素,类似于user表的id=1000的行。二、RedisDB结构

2020-11-22 17:54:42 92

原创 我的架构梦:(六十一) 分布式缓存 Redis 之缓存的读写模式

缓存有三种读写模式1、Cache Aside Pattern(常用)Cache Aside Pattern(旁路缓存),是最经典的缓存+数据库读写模式。1.1 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。1.2 更新的时候,先更新数据库,然后再删除缓存。1.3 问题:为什么是删除缓存,而不是更新缓存呢?缓存的值是一个结构:hash、list,更新数据需要遍历懒加载,使用的时候才更新缓存也可以采用异步的方式填充缓存1.4 高并发脏读

2020-11-22 15:28:45 129

原创 我的架构梦:(六十) Apache Hadoop 核心源码剖析

Apache Hadoop 核心源码剖析一、源码阅读准备二、NameNode 启动流程三、DataNode 启动流程四、NameNode如何支撑高并发访问(双缓冲机制)一、源码阅读准备1、下载Apache Hadoop-2.9.2官方源码之前也有对Spring源码做阅读准备:mac、idea、gradle编译spring源码并搭建阅读源码环境可以作参考,只不过Spring源码是gradle编译,我们这的Hadoop要用maven编译。2、将源码导入idea中启动idea在提示界面选择导入

2020-11-22 14:12:44 136

原创 我的架构梦:(五十九) Apache Hadoop 架构与原理

Apache Hadoop 架构与原理一、Hadoop的重要组成二、HDFS分布式文件系统三、MapReduce编程框架四、YARN资源调度一、Hadoop的重要组成Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算框架)+Yarn(资源协调框架)+Common模块1、Hadoop HDFS:(Hadoop Distribute File System )一个高可靠、高吞吐量的分布式文件系统比如:100T数据存储,“分而治之”分:拆分–》数据切割,100T数据拆分为10G一个

2020-11-19 00:47:21 164 2

原创 Redis使用Lua脚本保证zset的删除和插入的原子性

话不多说 直接上代码!!!@Autowiredprivate StringRedisTemplate stringRedisTemplate;private static final String DELANDZADDSCRIPT = "if redis.call('zcard', KEYS[1]) > 0 then\n" + " redis.call('del', KEYS[1])\n" + " for i, v in pairs(AR

2020-11-13 23:16:40 229

原创 我的架构梦:(五十八) FastDFS 系统架构和功能原理

FastDFS 系统架构和功能原理一、架构详解二、设计理念三、FastDFS 功能原理四、SpringBoot集成FastDFS实战一、架构详解1、storage server存储服务器(又称存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。Storage server直接利用OS的文件系统调用管理文件。Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台 storage机器,数据互为备份,存储

2020-11-09 02:32:16 137 2

原创 我的架构梦:(五十七) MongoDB集群高可用

MongoDB集群高可用一、MongoDB主从复制架构原理和缺陷二、复制集replica sets三、复制集搭建四、分片集群 Shard Cluster一、MongoDB主从复制架构原理和缺陷master-slave架构中master节点负责数据的读写,slave没有写入权限只负责读取数据。在主从结构中,主节点的操作记录成为oplog(operation log)。oplog存储在系统数据库local的 oplog.$main集合中,这个集合的每个文档都代表主节点上执行的一个操作。从服务器会定期从主

2020-11-01 22:45:44 145

原创 我的架构梦:(五十六) MongoDB架构

MongoDB架构一、MongoDB逻辑结构二、MongoDB的数据模型三、MongoDB 存储引擎一、MongoDB逻辑结构MongoDB 与 MySQL 中的架构相差不多,底层都使用了可插拔的存储引擎以满足用户的不同需要。用 户可以根据程序的数据特征选择不同的存储引擎,在最新版本的 MongoDB 中使用了 WiredTiger 作为默 认的存储引擎,WiredTiger 提供了不同粒度的并发控制和压缩机制,能够为不同种类的应用提供了最好的性能和存储率。在存储引擎上层的就是 MongoDB 的数

2020-11-01 18:26:26 106

原创 我的架构梦:(五十五) MongoDB应用场景与实战

一、MongoDB的适用场景网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。大尺寸、低价值的数据:使用传统的关系型数据库存储一些大尺寸低价值数据时会比较浪费, 在此之前,很多时候程序员往往会选择传统的文件进行存储。高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包

2020-11-01 01:06:50 154

原创 HttpClient、okhttp和RestTemplate的区别

一、HttpClient1、pom依赖<!--HttpClient--><dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version></dependency>2、HttpClient代码实现p

2020-10-19 21:13:30 641

原创 我的架构梦:(五十四) 分库分表实战及中间件之Mycat实战

分库分表实战及中间件之Mycat实战一、 Mycat 简介二、Mycat 核心概念三、server.xml配置四、schema.xml配置五、rule.xml配置六、Mycat实战七、Mycat事务一、 Mycat 简介Mycat 是一个实现了 MySQL 协议的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客 户端工具和命令行访问,而其后端可以用 MySQL 原生协议或JDBC 协议与多个 MySQL 服务器通信, 其核心功能是分库分表和读写分离,即将一个大表水平分割为 N 个

2020-10-16 00:34:40 210 2

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除