自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (3)
  • 收藏
  • 关注

原创 saas 多租户技术 springboot 基于域名动态切换数据库

前言saas 软件即服务 现在的软件服务提供商提供一套页面给各个租户,通过一个申请页面填写租户的租户信息,点击生成,租户就可以有一套自己的系统,可以自己去新建用户,角色,授权等操作。其实这就是所谓的多租户技术。多租户,通俗点说,多个租户共用同一套服务提供商提供系统资源,即跟现在流行的共享单车,充电宝差不多。多租户更多跟云计算在一起,因为你有的客户需求大,付费多,那它分配的计算资源和功能更多,比如有自己独立的应用实例,数据库,硬盘空间等。这个跟云计算的概念就差不多,云...

2021-01-19 14:43:29 2950 2

原创 springboot 原理 (一) 启动

springboot 近年来很火,因为他的一些特性。springboot 特性官方原话: Create stand-alone Spring applications (能创建独立运行的应用) Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)(内嵌tomcat,jetty,underow容器) Provide opinionated 'starter' dependencies t.

2020-07-02 14:29:06 344

原创 mysql 的一些 优化经验 记录

将一个大连接查询(JOIN)分解成对每一个表进行一次单表查询,然后将结果在应用程序中进行关联,这样做的好处有:让缓存更高效。对于连接查询,如果其中一个表发生变化,那么整个查询缓存就无法使用。而分解后的多个查询,即使其中一个表发生变化,对其它表的查询缓存依然可以使用。 分解成多个单表查询,这些单表查询的缓存结果更可能被其它查询使用到,从而减少冗余记录的查询。 减少锁竞争; 在应用层进行连接...

2020-06-29 12:19:48 213

原创 分布式服务之分布式缓存(layering-cache)

很多高性能高并发的优化最有效果的优化就是做缓存,缓存又分本地缓存和分布式缓存,分布式缓存大多数用redis,但是高并发下的redis有时候网络消耗多的时候也扛不住,于是redis又可以做分布式redis,增加redis的服务器节点和配置,但是这个成本也比较高,其实完全可以用本地缓存+redis缓存结合的方式,保证高并发下的响应速度。下面是git上一个本地缓存(一级缓存)+r...

2020-04-07 17:28:01 1562

原创 总结 项目中的技术方案选型和为什么

1,为什么要前后端分离。 1.1 前后端分离可以让开发人员更专注于自己的专业,开发效率更高 1.2 前端和后端分开部署在各自的服务器,性能更好2, 前端为什么用vue。 2.1 国人产的,支持国货 2.2 响应式编程,前端给客户体验更好 2.3 社区活跃度非常高,众多大神在后面支持你, ...

2019-09-21 18:46:21 1335

原创 k8s 内部实现服务注册和服务调用

k8s内部的服务注册主要是依靠几个组件coreDns,service和pod的标签选择器。服务注册的流程pod创建完以后,一般我们都会打算一组标签,标签是key/value形式的,如下---apiVersion: v1kind: Podmetadata: name: nginx labels: env: test #这里给这个pod打上标签spec: containers: - name: nginx image: nginx imagePul

2021-07-09 17:56:07 3213

原创 k8s 离线安装(一) 前期规划,docker ,etcd安装

1,下载k8s离线包需要的可以私我2,环境架构ip节点部署程序192.168.145.180k8s-masterdocker etct master192.168.145.181k8s-work1docker etct slave1192.168.145.182k8s-work2docker etct slave23,docker 安装3.1 上传docker-20.10.0.taz包到各个服务器。mkdir /usr/local/docker

2021-05-15 10:20:25 426 1

原创 mysql 分组后 求某个字段最大的记录

