自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

彭超的博客

更多干货请移步:https://antoniopeng.com

  • 博客(40)

原创 分布式数据库中间件 MyCat - 分库分表实践

MyCat 简介MyCat 是一个功能强大的分布式数据库中间件,是一个实现了 MySQL 协议的 Server,前端人员可以把它看做是一个数据库代理中间件,用 MySQL 客户端工具和命令行访问;而后端人员可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信。可以用作 读写分离、分库分表(分片)、容灾备份、多租户应用开发、大数据基础设施,使底层数据架构具备很强的适应性和灵活性。MyCat 的智能优化模块可以使系统的数据访问瓶颈和热点一目了然,并

2020-08-20 17:28:20 56

原创 分布式 ID 生成方案之美团 Leaf

分布式 ID在庞大复杂的分布式系统中,通常需要对海量数据进行唯一标识,随着数据日渐增长,对数据分库分表以后需要有一个唯一 ID 来标识一条数据,而数据库的自增 ID 显然不能满足需求,此时就需要有一个能够生成全局唯一 ID 的系统,需要满足以下条件:全局唯一性:最基本的要求就是不能出现重复的 ID。递增:保证下一个 ID 一定大于上一个 ID。信息安全:如果 ID 是连续的,用户就可以按照顺序进行恶意爬取数据,所以 ID 生成无规则。上述的 2 和 3 点需求是互斥的,无法使用同一个方案满足

2020-07-22 18:15:46 58

原创 分布式事务解决方案之 Alibaba Seata

关于事务的几点常识本地事务该类事务需要满足四大特性:ACID(原子性、一致性、隔离性、持久性),仅限于对单一数据库资源的访问控制。原子性(Atomicity):指事务作为整体来执行,要么全部执行,要么全部不执行。一致性(Consistency):指事务应确保数据从一个一致的状态转变为另一个一致状态。隔离性(Isolation):指多个事务并发时,一个事务的执行不应影响其它事务的执行。持久性(Durability):指已提交的事务修改数据会被持久保存。柔性事务如果将实现了 ACID 的四大

2020-07-22 18:00:55 120

原创 深入浅出 RabbitMQ

什么是 RabbitMQ简介(优点)基于 ErLang 语言开发有高可用高并发的优点,适合集群。开源、稳定、易用、跨平台、支持多种语言、文档齐全。有消息确认机制和持久化机制,可靠性高。概念生产者和消费者Producer:消息的生产者Consumer:消息的消费者Queue消息队列提供了 FIFO 的处理机制,具有缓存消息的能力。在 RabbitMQ 中,队列消息可以设置为持久化,临时或者自动删除。如果是持久化的队列,Queue 中的消息会在 Server 本地硬盘存储一份,防

2020-07-18 13:20:50 104

原创 深入 Web 请求过程

前言随着 Web 2.0 时代的到来,互联网的网络架构已经从传统的 C/S 架构转变为更加方便、快捷的 B/S 架构,B/S 架构大大简化了用户使用网络应用的难度,提高了用户体验。B/S 架构带来了以下两方面的好处:客户端使用统一的浏览器(Browser)。由于浏览器具有统一性,不需要特殊的配置和网络连接。另外浏览器的交互特性使得用户使用它非常简便,且用户行为的可继承性非常强,也就是用户只...

2020-04-07 00:51:02 162

原创 Spring Boot 中监听 Redis key 失效事件实现定时任务

场景我们以订单功能为例说明下:生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。方式可能有很多,在这里介绍一种监听 Redis 键值对过期时间来实现订单自动关闭。思路在生成订单时,向 Redis 中增加一...

2020-03-14 11:24:31 269

原创 使用 Spring Cloud Alibaba Nacos Config 作为配置中心

什么是 Nacos Config在分布式系统中,由于服务数量巨多,为了方便服务 配置文件统一管理,实时更新,所以需要分布式配置中心组件。Spring Cloud Alibaba Nacos Config 是 Spring Cloud Config 的替代方案。Nacos Config 的存储配置功能为分布式系统中的外部化配置提供服务器端和客户端支持,可以在 Nacos 中集中管理 Sprin...

2020-03-11 12:19:50 885

原创 使用 Spring Cloud Alibaba Nacos Discovery 实现服务注册与发现

什么是 NacosNacos 是 Spring Cloud Alibaba 生态中的重要组件之一,用于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,可以快速实现 动态服务发现、服务配置、服务元数据及流量管理。下载安装# 下载源码git clone https://github.com/alibaba/nacos.git# 安装到本地仓库cd nacos/mvn -...

