Druid

SpringBoot缓存技术整合Ehcache

守給你的承諾、 提交于 2020-08-11 05:44:07
首先说明一下,这里使用的是Springboot2.2.6.RELEASE版本,由于Springboot迭代很快,所以要注意版本问题。 1、SpringBoot整合Ehcache,修改pom文件,添加缓存支持启动器,和Ehcache缓存依赖jar包。 1 <?xml version= " 1.0 " encoding= " UTF-8 " ?> 2 <project xmlns= " http://maven.apache.org/POM/4.0.0 " xmlns:xsi= " http://www.w3.org/2001/XMLSchema-instance " 3 xsi:schemaLocation= " http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd " > 4 <modelVersion> 4.0 . 0 </modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version> 2.2 . 6 .RELEASE</version> 9 <relativePath/

【SpringCloud】Spring Cloud Alibaba 之 Seata 分布式事务中间件(三十五)

↘锁芯ラ 提交于 2020-08-11 02:30:53
什么是分布式事务问题? 单体应用   单体应用中,一个业务操作需要调用三个模块完成,此时数据的一致性由本地事务来保证。 微服务应用   随着业务需求的变化,单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。 小结   在微服务架构中由于全局数据一致性没法保证产生的问题就是分布式事务问题。简单来说,一次业务操作需要操作多个数据源或需要进行远程调用,就会产生分布式事务问题。 Seata 是什么?   Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。   官网: http://seata.io/ Seata 组成 Transaction ID(XID)   全局唯一的事务id 三组件   Transaction Coordinator(TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚   Transaction Manager(TM):控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议   Resource Manager(RM)

AnalyticDB实现和特点浅析

泄露秘密 提交于 2020-08-10 22:09:14
目录 AnalyticDB介绍与背景 AnalyticDB详细解析 架构设计 数据分区 读写分离和读写流程 其他特性介绍 混合(列-行)存储引擎 索引 小结 本篇主要是根据AnalyticDB的论文,来讨论AnalyticDB出现的背景,各个模块的设计,一些特性的解析。可能还会在一些点上还会穿插一些与当前业界开源实现的比对,希望能够有一个更加深入的探讨。OK,那我们开始吧。 AnalyticDB介绍与背景 要说AnalyticDB,那起码得知道它是干什么的。这里直接贴下百度百科的介绍: AnalyticDB是阿里云自主研发的一款实时分析数据库,可以毫秒级针对千亿级数据进行即时的多维分析透视。 简单地说,就是实时OLAP型数据库,它的对标产品是Apache Kylin,Apache Druid,Clickhouse这些。然后AnalyticDB的特点, 包括高并发实时摄入数据,兼容Mysql协议,无需预计算即可有的极快响应时间,多种数据源接入,大规模集群管理等 。好吧,这几个特点都很官方,不急,接下来会逐渐讨论各个点。 然后介绍下AnalyticDB的背景。 首先先说说传统的OLAP型数据仓库,以往构建OLAP型数据仓库通常都是采用离线模式, 即在晚上设置定时任务将前一天的数据同步到数据仓库中,第二天数据分析师或报表工具就可以根据数据产出分析结果 。但这样的问题是数据延迟太高了

springboot项目中使用动态数据源

 ̄綄美尐妖づ 提交于 2020-08-10 21:12:00
需求: 已有一个项目是针对某省的业务创建的,目前业务成熟,有其他省份的项目进来,功能和业务相同,需要对不同省份的业务数据分库管理,这样一来不同省份使用多个库,项目就需要使用动态数据源。已知解决方案都是在配置文件中配置多个数据源来切换数据源,考虑扩展和维护麻烦,需要更灵活的方案 实现: 使用AOP切面,根据接口传入的用户标识得到用户属于哪个省份,动态去切换到该省份的数据源。请求处理完毕,在方法结束后将数据源连接关闭,将属于此请求线程中的数据源清空。 代码: 说明:项目中使用的连接池是druid,使用tomcat自带的连接池也可以 1、数据源的配置 spring: profiles: active: dev2 datasource: url: jdbc:mysql://127.0.0.1:3306/%s?useUnicode=true&characterEncoding=utf8 username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver initialSize: 5 minIdle: 5 maxActive: 10 timeBetweenEvictionRunsMillis: 60000

用户画像系统架构——从零开始搭建实时用户画像(二)