比如我们有些需求,需要查找每个省市最新的记录,原数据是这样的现在我要返回每个省市里日期最新的那条记录。mysql里我们可以这样写select id, vdate, type , province_city, price_change, price,last_update_date,last_update_by,longitude,latitude from ( select * from steel_price_management order by vdat

2021-03-30 15:38:05 367

原创 微服务 java 中的一些优化建议

根据平常的工作和日常学习,总结一些java中用到的比较多的优化方向1,池化技术 池化技术在java中应用非常多,像我们常说的数据库连接池,线程池,内存池,对象池,资源池,应用池等等。这些技术其实就像我们生活中常见的共享技术:共享单车,共享充电宝,首先这些东西就已经生成好了,放在那里,当你需要用的时候扫码使用即可,不需要临时去创建,销毁,回收。这样我们的JVM的内存碎片就会少。 对于我们平常的工作中,如果遇到类似的情况,也可以采取类似的方案。举个例子: 拿我们...

2021-01-19 15:31:37 380

原创 shell 获取本周 上周 本月 上月 本年 去年 等等

记录一下 shell 获取时间段的脚本#! /bin/bashsqoop=/usr/bin/sqoop=today=`date +%Y-%m-%d`whichday=`date -d $today +%w`# 本周v_0_week_startdate=`date -d "$today -$[${whichday}-1] days" +%Y-%m-%d`v_0_week_enddate=`date -d "$v_0_week_startdate+6 days" +%Y-%m-%d`

2021-01-07 16:17:27 1074

原创 k8s学习 踩坑之 top nodes - k8s Metrics not available for pod 报错

最近一直在弄k8s,前面安装都要顺畅,包括K8S集群等等。k8s有个很重要的功能,就是它可以根据你服务器的压力动态扩容pod。比如你可以预定你的pod实例是5个,当请求高峰过来的时候,pod压力过大,每个pod的cpu或者内容一下增大当pod的cpu超过一个阈值的时候,k8s可以根据你的设定将pod实例变成8个,10个,设置20个,过段时间,当洪峰过去,cup压力下来后,pod实例又会慢慢的将个数变成10个,8个,最后3个。这个就是K8S的所谓的动态伸缩但是要弄这个功能,最主要.

2020-12-31 16:53:50 9130 5

原创 微服务设计的15个常用设计原则

下面是15个微服务设计中常用的15个设计原则,当然并不是设计时所有都要涉及,可以根据项目场景增加或者删除几项原则。N+1原则:确保系统发生故障时,至少有一个冗余的实例。 回滚设计:确保系统可以回滚到以前发布过的任何一个版本。 禁用设计:确保一些具有高风险的系统功能能够通过开关来禁用,这能为修复时间赢得时间。 监控设计: 在设计阶段就必须考虑监控,而不是在实施完成之后。监控做的好,将为系统的可扩展性预留空间 设计多活的数据中心:确保系统可以在地理上隔离灾难和危机 使用成熟的技术:只用确实好用

2020-12-14 09:32:06 533

原创 dubbo,springcloud,k8s 几种微服务比较 云计算K8S一些介绍

前言:之前在研究监控系统:Prometheus,它是云全球云原生基金的第二大项目,然后带出第一大 Kerbernates,然后就开始研究K8S微服务框架是知道阿里的duboo,Netflix的springcloud,这些都是大厂研发并且在各自的公司实施生产稳定的架构,最近2年又出了k8s,开始只了解这东西是google大厂出来做服务编排管理的,后来这东西又归于云计算的一种,最近在看杨波老师的视频《极客时间基于SpringBoot与Kubernetes云原生微服务实践》(想看的私信我),这

2020-11-24 10:27:06 1747 1

原创 prometheus+grafana 搭建企业级监控系统(三) altermanage 监控通知 企业微信

前言:从下面的架构图看出,当prometheus拉取信息时,可以通过配置rules(规则)预警,把符合预警信息的指标push给altermanager,altermanager然后把这些指标通过邮件,webhook,微信推送(企业)等推送给相关人员。这就是一个完整的企业监控系统。altermanager安装:从prometheus https://prometheus.io/download/官网下载 altermanager比如我是推送企业微信,编辑 alertma...

2020-11-20 16:25:03 938 1

原创 prometheus+grafana 搭建企业级监控系统(二)micrometer自定义监控spring boot 指定接口指标等指标

前言:比如我们要监控spring boot 的各个指标,比如 JVM的内存各个指标,GC,线程数,甚至自己定义的指标,接口调用次数,成功数,失败数,一段时间调用频率等等。最好效果图如下:

2020-11-19 15:17:11 2213

原创 prometheus+grafana 搭建企业级监控系统(一)

前言首先选型阶段:zabbix 和prometheus如果监控的是物理机,用 Zabbix 没毛病,Zabbix在传统监控系统中,尤其是在服务器相关监控方面,占据绝对优势。甚至环境变动不会很频繁的情况下,Zabbix 也会比 Prometheus 好使;但如果是云环境的话,除非是 Zabbix 玩的非常溜,可以做各种定制,否则还是 Prometheus 吧,毕竟人家就是干这个的。Prometheus开始成为主导及容器监控方面的标配,并且在未来可见的时间内被广泛应用。结论:Linux基金会旗.

2020-11-16 17:36:58 640

原创 修改Linux句柄,提高linux大并发

在liunx的世界里,万物皆文件,比如我们在Linux上跑了一个java服务,输入jps,看到他的进程ID是7980,那在/proc的目录下一定会有一个对于的目录7980,一般是/proc/${pid}这个文件下就有所有关于这个进程的信息。里面有个task目录,里面的每个目录对应你进程里的每一个线程而linux里,一个进程能够操作的文件句柄数是有限制的,一般操作系统默认是1024...

2020-09-10 21:57:18 2005

原创 Dubbo源码解读与实战 (三) Dubbo SPI 精析,接口实现两极反转(上)

前言 Dubbo 为了更好地达到 OCP 原则(即“对扩展开放,对修改封闭”的原则),Dubbo 最终决定采用 SPI 机制来加载插件,Dubbo SPI 参考 JDK 原生的 SPI 机制,进行了性能优化以及功能增强。因此,在讲解 Dubbo SPI 之前,我们有必要先来介绍一下 JDK SPI 的工作原理。JDK SPISPI(Service Provider Interface)主要是被框架开发人员使用的一种技术。例如,使用 Java 语言访问数据库时我们会使用到 ja...

2020-08-27 20:32:45 627

原创 Dubbo源码解读与实战:(二)Dubbo 的配置总线:抓住 URL,就理解了半个 Dubbo

前言: 在互联网中,每一个网上资源都对应一个唯一的URL:Uniform Resource Locator,统一资源定位符),它是互联网的统一资源定位标志,也就是指网络地址。URL 本质上就是一个特殊格式的字符串。一个标准的 URL 格式可以包含如下的几个部分:protocol://username:password@host:port/path?key=value&key=valueprotocol:协议,也就是我们常说的HTTP协议和https协议,当然还有其他协议 F...

