架构
SoLucky2017
这个up主有点懒,懒上青天
展开
-
分布式锁用 Redis 还是 Zookeeper?
为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis里面的某个商品库存为1,此时两个请求同时到来,其中一个请求执行到上图的第3步,更新数据库的库存为0,但是第4步还原创 2020-11-12 09:29:32 · 112 阅读 · 0 评论 -
分布式锁
一、业务场景同一个jvm里多个线程操作同一个有状态的变量,可以通过JVM内的锁保证线程安全。如果是多个JVM操作同一个有状态的变量,如何保证线程安全呢?这时候就需要分布式锁来发挥它的作用了二、特点分布式系统往往业务流量比较大、并发较高,对分布式锁的高可用和高性能有较高的要求。一般分布式锁的方案需要满足如下要求: 有高可用的获取锁和释放锁功能 获取锁和释放锁的性能要好 这把锁要是一把可重入锁(避免死锁) 这把锁最好是一把阻塞锁(根据业务需求考虑要不要这条原创 2020-11-07 17:13:34 · 112 阅读 · 0 评论 -
vue element ui axios 基础版本demo
<html><head> <meta charset="UTF-8"> <!--http://localhost:6975/test/esl.html--> <!-- 引入样式 --> <!-- 引入组件vant--> <!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script.原创 2020-09-25 16:52:32 · 239 阅读 · 0 评论 -
广告投放架构
广告、增值服务、佣金,是互联网企业最常见的三种盈利手段。在这3大经典中,又以广告所占的市场份额最大,几乎是绝大部分互联网平台最主要的营收途径,业务的重要性不言而喻。从技术角度来说,广告业务涉及到AI算法、大数据处理、检索引擎、高性能和高可用的工程架构等多个方向,同样有着不错的技术吸引力。我从去年开始接触广告业务,到现在差不多一年时间了。这篇文章将结合我的个人经验,同时参考业界的优秀案例,阐述下广告系统的架构实践方案,希望让大家有所收获。内容包括以下3部分: 广告业务简介 面临的技..原创 2020-09-22 09:23:38 · 2910 阅读 · 0 评论 -
tomcat调优1
tomcat 性能调优https://blog.csdn.net/qq_28109171/article/details/84256783文章目录 总体架构 主要的组件 执行过程 tomcat 调优 内存优化 并发优化 缓存优化 IO优化 开启线程池 添加Listener 组件优化 APR Tomcat Native 配置 性能测试(工具) 1.Jmeter 可参考该博主 [https://blog原创 2020-08-27 08:43:08 · 102 阅读 · 0 评论 -
Spring @Transactional注解无效问题
一、特性@Transactional注解的特性,我们都很清楚:1. service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务管理,在每个业务方法执行时都会开启一个事务,不过这些事务采用相同的管理方式。2. @Transactional 注解只能应用到 public 可见度的方法上。 如果应用在protected、private或者 p...原创 2019-12-20 08:25:55 · 563 阅读 · 0 评论 -
高并发下接口幂等性解决方案
一、幂等性概念在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现.我的理解:幂等就是一个操作,...原创 2019-12-20 08:18:13 · 806 阅读 · 0 评论 -
dubbo-consumer-provider
总体pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apa...原创 2019-11-22 17:10:31 · 473 阅读 · 0 评论 -
分布式锁
一、问题介绍日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易请求接收(前端交易请求发送时,可能由于两次提交,后端需要识别出这是一个交易)等,怎么样实现一个分布式锁呢?一般有:zookeeper、redis、database等三种实现方式。二、分布式锁实现2.1、zookeeper2.1.1、原理z...原创 2019-11-22 16:24:41 · 842 阅读 · 0 评论 -
拆分module
1 新建project/ parent基础项目module ----》+new module---选择maven项目2 修改pom文件dependencies与dependencyManager区别:前者引用,后者声明在parent pom dependencyManager里声明redis3新建children module4 children处理pom...原创 2019-11-19 17:36:42 · 569 阅读 · 0 评论 -
分布式数据库中间件对比总结MyCat Cobar Sharding-jdbc
分布式数据库中间件对比总结(1)目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的。所以总结一个关于中间件比较的系列,希望可以对大家有帮助。1. 什么是中间件传统的架构模式就是 应用连接数据库直接对数据进行访问,这种架构特点就是简单方便。但是随着目前数据量不断的增大我们就遇到了问题:单个表数据量太大 单个库数据量太大 单台数据量...原创 2019-11-19 16:17:49 · 2704 阅读 · 0 评论 -
架构图
原创 2019-10-24 09:17:55 · 227 阅读 · 0 评论 -
分布式事务
分布式事务产生背景[database transaction]数据库事务要满足几个要求:ACIDAtomic(原子性)事务必须是原子的工作单元Consistent(一致性)事务完成时,必须使所有数据都保持一致状态Isolation(隔离性)并发事务所做的修改必须和其他事务所做的修改是隔离的Duration(持久性) 事务完成之后,对系统的影响是永...原创 2019-10-16 08:43:18 · 122 阅读 · 0 评论 -
2PC
关注我的博客(http://www.hollischuang.com)的人可能都知道,我之前写过一篇文章专门介绍了一下2PC和3PC(详见:关于分布式事务、两阶段提交协议、三阶提交协议)。上一篇文章中主要介绍了下这两种分布式一致性协议的概念、具体提交流程以及优缺点。本文在上篇文章的基础上在深入了解下这两种分布式一致性协议。主要来分析下为什么2PC存在数据一致性问题,3PC是如何解决了部分2PC存在...转载 2019-10-14 17:30:02 · 151 阅读 · 0 评论 -
ETCD 简介 + 使用
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音,本文...原创 2019-09-20 11:13:00 · 189 阅读 · 0 评论 -
链路监控
原创 2019-09-05 10:58:57 · 372 阅读 · 0 评论 -
spark java world-count例子
导入spark包 在项目页“File” -> "project structure" -> "Libraries", 点“+”,选“java”,找到spark-assembly-1.2.0-hadoop2.4.0.jar导入,这样就可以编写spark的scala程序了(例子有空补)下载spark的jar包, 在下载页面选择相应的spark版本, 包类型这里选择spark1...原创 2019-05-05 13:00:34 · 285 阅读 · 0 评论 -
zookeeper+kafka集群
------------------------------------zookeper:59.110.173.251(xianshang ssq) /home/appinstall/zookeeper-3.4.947.94.133.25 (xianshang 5M host)/home/songlk/appinstall/zookeeper-3.4.960.205.136.5...原创 2019-03-14 15:01:20 · 496 阅读 · 14 评论 -
告诉你如何回答"线上CPU100%排查"面试问题
不知道在大家面试中,有没有遇到这个问题:生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢?这个问题分为两版回答!高调版对不起,我是做研发的,这个问题在生产上是不可能遇见的!因为研发是不可能直接操作生产服务器,如果贵公司能出现这个问题,应该要反思一下自己的权限控制是否合理!面试官心里活动:装13是不是,赶紧走!低调版这个问题我在生产上...原创 2019-01-30 13:50:42 · 846 阅读 · 0 评论 -
Shareding-jdbc
https://blog.csdn.net/wudufeng/article/details/78688240转载 2019-01-14 09:06:08 · 1212 阅读 · 0 评论 -
AWS01
AWSIAMEBS Amazon Elastic Block Storehttps://amazonaws-china.com/cn/ebs/EC2ec2类型https://amazonaws-china.com/cn/ec2/instance-types/T2T2 实例是突发性能实例,为 CPU 性能提供基本水平的同时具有短期发挥更高性能的能力。T2 ...原创 2018-11-06 12:52:13 · 635 阅读 · 0 评论 -
MQ相关问题
目录为什么使用消息队列MQ缺点MQ横向对比高可用如何保证消息不被重复消费啊(如何保证消息消费时的幂等性)?丢数据 rabbitmq丢数据kafka丢消息保证消息顺序消息积压kafka积压activeMQ积压1 概述2 消息队列通信图3 问题定位与分析3.1 消息通知数据为什么会被积压?3.2 配置了多个ActiveMQ的消费...原创 2018-11-13 09:59:48 · 3345 阅读 · 1 评论 -
redis高可用,保证高并发
目录redis如何通过读写分离来承载读请求QPS超过10万+redis replication以及master持久化对主从架构的安全意义 redis主从复制原理、断点续传、无磁盘化复制、过期key处理redis replication的完整流运行程和原理的再次深入剖析 redis主从架构下如何才能做到99.99%的高可用性? redis哨兵架构的相关基础知识的讲解1、哨兵的...转载 2018-11-15 17:51:29 · 18647 阅读 · 2 评论 -
架构常见问题
因为java面试题是一个较为大的体系,所以我们会拆分为几季来讲解,预计是会推出3季,本次是第一季,第一季课程包含的内容如下: 1、分布式系统1.1 为什么要进行系统拆分?(1)为什么要进行系统拆分?如何进行系统拆分?拆分后不用dubbo可以吗?dubbo和thrift有什么区别呢?1.2 分布式服务框架(1)说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?...原创 2018-11-12 18:00:55 · 3014 阅读 · 1 评论 -
分布式搜索引擎相关问题
lucene 如果你确实真的不连lucene都不知道是什么?我觉得你确实不应该,lucene底层的原理是一个东西,叫做倒排索引。太基础了。lucen入门:https://www.cnblogs.com/rodge-run/p/6551152.htmlhttps://blog.csdn.net/qq_34337272/article/details/79764305倒排序:...原创 2018-11-14 17:06:35 · 528 阅读 · 0 评论 -
Redis相关problem问题
LRU算法hash一致性算法目录https://blog.csdn.net/middleware2018/article/details/80355418 为啥在项目里要用缓存呢?1)高性能10万 QPS2)高并发Mysql 不到一万,redis内存存储常见的缓存问题 1)缓存与数据库双写不一致2)缓存雪崩3)缓存穿透4)缓存并发竞争Re...原创 2018-11-15 10:03:15 · 197 阅读 · 0 评论 -
linux性能优化
转载:转载 2018-11-22 11:28:52 · 116 阅读 · 0 评论 -
自启动apache
https://blog.csdn.net/aerchi/article/details/80859894Apache 的服务第一、启动、终止、重启systemctl start httpd.service #启动systemctl stop httpd.service #停止systemctl restart httpd.service #重启第二、设置开机启动/关闭sys...转载 2018-11-20 14:04:47 · 568 阅读 · 0 评论 -
redis key热点以及解决方案
目录 一、热点Key问题产生的原因1 高频读写:点赞 2单个server极限二、热点Key问题的危害击穿 雪崩三、解决方案1、服务端缓存方案Ehcache: FIFO LRU LFU2、使用 Memcache、Redis 方案3、使用本地缓存方案4、读写分离方案解决热读5、热点数据解决方案四、热点 key 处理1、热点数...转载 2018-11-27 09:17:40 · 467 阅读 · 0 评论 -
session一致性
目录 一、Session Replication 方式管理 (即session复制)二、Session Sticky 方式管理三、缓存集中式管理一、Session Replication 方式管理 (即session复制) 简介:将一台机器上的Session数据广播复制到集群中其余机器上 使用场景:机器较少,网络流量较小 优...原创 2018-11-28 09:35:04 · 181 阅读 · 1 评论 -
ThreadLocal测试代码示例
package com.bjsxt.base.conn010;public class ConnThreadLocal { public static ThreadLocal<String> th = new ThreadLocal<String>(); public void setTh(String value){ th....原创 2018-12-12 16:04:18 · 905 阅读 · 0 评论 -
lucky娜娜 Linux下MySQL安装
https://www.cnblogs.com/nzplearnSite/p/5002775.html Linux下MySQL安装环境:centos6.8 32位 本教程安装MySQL是通过编译过的二进制文件进行安装。是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件 1、下载 http://dev.mysql.com/downloads/mysql/...原创 2018-12-21 08:52:53 · 219 阅读 · 0 评论 -
解决乱码
https://blog.csdn.net/u012410733/article/details/61619656 执行如下命令进行重启,两种方法都可以:# /etc/init.d/mysqld restart# service mysqld srestart原创 2018-12-21 08:53:25 · 177 阅读 · 0 评论 -
springboot导出war与本地运行配置对比
本地运行注释掉:@SpringBootApplication(exclude = {QuartzAutoConfiguration.class})@EnableTransactionManagement@ServletComponentScanpublic class Application// war导出打开// extends// ...原创 2018-12-24 16:32:12 · 164 阅读 · 1 评论 -
cannal操作数据库 同步Mysql数据
https://blog.csdn.net/zjerryj/article/details/77152226转载 2019-01-14 09:03:46 · 2573 阅读 · 0 评论 -
Otter
https://blog.csdn.net/wudufeng/article/details/78688240转载 2019-01-14 09:05:12 · 366 阅读 · 0 评论 -
搭建Tomcat集群&通过Redis缓存共享session的一种流行方案
为什么要共享session?我们使用单台Tomcat的时候不会有共享sesssion的疑虑,只要使用Tomcat的默认配置即可,session即可存储在Tomcat上。但是随着业务的扩大,增加Tomcat节点构成Tomcat集群大势所趋,分布式带来了增加更大规模并发请求的优势,但是也随之到来了一个问题,每个Tomcat只存储来访问自己的请求产生的session,如果Tomcat-A已经...转载 2018-10-11 14:23:03 · 397 阅读 · 0 评论