前提是你 提交于 2020-08-10 18:51:51
​ ![]( https://img2020.cnblogs.com/blog/1089984/202005/1089984-20200525090508335-1536539425.png ) ​ 在《[什么的是用户画像]( https://mp.weixin.qq.com/s/169tCtjgUiDNeHIKLtGO9w )》一文中,我们已经知道用户画像对于企业的巨大意义,当然也有着非常大实时难度。那么在用户画像的系统架构中都有哪些难度和重点要考虑的问题呢? # 挑战 - ## 大数据 随着互联网的崛起和智能手机的兴起,以及物联网带来的各种可穿戴设备,我们能获取的每一个用户的数据量是非常巨大的,而用户量本身更是巨大的,我们面临的是TB级,PB级的数据,所以我们必须要一套可以支撑大数据量的高可用性,高扩展性的系统架构来支撑用户画像分析的实现。毫无疑问,大数据时代的到来让这一切都成为可能,近年来,以Hadoop为代表的大数据技术如雨后春笋般迅速发展,每隔一段时间都会有一项新的技术诞生,不断驱动的业务向前,这让我们对于用户画像的简单统计,复杂分析,机器学习都成为可能。所以整体用户画像体系必须建立在大数据架构之上。 ![]( https://img2020.cnblogs.com/blog/1089984/202005/1089984-20200525090411478

总结:Spring boot动态修改日志级别

天涯浪子 提交于 2020-08-10 17:48:35
一、前言 我们经常会遇到业务想看debug日志的问题,但是debug日志频繁打印会对日志查看有影响,且日志多对系统也会有一定的压力,因此,如果可以在需要的时候动态临时调整下日志的级别则是比较完美的,spring boot已经支持这种功能。 二、Spring boot 2.1调整方式 1、查看当前应用各包/类的日志级别 由于引入了很多其它的组件,spring boot支持对不同组件精细化调整日志级别 http://localhost:7011/actuator/loggers { "levels": [ "OFF", "ERROR", "WARN", "INFO", "DEBUG", "TRACE" ], "loggers": { "ROOT": { "configuredLevel": "DEBUG", "effectiveLevel": "DEBUG" }, "com": { "configuredLevel": null, "effectiveLevel": "DEBUG" }, "com.alibaba": { "configuredLevel": null, "effectiveLevel": "DEBUG" }, "com.alibaba.druid": { "configuredLevel": null, "effectiveLevel": "DEBUG" },

Eureka--springClould笔记一:

守給你的承諾、 提交于 2020-08-10 09:26:38
单机版注册中心: 1、Eureka服务端 : pom <!--eureka-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> yml: server: port: 7001 eureka: instance: hostname: localhost #eureka服务端的实例名字 client: allow-redirects: false # 是否向注册中心注册本服务:true为是。注册中心不需要将自己注册进去 fetch-registry: false # false表示自己是注册中心,职责是维护服务实例,并不需要去检索服务 service-url: #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址,多个时用逗号隔开 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 主启动类 : @EnableEurekaServer @SpringBootApplication @EnableEurekaServer /

HDFS+ClickHouse+Spark:从0到1实现一款轻量级大数据分析系统

拈花ヽ惹草 提交于 2020-08-10 04:25:02
在产品精细化运营时代,经常会遇到产品增长问题:比如指标涨跌原因分析、版本迭代效果分析、运营活动效果分析等。这一类分析问题高频且具有较高时效性要求,然而在人力资源紧张情况,传统的数据分析模式难以满足。本文尝试从0到1实现一款轻量级大数据分析系统——MVP,以解决上述痛点问题。 文章作者:数据熊,腾讯云大数据分析工程师。 一、背景及问题 在产品矩阵业务中,通过仪表盘可以快速发现增长中遇到的问题。然而,如何快速洞悉问题背后的原因,是一个高频且复杂的数据分析诉求。 如果数据分析师通过人工计算分析,往往会占用0.5-1天时间才能找到原因。因此,人工计算分析方式,占用人力大,且数据分析效率低。 另外,产品版本迭代与业务运营活动,也需要对新版本、新功能、新活动进行快速数据分析,已验证效果。 因此,在产品矩阵业务精细化运营中,存在大量的数据分析诉求,且需要快速完成。 在传统的数据分析模式下,对于每个需求,一般需要经历3-5天才能解决问题。除此之外,该模式还需要大量数据分析师对接需求。因此,在数据分析师人力紧缺情况下,该模式无法满足产品增长的数据分析诉求。 二、解决办法 在传统数据分析模式失效情况下,急需开拓新的数据分析模式,以快速满足产品增长的数据分析诉求。 为此,笔者和项目小团队从0到1实现一款轻量级大数据分析系统——MVP,希望通过MVP数据分析,驱动产品从"Minimum Viable

2020想学习JAVA的同学看过来,最基础的编程CRUD你会了没?

烂漫一生 提交于 2020-08-09 17:33:04
一 JDBC简介 Java DataBase Connectivity Java语言连接数据库 官方(Sun公司)定义的一套操作所有关系型数据库的规则(接口) 各个数据库厂商去实现这套接口 提供数据库驱动JAR包 可以使用这套接口(JDBC)编程 真正执行的代码是驱动JAR包中的实现类 二 JDBC初体验 1. 新建一个Maven项目 pom.xml <?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.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hy.jdbc</groupId> <artifactId>jdbc-demo</artifactId> <version>1.0-SNAPSHOT</version> <!-- 定义依赖版本号 --> <properties> <junit.version>4

JDBC快速入门

早过忘川 提交于 2020-08-09 17:27:33
JDBC快速入门 详解 1.0DriverManager 功能1 功能2 2.0 connection对象 3.0 statement对象 4.0 ResultSet 遍历结果集的一个案例 import java.sql.*; public class DQLtest { public static void main(String[] args) { //注册驱动 Connection connection=null; Statement statement=null; ResultSet resultSet =null; try{ Class.forName("com.mysql.cj.jdbc.Driver"); //定义一个SQL语句 String sql="select * from student"; //数据库连接对象 此处url要在原来数据库后加上 "?serverTimezone=GMT%2B8&useSSL=false" //因为我导入的jar包为最新版本 要添加ssl连接状态 connection = DriverManager.getConnection("jdbc:mysql:///db2" + "?serverTimezone=GMT%2B8&useSSL=false", "root", "root"); //执行SQL的对象 statement =