2020-08-21 09:46:50 1473

原创 Dubbo源码解读与实战:(一)源码环境搭建

前言搭建环境之前,先看官网介绍,大致了解Dubbo的架构思想,这个可以帮助你后面更好的了解Dubbo的基本功能以及核心角色Registry:注册中心 负责服务地址的注册与查找,服务Provider和Consumer只在启动时与注册中心交互。注册中心通过长连接感知Provider的存在,当Provider出现宕机时,注册中心会立即推送通知给ConsumerProvider:服务提供者 在他启动的时候,会向Registry发送注册信息,会将自己服务的I...

2020-08-19 15:03:45 3323

原创 Dubbo源码解读与实战

最近在学习Dubbo的源码(拉钩网的杨四正),先把目录列出来,立个flag,学完之后,再一节一节慢慢补充。第一部分:基础知识 Dubbo 源码环境搭建 Dubbo 的配置总线:抓住 URL,就理解了半个 Dubbo Dubbo SPI 精析,接口实现两极反转(上) Dubbo SPI 精析,接口实现两极反转(下) 海量定时任务,一个时间轮搞定 ZooKeeper 与 Curator,求你别用 ZkClient 了(上) ZooKe...

2020-08-18 17:44:16 1339

原创 大数据: hive 时间维度表初始化 记录步骤

时间维度表是数据仓库的重要统计项:很多统计都是基于时间。下面是我的一个时间维度表:网上很多用mysql或者是oracle的存储过程初始化数据的,下面我用Hive Sql初始化,记录一下。1,首先设置2个变量 初始开始日期和初始结束日期:0: jdbc:hive2://node1.ansunangel.com:2181,nod> set hivevar:start_day=2020-07-01;No rows affected (0.004 seconds)0: jdbc.

2020-08-05 18:00:28 886

原创 linux 上将 文本格式 dos和unix相互转换

我们经常将window上编辑的shell脚本上传到liunx上执行,发现会报一些错。[root@node5 ods-app-ansun-first-init]# sh first-input-ansun-e_mb_member.sh first-input-ansun-e_mb_member.sh: line 2: $'\r': command not foundfirst-input-ansun-e_mb_member.sh: line 6: $'\r': command not found2

2020-07-24 11:23:32 232

原创 大数据 hive 记录 窗口函数 求占比