2020-03-10 12:20:37 279

转载 拜托!面试请不要再问我 Spring Cloud 底层原理

目录一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring Cloud核心组件:Hystrix六、Spring Cloud核心组件:Zuul七、总结概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Sp...

2019-10-20 12:49:41 93

原创 Ubuntu 设置静态 IP/DNS

文章目录需求Vmware 配置Ubuntu 16.04 配置设置 IP设置 DNSUbuntu 18.04 配置设置 IP+DNS 需求设置 Ubuntu 的 IPV4/DNS 地址指定为 192.168.100.101 Vmware 配置打开虚拟网络编辑器指定子网IP:192.168.100.0(根据使用场景需要指定) Ubuntu 16....

2019-10-16 21:45:58 71

原创 MySQL 性能优化小结

文章目录基础概念简述锁事务存储引擎创建时优化Schema和数据类型优化整数实数字符串时间类型优化建议点索引B-Tree哈希索引优化建议点查询时优化查询质量的三个重要指标查询优化点 基础概念简述锁数据库通过锁机制来解决并发场景 — 共享锁(读锁)和排他锁(写锁)。读锁是不阻塞的,多个客户端可以在同一时刻读取同一个资源;写锁是排他的,并且会阻塞其他的读锁和写锁。简单提下乐观锁和悲...

2019-10-16 11:30:10 95

原创 Spring Boot 整合 Swagger2 接口文档引擎

文章目录相关依赖相关配置使用 Swagger2Swagger 相关注解说明 相关依赖在 pom.xml 中添加 swagger2 所需依赖,代码如下:<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</art...

2019-10-13 17:06:05 70

转载 GitHub 访问加速

文章目录前言获取 GitHub 官方 CDN 地址修改系统 Hosts 文件刷新系统DNS缓存 前言由于某些原因,国内访问Github会异常缓慢,在clone仓库时甚至只有10k以下的速度,下载半天有时还会失败需要从头再来,甚是让人恼火。本文介绍通过修改系统hosts文件的办法,绕过国内DNS解析,直接访问GitHub的CDN节点,从而达到加速的目的。不需要科学上网,也不需要海...

2019-10-08 18:35:13 439

原创 Redis 常用命令总结

参考资料http://redisdoc.com/http://redis.io/commands  连接操作相关的命令ping:测试连接是否存活如果正常会返回 pongecho:打印select:切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值quit:关闭连接(connection)auth:简单密码认证&...

2019-09-11 16:39:21 76

原创 Spring Boot 整合 Redis

结合 Redis Sitenal 高可用集群整合 Redis相关文章Docker 搭建 Redis Sentinel 高可用集群(一主两从三哨兵) pom.xml主要添加 spring-boot-starter-data-redis,commons-pool2 两个依赖 <dependency> <groupId>org.apache....

2019-09-11 11:00:06 124

原创 基于 Docker 搭建 Redis 集群

Redis 简介什么是 RedisRedis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下:字符串类型散列类型列表类型集合类型有序集合类型 Redis 的应用场景缓存(数据查询、新闻内容、商品内容等等)分布式集群架构中的 sessi...

2019-09-09 12:18:31 109

原创 Nginx 实现反向代理和负载均衡

什么是反向代理反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。现在许多大型 Web 网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡...

2019-09-08 16:18:09 198

原创 使用 Docker Compose 部署 Nginx 配置虚拟主机

Nginx 简介Nginx 是一款高性能的 HTTP 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试 Nginx 能够支撑 5 万并发链接,并且 CPU、内存等资源消耗却非常低,运行非常稳定。 Nginx 的应用场景HTTP 服务器:Nginx 是一个 HTTP 服务可以独立提供 HTTP 服务。可以做网页静态服务器。虚拟主机:可以实现在一台服务...

2019-09-07 15:04:23 104

原创 使用 Spring Boot Admin 监控服务

Spring Boot Admin 简介随着开发周期的推移,项目会不断变大,切分出的服务也会越来越多,这时一个个的微服务构成了错综复杂的系统。对于各个微服务系统的健康状态、会话数量、并发数、服务资源、延迟等度量信息的收集就成为了一个挑战。 Spring Boot Admin 就是基于这些需求开发出的一套功能强大的监控管理系统。同样,Spring Boot Admin 也是由两个角色组成,一...

2019-09-05 12:23:54 282

原创 Spring Cloud 微服务架构搭建(完结篇)— 使用 ZipKin 链路追踪服务

