架构师学习
文章平均质量分 79
机智的豆子
现在学习编程还在挣扎阶段,需要有恒心才能坚持下来。
展开
-
分布式解决方案-解决网站跨域请求
1.什么是网站跨域 跨域原因产生:在当前域名请求网站中,默认不允许通过ajax请求发送其他域名。 两个项目之间使用ajax(前端类似后端的httpclient)实现通讯,如果浏览器访问的域名和端口与ajax请求访问的地址不一样的情况下,默认情况下浏览器会有安全机制,这个机制跨域问题,会无法获取返回结果。原理图:2原创 2020-06-26 15:34:34 · 465 阅读 · 3 评论 -
高并发情况下分布式全局Id生成
全局id生成高并发情况下,生成分布式全局id策略1、注意幂等性且全局唯一性2、注意安全性,不能被猜疑3、趋势递增性订单号命名规则:比如“业务编码 + 时间戳 + 机器编号[前4位] + 随机4位数 + 毫秒数”。1、利用全球唯一UUID生成订单号优缺点1.1 从利用全球唯一UUID生成订单号UUID基本概念:UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。UUID组成部分:当前日期和时间+时钟序列+随机数+全局唯一的IEEE机器识别号全局唯一的IEEE机器原创 2020-06-26 11:01:02 · 259 阅读 · 0 评论 -
互联网安全架构--安全漏洞
常见Web安全漏洞1.XSS攻击1.1什么是XSS攻击手段XSS攻击使用Javascript脚本注入进行攻击例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑客服务器端。<script>alert('sss')</script><script>window.location.href='http://www.itmayiedu.com';</script>对应html源代码: <script原创 2020-06-23 21:31:04 · 442 阅读 · 0 评论 -
Elasticsearch+Logstash+Kiabana
1.Logstash环境搭建1.1Logstash环境安装1、上传logstash安装包(资料)2、解压tar –zxvf logstash-6.4.3.tar.gz3、在config目录下放入mayikt02.conf 读入并且读出日志信息1.2将Logstash输入到ES中input { # 从文件读取日志信息 输送到控制台 file { path => "/usr/local/elasticsearch-6.4.3/logs/myes.log"原创 2020-06-22 23:44:31 · 238 阅读 · 0 评论 -
SpringBoot整合Elasticsearch
SpringBoot整合ESSpringBoot整合ES实现网盘搜索引擎项目环境搭建数据结构分析POST /clouddisk/_mapping/disk{ "disk": { "properties": { "baiduaddres": { "type": "keyword" }, "browsetimes": { "type": "long"原创 2020-06-22 22:33:26 · 415 阅读 · 0 评论 -
Elasticsearch安装和入门
1.Elasticsearch简单介绍 Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在储、搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。Elasticsea原创 2020-06-15 00:08:45 · 307 阅读 · 0 评论 -
Spring Cloud Sleuth整合Zipkin实现链路监控
1.分布式链路监控与追踪产生背景 在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果,在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,这个时候,对请求调用的监控就显得尤为重要了。Spring Cloud Sleuth 提供了分布式服务链路监控的解决方案。下面介绍 Spring原创 2020-05-24 10:46:25 · 507 阅读 · 0 评论 -
Hystrix实现熔断、降级、服务隔离
1.Hystrix简介1.1 使用Hystrix实现服务隔离 Hystrix 是一个微服务关于服务保护的框架,是Netflix开源的一款针对分布式系统的延迟和容错解决框架,目的是用来隔离分布式服务故障。它提供线程和信号量隔离,以减少不同服务之间资源竞争带来的相互影响;提供优雅降级机制;提供熔断机制使得服务可以快速失败,而不是一直阻塞等待服务响应,并能从中快速恢复。Hystrix通过这些机制来阻止级联失败并保证系原创 2020-05-24 09:46:54 · 1345 阅读 · 0 评论 -
布隆过滤器的原理和实现(Guava、Redis)
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>21.0</version> </dependency>/** * Hello world! */public class App { /** * 插入.原创 2020-05-15 00:40:52 · 800 阅读 · 0 评论 -
SpringBoot整合Sharding-Jdbc
1.Sharding-Jdbc介绍Sharding-Jdbc在3.0后改名为ShardingSphere它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-Sphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数原创 2020-05-14 23:37:06 · 2136 阅读 · 0 评论 -
Mycat查询原理、取模算法和枚举算法
1.取模算法1.1相关配置文件rule.xml<?xml version="1.0" encoding="UTF-8"?><!-- - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the Lic原创 2020-05-11 21:37:13 · 2465 阅读 · 0 评论 -
Mycat入门和读写分离实战
1.什么是MyCat MyCAT是一款由阿里Cobar演变而来的用于支持数据库,读写分离、分表分库的分布式中间件。MyCAT支持Oracle、MSSQL、MYSQL、PG、DB2关系型数据库,同时也支持MongoDB等非关系型数据库。 MyCAT原理MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做原创 2020-05-09 22:32:17 · 2059 阅读 · 0 评论 -
RabbitMQ消息应答模式、事务、公平转发
1.消息应答模式(手动、自动)1.1应答模式 为了确保消息不会丢失,RabbitMQ支持消息应答。消费者发送一个消息应答,告诉RabbitMQ这个消息已经接收并且处理完毕了。RabbitMQ就可以删除它了。 &nb...原创 2020-05-07 02:03:12 · 1867 阅读 · 0 评论 -
RabbitMq的原理及四种常用方式(direct,fanout,topic)
1.RabbitMQ简介在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么? MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。 RabbitMQ是...原创 2020-02-26 01:11:54 · 1850 阅读 · 0 评论 -
RabbitMq的安装和三种常用方式(direct,fanout,topic)
RabbitMq原理 请参考这篇文档和Springboot整合RabbitMq1.Rabbit安装1.安装Erlang由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。 从EPEL源安装(这种方式安装的Erlang版本可能不是最新的,有时候不能满足RabbitMQ需要的最低版本)...原创 2020-05-07 00:04:50 · 1459 阅读 · 3 评论 -
Kafka原理以及SpringBoot整合Kafka
1.Kafka原理1. brokers有多个broker组成,broker是指Kafka服务器(192.168.223.140就是其中的一个broker),上面三台Kafka服务器组成了Kafka集群2. broker.id代表集群中broker的唯一性,不能重复3. partions主题分区数。kafka通过分区策略,将不同的分区分配在一个集群中的broker上,一般会分散在不同的bro...原创 2020-05-05 16:53:46 · 1586 阅读 · 0 评论 -
Kafka集群环境搭建
Kafka集群环境搭建1.安装kafka集群,要确保安装zookeeper集群zookeeper安装方式2. Kafka安装3台虚拟机均进行以下操作:2.1 解压下载好的kafka压缩包并重命名cd /usr/localwget http://mirror.bit.edu.cn/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz tar -zxvf ka...原创 2020-05-05 10:18:14 · 1286 阅读 · 8 评论 -
Zookeeper搭建集群
Zookeeper集群环境搭建1.每台服务器节点上安装jdk1.8环境使用java -version命令测试 java -version2.每台服务器节点上安装Zookeeper1.下载并且安装zookeeper安装包wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeep...原创 2020-05-05 00:40:31 · 2375 阅读 · 13 评论 -
Redis的分布式锁
1.基于Redis的分布式锁1.使用常用命令SETNXSETNX key val当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。Expireexpire key timeout为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁。Deletedelete key 删除key在使用Redis实现分...原创 2020-04-11 00:12:36 · 349 阅读 · 13 评论 -
分布式锁的实现方案
1.什么是分布式锁分布式锁一般用在分布式系统或者多个应用中,用来控制同一任务是否执行或者任务的执行顺序。在项目中,部署了多个tomcat应用,在执行定时任务时就会遇到同一任务可能执行多次的情况,我们可以借助分布式锁,保证在同一时间只有一个tomcat应用执行了定时任务2.分布式锁的实现方案1.使用数据库实现分布式锁缺点:性能差、线程出现异常时,容易出现死锁2.使用redis实现分布式锁...原创 2020-04-10 23:40:11 · 296 阅读 · 0 评论 -
Zookeeper实现分布式锁
public interface EtLock { /** * * 获取锁 */ void getLock(); /** * 释放锁 */ void unLock();}/** * @author Administrator */public abstract class AbstractZookee...原创 2020-04-09 01:56:55 · 179 阅读 · 0 评论 -
ZooKeeper安装和创建修改删除节点
1.Zookeeper应用场景## 2.Zookeeper数据结构3.Zookeeperan安装1.上传zk并且解压cd /usr/local/tar -zxvf zookeeper-3.4.6.tar.gzmv zookeeper-3.4.6 zookeeper2.修改zookeeper环境变量vi /etc/profileexport ZOOKEEPER_HOME=/usr/...原创 2020-04-09 01:13:43 · 1558 阅读 · 0 评论 -
Redis雪崩和缓存穿透
缓存雪崩缓存雪崩产生的原因缓存雪崩通俗简单的理解就是:由于原有缓存失效(或者数据未加载到缓存中),新缓存未到期间(缓存正常从Redis中获取,如下图)所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机,造成系统的崩溃。缓存失效的时候解决方案1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线...原创 2020-04-04 22:27:15 · 127 阅读 · 0 评论 -
Redis-cluster原理和实践
Redis-cluster原理1.概念原理 Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot(哈希槽),每个 Redis 实例负责其中一部分 slot(哈希槽) 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期...原创 2020-04-04 15:18:14 · 250 阅读 · 0 评论 -
Redis 哈希槽概念
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节...原创 2020-04-04 10:51:00 · 977 阅读 · 0 评论 -
redis事务原理和实践
Redis事务的概念: Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 &n...原创 2020-04-04 10:01:28 · 243 阅读 · 0 评论 -
lvs+keepalived+nginx双机主从热备
1.相关名词介绍1.1 LVS是什么? lvs是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。 目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),linux虚拟机已经自己安装了,无需安装了。1.2 keepalived是什么? ...原创 2020-04-01 00:27:08 · 441 阅读 · 0 评论 -
JVM参数调优和垃圾收集器
1.常见参数配置-XX:+PrintGC 每次触发GC的时候打印相关日志-XX:+UseSerialGC 串行回收-XX:+PrintGCDetails 更详细的GC日志-Xms 堆初始值-Xmx 堆最大可用值-Xmn 新生代堆最大可用值-XX:SurvivorRatio 用来...原创 2020-03-25 01:08:35 · 209 阅读 · 0 评论 -
Java内存结构和常用垃圾回收算法
一.Java内存结构内存结构图Java堆(Java Heap)java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。java堆是垃圾收集器管理的主要区域,因此也被成为“GC堆”(Garbage Collected Heap)。...原创 2020-03-25 00:02:20 · 187 阅读 · 0 评论 -
重入锁、读写锁、悲观锁和乐观锁、CAS无锁原理
一、重入锁锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。在JAVA环境下 ReentrantLock 和synchronized 都是 ...原创 2020-03-24 22:11:20 · 688 阅读 · 0 评论 -
线程池4种常用方式实现以及自定义线程池原理
1.什么是线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。 当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。 线程是稀缺资源,如果无限制地创建,不仅会消耗系统...原创 2020-03-13 02:12:16 · 1708 阅读 · 1 评论 -
Synchronized和Volatile的区别
1.多线程三大特性?原子性、可见性、有序性(1)什么是原子性? 即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2...原创 2020-03-11 22:47:33 · 209 阅读 · 0 评论