有个需求 统计每天的类型和占比绑定渠道 绑定人数 统计日期 占比 占比是每天的每个渠道数/每天的总数首先查出来渠道,人数,日期 hql是select case bind_type when 1 then '二维码绑定' when 2 then '邀请码绑定' when 3 then '领取优惠券绑定' when 4 then '分享链接绑定' end bindtype,substring(bind_date,0,10) ...

2020-07-20 18:10:04 2775

原创 JAVA ( 二 ) jvm垃圾回收和回收算法

前沿之前讲过jvm的内存,程序计算器,本地方法栈,java虚拟机栈,堆。从下图可以看出,程序计算器,本地方法栈,java虚拟机栈都是线程隔离的,也就是这些区域是随线程而生,也随线程而灭,所以不需要做过多的回收考虑,而对于 Java 堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的正是这部分内存。了解之前,我们先看几个常见的面试问题。JAVA中的创建出来的对象进入到JVM的哪个区域?堆大致又可以分为那些区域,分别大概

2020-07-10 15:09:57 255

原创 大数据 (三) BI报表系统 superset 2 制作表格

superset是git上star很多的项目,已经进入了apche的孵化器上节我已经介绍了superset的开发搭建环境,比较麻烦,其实大家可以直接通过命令安装,这样还简单些,下面我介绍一下superset的一些用法superset:既然是做BI智能报表的,具体用途应该配合大数据或者其他数据,当然其他应用也可以由大数据跑实时数据或者离线数据,跑完之后将数据保存到hive的ads层或者是回写到mysqlsuperset可以由业务人员用,可以查询回写后的报表数据,制作成一个个的char.

2020-06-24 17:54:47 2468

原创 大数据(二)flink 2 代码demo

上节是介绍一些概念。下面是具体的例子。代码传至GITHUB 传送地址一般都是flink消费kafka的数据来实时统计数据的引入flink相关jar包 <properties> <flink.version>1.7.0</flink.version> <scala.binary.version>2.11</scala.binary.version> <kafka-clients.

2020-06-11 16:30:04 203

原创 大数据 (三) BI报表系统 superset 源码搭建开发环境

公司要用BI报表给业务来分析查询数据,对比了几个BI报表,不是收费,就是一般最后决定用superset BI报表,开始去git上找源码开始搭建环境了。我们是5月中下旬开始下的,当时superset的最新版本是0.36,我们从主分支master直接下载。我们之前一直弄java,python很少弄,走了很多坑,无数坑。强烈建议 superset最好不要在window去弄强烈建议 superset最好不要在window去弄强烈建议 superset最好不要在window去弄..

2020-05-29 13:46:42 2320

原创 大数据(二)flink 1 概念介绍

Flink介绍:Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。2015年升级为Apache的顶级项目,然后突然爆发,之后被阿里收购。基本上国内说得出名字的大厂都在用flink。Flink特点:1,事件驱动: 根据数据的到来触发一系列的计算,输出等。2,流处理和批处理 批处理的特点就是 有界,持久,量大,非常适合做离线计算 流处理的特点就是 无界,实时,无需针对整个数据集执行操作,而是对传输过来的每...

2020-05-21 15:40:34 1702

原创 大数据(一)flume

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。以下主要版本是Flume-ng.Flume的应用主要用于大数据方面,最开始开发出来也是用来对接KAFKA和HDFS。...

2020-05-14 15:38:31 216

原创 大数据架构及技术体系

下面是大数据体系架构图大数据分2个部分,一部分是走实时的,另外一部分是走离线的,不管那块都需要数据来分析从上图来看,数据分为结构化数据(MYSQL,ORACLE等),半结构数据(文件日志),非结构化数据(视频,PPT等)我们一般需要分析的数据 就是结构化的数据和非结构化的数据,非结构化数据可以存HDFS系统。很多专业的东西后面在开博客另讲,先大概了解数据流走向。1,数据收集...

2020-04-30 17:19:13 6785 1

原创 为什么要用大数据和大数据的介绍

像我们做应用开发的(JAVA),会遇到很多的性能瓶颈,最常见的也是最难解决的是数据库存储和查询方面的,当然也有很多解决方案,比如:做表设计优化,查询优化,数据库主从优化,分库分表优化等。但是不管你怎么优化,当量到了一定程度的时候,这么操作就没什么优化效果了以用的最多的MYSQL来说,mysql5.7版本以上的单表最多大概是1000W+,最新的MySQL8的单表上线也是1亿+,当...