Zipkin 简介ZipKin 是一个开放源代码的分布式跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题。包括数据的收集、存储、查找和展现。每个服务向 Zipkin 报告计时数据,Zipkin 会根据调用关系通过 Zipkin UI 生成依赖关系图,显示了多少跟踪请求通过每个服务。该组件可以让我们通过一个 Web 前端轻松的收集和分析数据。例如用户每次请求服务的处理时间等,可方...

2019-09-05 10:10:47 304

原创 Spring Cloud 微服务架构搭建(六)— Spring Cloud Config 分布式配置中心

Spring Cloud Config 简介在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在 Spring Cloud 中,有分布式配置中心组件 Spring Cloud Config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程 Git 仓库中。在 Spring Cloud Config 组件中,分两个角色,一是服...

2019-09-03 11:22:01 128

原创 Spring Cloud 微服务架构搭建(五)— Netflix Zuul 路由网关及服务过滤

Zuul 简介Zuul 的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如 /api/admin 转发到到 Admin 服务,/api/member 转发到到 Member 服务。Zuul 默认和 Ribbon 结合实现了负载均衡的功能。  创建 Zuul 路由网关工程pom.xml 主要添加 spring-cloud-starter-ne...

2019-09-03 09:57:16 105

原创 Spring Cloud 微服务架构搭建(四)— Netflix Hystrix 熔断器及仪表盘监控

Hystrix 简介在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以通过 RPC 相互调用,在 Spring Cloud 中可以用 RestTemplate + Ribbon 和 Feign 来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证 100% 可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,S...

2019-09-02 14:36:30 172

原创 Spring Cloud 微服务架构搭建(三)— 使用 Netflix Feign 实现声明式服务调用

Feign 简介Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用 Feign 注解和 JAX-RS 注解。Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,并和 Eureka 结合,默认实现了 负载均衡 的效果。  创建服务消费...

2019-09-02 12:01:10 111

原创 Spring Cloud 微服务架构搭建(二)— Netflix Ribbon+RestTemplate 实现服务负载均衡调用

概述在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于 Http Restful 的。Spring Cloud 有两种服务调用方式,一种是 Ribbon + RestTemplate ,另一种是 FeignRibbon 是一个负载均衡客户端,可以很好的控制 HTTP 和 TCP 的一些行为。  创建服务消费者(Ribbon)工程创建目录 he...

2019-09-02 10:17:13 134

原创 Spring Cloud 微服务架构搭建(一)— Netflix Eureka 服务注册与发现中心

Eureka 介绍Eureka 是 Spring Cloud 的组件 Spring Cloud Netflix 中的一个模块,负责完成对微服务架构的服务治理功能。 Eureka 服务的三个角色 服务注册发现Eureka 提供的服务端,负责服务的注册与发现功能,一般称为 eureka server。 服务提供者提供服务的应用,将自己提供的服务注册到 ...

2019-08-30 23:26:12 231

原创 SpringBoot 整合 Shiro 实现登录认证与权限控制

这里因为要实现登录权限控制,所以需要整合 Thymeleaf 和 MyBatis,下面有相关整合的博客:Spring Boot 整合 ThymeleafSpring Boot 整合 MyBatis该项目已经上传到 GitHubShiro 学习文档 数据库设计新建数据库 shiro所需表user:用户信息role:角色信息perm:权限信息us...

2019-08-23 17:10:25 148

原创 Spring Boot 中使用 TKMyBatis 和 PageHelper

整合 Druid 数据源pom.xml添加 druid-spring-boot-starter 和 mysql-connector-java 依赖:<!-- druid-spring-boot-starter --><dependency> <groupId>com.alibaba</groupId> <artifact...

2019-08-23 16:04:03 110 2

原创 使用 Docker Compose 搭建 Registry 镜像管理平台及使用配置

简介Docker Hub 是 Docker 官方提供的一个管理公共镜像的镜像仓库,我们可以从上面拉取我们想要的镜像,也可以推送自己的镜像上去。但有时候,在无法访问互联网的情况下或者不希望将自己的镜像推送到公网上时,那么 Docker Registry (镜像私服)就可以用来存储管理自己的镜像。 安装 Docker Registry(基于 Docker Compose)新建 d...

2019-08-22 11:50:52 330

原创 使用 Docker Compose 搭建 Nexus 依赖私服及使用配置

简介Nexus 是一个强大的依赖仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。2016 年 4 月 6 日 Nexus 3.0 版本发布,相较 2.x 版本 有了很大的改变:对低层代码进行了大规模重构,提升性能,增加可扩展性以及改善用户体验。升级界面,极大的简化了用户界面的操作和管理提供新的安装包,让部署更加简单提供新的管理接口,以及增强对自动任务的管理 安...