2020-02-28 10:46:12 1424

原创 分布式和微服务的区别

分布式和微服务有什么区别: 分布式是整个系统的一个顶层设计概念,我们常说分布式设计,分布式系统等, 从概念理解,分布式服务架构强调的是服务化以及服务的分散化, 微服务则更强调服务的专业化和精细分工; 从实践的角度来看,微服务架构通常是分布式服务架构, 反之则未必成立。所以,选择微服务通常意味着需要解决分布式架构的各种难题。 分布式里包含很多东西...

2020-01-15 13:27:34 378

转载 在团队中使用GitLab中的Merge Request工作模式

在团队中使用GitLab中...

2019-12-30 17:33:50 482

原创 spring 源码解析(一)

spring源码解析是一个很大的工程,但是又是程序员进阶的一个必经之路,至少了你阅读了它之后,不仅在开发中应用它的时候,能够知道它的运行原理,排查spring的各种问题,更重要的是,通过阅读spring源码,你可以学习它的设计理念,然后把这种开发习惯和思路用到你平常的开发中。阅读源码前,你至少要对SPRING的定义和模块有一定了解,不然看源码事倍功半。首先spring是什么...

2019-12-26 10:36:48 208

原创 mybatis源码解读

mybatis基本上都在用,我们来了解它的源码和实现我看Mybatis源码的经验分享给大家,大家可以参考,1,我们首先把源码下载,https://github.com/tuguangquan/mybatis这个是他人做了中文注释的源码,下载到本地。2,导入mybatis-parent模块,快速入口3,pom中有个PDF的插件引用去掉,这样,mybatis源码环境就可以了...

2019-12-23 17:19:39 788 1

原创 一个好的系统的自我修养

前言一般一个系统大概分3个部分,前端 - 后端 - 数据库。前端 可能是N台电脑,N个手机,所以压力最小后端 很多个用户操作电脑端或者手机端请求 压力很大数据库 又有1个或者多个后端程序来请求它, 所以它的压力是最大,资源也是最紧张的所以我们设计的系统的准则是什么:尽量把一些计算,存储信息往前推。大概意思就是,能在前端完成的...

2019-12-16 17:39:39 390 1

原创 springboot 秒杀系统(三)百万级高并发服务间同步通讯优化

分布式系统的思想就是:如果一个系统的压力过大,可以把一个服务拆分成多个服务,这个叫垂直拆分。也可以考虑做镜像集群,负载平衡,这个叫水平拆分。这个系统我们可以考虑垂直拆分,将订单相关的功能拆分出来。我们将订单的逻辑拿出来,放到order-service中,通过backend来调用order-service来创建订单。服务:backend 接受客户端请求,判断useri...

2019-12-16 16:38:28 3610 4

原创 springboot 秒杀系统(二)redis

上一步我们做的秒杀虽然在操作上没问题,但性能上能有很大的提升空间。我们可以先把秒杀数据加载到内存中,考虑到以后服务集群化,所以加载的数据不存放在JVM中,而存在放redis首先,我们都知道,redis在数据存取方面远远大于mysql所以我们第一步优化是:可以将秒杀数据加载至REDIS中,然后我们在查询数据的时候,优先从redis里查找。注意:这里redis和MySQL最...

2019-12-13 16:55:34 972

原创 springboot 秒杀系统(一)

秒杀系统应该是很检验一个人的能力的项目。包括从前端到运营商到nginx到后端等等,很多地方可以优化。前端的页面控制,运营商的CDN加速,nginx的动静分离等下面我来一步一步实现后端的秒杀功能的一步一步实现和优化。后端接口1,获取商品详情,2,秒杀接口获取商品:参数 商品ID 通过商品ID返回商品详情。秒杀接口:参数 商品ID 后端接收商品I...

2019-12-13 14:38:42 537

多租户代码 根据域名切换

多租户代码 根据域名切换

2021-01-19

JVM-内存结构.pptx

自己在公司做分享时做的培训文档,包括了jvm的内存结构以及每个内存结构的一些说明,仅供公司内部培训用,不做其他商业用途。

2020-08-20

hadoop.rar

包括hadoop单机,集群,shell等手册,帮助你学习和自己搭建 hadoop和hadoop集群,HDFS,YARM,MAPREDUCE等

2020-05-14

空空如也

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

TA关注的人

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