2019-08-20 17:12:46 72

原创 使用 Docker Compose 部署 Tomcat+MySQL

实战 Tomcat + MySQL在一个空白目录下新建 docker-compose.yml 文件,代码如下:version: '3.1' services: tomcat: restart: always image: tomcat container_name: tomcat ports: - 8080:8080 vo...

2019-08-19 11:57:59 96

原创 Linux 安装 Docker Compose 及常用命令汇总

简介Docker Compose 是 Docker 官方的编排项目之一,负责实现对 Docker 容器集群的快速编排,Compose 的定位:定义和运行多个 Docker 个容器的应用之前提到过使用 Dockerfile 模板文件定制镜像,并启动一个单独的应用容器。在日常工作中,经常会碰到多个容器相互配合来完成某项任务的情况,例如,要实现一个 Web 项目时,出了 Web 服务容器本身以外,...

2019-08-19 11:22:53 118

原创 使用 Dockerfile 定制镜像(入门案例)

这里以简单定制 Nginx 镜像为例创建 Dockerfile 文件在一个空白目录中,建立一个文本文件,并命名为 Dockerfilemkdir dockercd dockermkdir nginxcd nginxtouch DockerfileDockerfile 文件的内容如下FROM nginxRUN echo '<h1>Hello, Docker!&l...

2019-08-19 10:37:28 265

原创 Docker 常用命令总结

Docker 版本命令查看 Docker 安装的版本docker version Docker 镜像命令列出所有 Docker 镜像docker imagesdocker image ls -a运行 Docker 镜像(守护态方式)docker run -d <镜像名>删除 Docker 镜像docker image rm &l...

2019-08-17 12:02:55 302

原创 Docker 配置镜像加速器

概述之前提到过,国内从 Docker Hub 下载镜像有时会非常缓慢,因此可以配置国内云服务商提供的镜像加速器:Docker 官方提供的中国 registry mirror阿里云加速器DaoCloud 加速器这里以阿里云镜像加速器为例登录阿里云进入 容器镜像服务控制台 > 镜像加速器添加镜像加速器复制加速器地址,如下图Ubuntu 14.04、Debian 7...

2019-08-17 10:09:09 235

原创 基于 Ubuntu 安装 Docker

什么是 DockerDocker 是一个虚拟化容器引擎,完全使用沙箱机制,较传统的 VM 虚拟机有很大优势。传统虚拟机(VM)和虚拟化容器(Docker)的区别:传统的 VM 虚拟机不能共享资源 , 比如在 VMWare 中安装了一个内存为 4GB 的 Linux 操作系统 , 意味着该Linux系统使用了宿主机中固定的 4GB 内存且不能与宿主机或其它虚拟系统共享该资源 , 可能会造...

2019-08-17 09:39:58 147

原创 Ubuntu 入门操作指北

这里对安装 Linux 系统不做详细介绍,如有需要,请自行上网查找安装教程Linux 简介Linux 是一种自由和开放源码的类 UNIX 操作系统,使用 Linux 内核。通常情况下,Linux 被打包成供桌上型电脑和服务器使用的 Linux 发行版本,目前比较流行知名的 Linux 发行版有:Ubuntu、RedHat、CentOS、Debian 等。 Linux 远程控制...

2019-08-16 15:44:04 148

原创 集成 Spring & Spring MVC & MyBatis 搭建 Java 企业级应用

注:这里使用 Maven 项目管理工具构建项目Intellij IDEA 新建项目打开 Intellij IDEA,点击 Create New Project选择 Maven 构建项目选择 JDK 版本(此处不阐述 JDK 安装的详细步骤,不会的小伙伴戳 JDK 安装教程)勾选项目模板选择 maven-archetype-webapp 模板(Java Web 模板)填写项...

2019-08-15 20:17:21 289

原创 Java 实现上传文件(附加密和解密)

这里使用 Jersey 服务器实现上传,使用 Http 请求实现下载pom.xml添加 Jersey 相关依赖<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version&...

2019-08-15 17:55:51 1857

原创 Java 实现发送邮件

这里以 QQ 邮箱为例QQ 邮箱账号设置登录 QQ 邮箱进入 设置 页面选择 账户开启 IMAP/SMTP 服务获取授权码 创建 EmailUtil 工具类import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMess...

2019-08-15 17:04:55 80

空空如也

空空如也

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