11 2019 档案
摘要:先来看下它有哪些常用方法,以及有什么作用: 1.put(String key, Object value)方法,在JSONObject对象中设置键值对在,在进行设值得时候,key是唯一的,如果用相同的key不断设值得时候,保留后面的值。 2.Object get(String key) :根据key
阅读全文
摘要:4. redis持久化 是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题, 提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。 4.1 RDB持久化 提供了 的功能,这个功能可以将 在内存中的的状态保存到硬盘中,它可以 手动执行。 也可以再 中配置,
阅读全文
摘要:6.redis哨兵功能 Redis Sentinel sentinel主要功能如下: 不时的监控redis是否良好运行,如果节点不可达就会对节点进行下线标识 如果被标识的是主节点,sentinel就会和其他的sentinel节点“协商”,如果其他节点也认为主节点不可达,就会选举一个sentinel节
阅读全文
摘要:Java程序性能优化 最近在做code review时,也对这段时间写的代码做了一次全身“体检”,对于结果,受益匪浅,至少知道目前还有需要提升的空间,所以整理了这次“体检结果”,并结合自身体会以及程序优化的重要性,增加了一些Java程序有必要需要知道的优化细节,如果有不对之处,还请各位指正,当然了,
阅读全文
摘要:Eureka作为SpringCloud的服务发现与注册中心,在整个的微服务体系中,处于核心位置。单一的eureka服务,显然不能满足高可用的实际生产环境,这就要求我们配置一个能够应对各种突发情况,具有较强容灾能力的eureka集群服务。 首先,参考eureka服务端7001的模块,分别创建eurek
阅读全文
摘要:MySQL 优化 表关联查询时务必遵循 小表驱动大表 原则; 使用查询语句 条件时,不允许出现 函数 ,否则索引会失效; 使用单表查询时,相同字段尽量不要用 ,因为可能导致索引失效,比如: ,可以使用 替代; 语句不允许使用 开头,否则索引会失效; 组合索引一定要遵循 从左到右 原则,否则索引会失效
阅读全文
摘要:springboot整合elasticsearch 1、Jest介绍 Jest是Elasticsearch 的Java Http Rest 客户端。 ElasticSearch已经具备应用于Elasticsearch内部的Java API,但是Jest弥补了ES自有API缺少Elasticsearc
阅读全文
摘要:springboot整合jedis访问Redis jedis是类似于jdbc数据库连接的Redis客户端 测试redis访问 Redis连接池框架autoloadcache POM.xml 配置文件 Java配置类 测试 : http://localhost:8080/autoload cache
阅读全文
摘要:ElasticSearch是一个基于Lucene的搜索服务器, 。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定
阅读全文
摘要:概述 Zookeeper字面上理解就是动物管理员,是大数据框架Hadoop生态圈中的一个服务中间件,Hadoop生态圈中很多开源项目使用动物命名,那么需要一个管理员来管理这些“动物”。他负责分布式应用程序协调的工作。 Hadoop框架 Zookeeper主要提供以下四点功能: ,用于高效的管理集群的
阅读全文
摘要:redis 简介 Redis 是用 C 语言开发的一个开源的高性能键值对(key value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下: 字符串类型 散列类型 列表类型 集合类型 有序集合类型 Redis 的应用场景 缓存(数据查询、
阅读全文
摘要:什么是 Jenkins Logo Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 官方网站:https://jenkins.io/ 基于 Docker 安装 Jenkins docker
阅读全文
摘要:2018 08 27 22:11:21 更多 另一个链接: https://www.jianshu.com/p/2a35a263e8fe 版权声明:本文为博主原创文章,遵循 " CC 4.0 BY SA " 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.ne
阅读全文
摘要:服务端部署 1. 源码部署 CAT安装环境 Linux 2.6以及之上(2.6内核才可以支持epoll),线上服务端部署请使用Linux环境,Mac以及Windows环境可以作为开发环境,美团点评内部CentOS 6.5 Java 6,7,8,服务端推荐使用jdk7的版本,客户端jdk6、7、8都支
阅读全文
摘要:重点 Ctrl + End 跳到文件尾 Ctrl + Home 跳到文件头 Ctrl + Space 基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 Ctrl + 逗号 (必备) Ctrl + 左方向键 光标跳转到当前单词 / 中文句的左侧开头位置 Ctrl +
阅读全文
摘要:根据需求需要取得当天的零点 LocalDateTime today_start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);//当天零点 String td_st_str = today_start.format(DateTimeFormat
阅读全文
摘要:主键映射 主键映射作用 当数据插入操作不关心插入后数据的主键(唯一标识),那么建议使用 不返回自增主键值 的方式来配置插入语句,这样可以避免额外的SQL开销. 当执行插入操作后需要立即获取插入的自增主键值,比如一次操作中保存一对多这种关系的数据,那么就要使用 插入后获取自增主键值 的方式配置.
阅读全文
摘要:动态SQL简介 MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 通常使
阅读全文
摘要:假设有这样两条数据: (表名为user) 1) username=admin,password=000000 2) username=admin,password=123456 我们要实现的效果是可以输入多个关键字查询,多个关键字间以逗号分隔。 使用上述表举例:输入单个关键字“admin”可查出这两
阅读全文
摘要:简单查询 查询所有字段 select from 表名; 例: select from students; 查询指定字段 select 列1,列2,... from 表名; 例: select name from students; 使用 as 给字段起别名 select id as 序号, name
阅读全文
摘要://JSON串转实体类 实体类 javaBean = JSON.parseObject(json, 实体类.class); //JSON串转带泛型的List的集合 List list = JSON.parseObject(json, new TypeReference (){}); // 对象转JS
阅读全文
摘要:背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次,
阅读全文
摘要:package com.snake.test; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolExecutor; / @Author Snake @Date 2019/11/24 14:21
阅读全文
摘要:Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。 JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。 对接口的要求 虽然使用 Lambda
阅读全文
摘要:threadlocal使用方法很简单 threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据,官方解释如下。 大致意思就是ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过g
阅读全文
摘要:函数式编程最近几年越炒越热,有函数式编程的语言鄙视没有函数式编程的语言,纯函数式编程的语言鄙视不纯的函数式编程的语言。 那么,到底什么是函数式编程,函数式编程的核心思想又是什么? 函数式编程的第一个特点就是可以把函数作为参数传递给另一个函数,也就是所谓的高阶函数。例如,对数组进行排序,可以传入一个排
阅读全文
摘要:一般性的指南和建议 容器应该是短暂的 通过 Dockerfile 构建的镜像所启动的容器应该尽可能短暂(生命周期短)。「短暂」意味着可以停止和销毁容器,并且创建一个新容器并部署好所需的设置和配置工作量应该是极小的。 使用 .dockerignore 文件 使用 Dockerfile 构建镜像时最好是
阅读全文
摘要:基本语法 Docker 命令有两大类,客户端命令和服务端命令。前者是主要的操作接口,后者用来启动 Docker Daemon。 客户端命令:基本命令格式为 docker [OPTIONS] COMMAND [arg...]; 服务端命令:基本命令格式为 dockerd [OPTIONS]。 可以通过
阅读全文
摘要:Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces)、控制组(Control groups)、Union 文件系统(Union file systems)和容器格式(Container format)。 我们知道,传统的虚拟机通过在宿主主机中运行 hypervisor
阅读全文
摘要:术语 首先介绍几个术语。 服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。 项目 (project):由一组关联的应用容器组成的一个完整业务单元。 可见,一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理。 场景 最常见的项目是 web 网站,该项目应
阅读全文
摘要:命令对象与格式 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。 执行 docker compose [COMMAND] help 或者 docker compose he
阅读全文
摘要:模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker compose.yml,格式为 YAML 格式。 version: "3" services: webapp:
阅读全文
摘要:Compose 支持 Linux、macOS、Windows 10 三大平台。 Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。 前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏
阅读全文
摘要:Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。
阅读全文
摘要:Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。 其代码目前在 https://github.com/docker/compose 上开源。 Compose 定位是 「定义和运行多个 D
阅读全文
摘要:容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 P 或 p 参数来指定端口映射。 当使用 P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。 使用 docker container ls 可以看到,本地主机的 49155 被映射到了容
阅读全文
摘要:如果你之前有 Docker 使用经验,你可能已经习惯了使用 link 参数来使容器互联。 随着 Docker 网络的完善,强烈建议大家将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 link 参数。 新建网络 下面先创建一个新的 Docker 网络。 $ docker networ
阅读全文
摘要:如何自定义配置容器的主机名和 DNS 呢?秘诀就是 Docker 利用虚拟文件来挂载容器的 3 个相关配置文件。 在容器中使用 mount 命令可以看到挂载信息: $ mount /dev/disk/by uuid/1fec...ebdf on /etc/hostname type ext4 ...
阅读全文
摘要:v 还是 –mount 参数 Docker 新用户应该选择 mount 参数,经验丰富的 Docker 使用者对 v 或者 volume 已经很熟悉了,但是推荐使用 mount 参数。 挂载一个主机目录作为数据卷 使用 mount 标记可以指定挂载一个本地主机的目录到容器中去。 $ docker r
阅读全文
摘要:数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷 可以在容器之间共享和重用 对 数据卷 的修改会立马生效 对 数据卷 的更新,不会影响镜像 数据卷 默认会一直存在,即使容器被删除 注意:数据卷 的使用,类似于 Linux 下对目录或文件进行 mount
阅读全文
摘要:上一节我们搭建了一个具有基础功能的私有仓库,本小节我们来使用 Docker Compose 搭建一个拥有权限认证、TLS 的私有仓库。 新建一个文件夹,以下步骤均在该文件夹中进行。 准备站点证书 如果你拥有一个域名,国内各大云服务商均提供免费的站点证书。你也可以使用 openssl 自行签发证书。
阅读全文
摘要:目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 15,000 的镜像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。 注册 你可以在 https://cloud.docker.com 免费注册一个 Docker 账号。 登录 可以通过执
阅读全文
摘要:有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。 本节介绍如何使用本地仓库。 docker registry 是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 docker registry v2.x 版本。 安装运行 docker regi
阅读全文
摘要:导出容器 如果要导出本地某个容器,可以使用 docker export 命令。 $ docker container ls a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7691a814370e ubuntu:14.04 "/bin/
阅读全文
摘要:可以使用 docker container rm 来删除一个处于终止状态的容器。例如 $ docker container rm trusting_newton trusting_newton 如果要删除一个运行中的容器,可以添加 f 参数。Docker 会发送 SIGKILL 信号给容器。 清理所
阅读全文
摘要:仓库(Repository)是集中存放镜像的地方。 一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 dl.dockerpool.co
阅读全文
摘要:更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 d 参数来实现。 下面举两个例子来说明一下。 如果不使用 d 参数运行容器。 $ docker run ubuntu:17.10 /bin/sh c "while true; do echo
阅读全文
摘要:可以使用 docker container stop 来终止一个运行中的容器。 此外,当 Docker 容器中指定的应用终结时,容器也自动终止。 例如对于上一章节中只启动了一个终端的容器,用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。 终止状态的容器可以用 docke
阅读全文
摘要:在使用 d 参数时,容器启动后会进入后台。 某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,原因会在下面说明。 attach 命令 docker attach 是 Docker 自带的命令。下面示例
阅读全文
摘要:Docker 镜像是怎么实现增量的修改和维护的? 每个镜像都由很多层次构成,Docker 使用 Union FS 将这些不同的层结合到一个镜像中去。 通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个 disk 挂到同一个目录下,另一个更常用的就是将一个只读的分支和
阅读全文
摘要:启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。 新建并启动 所需要的命令主要为 docker run。 例如,下面的命令输出一个 “Hello World
阅读全文
摘要:之前的做法 在 Docker 17.05 版本之前,我们构建 Docker 镜像时,通常会采用两种方式: 全部放入一个 Dockerfile 一种方式是将所有的构建过程编包含在一个 Dockerfile 中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题: Dockerfile
阅读全文
摘要:除了标准的使用 Dockerfile 生成镜像的方法外,由于各种特殊需求和历史原因,还提供了一些其它方法用以生成镜像。 从 rootfs 压缩包导入 格式:docker import [选项] || [[:]] 压缩包可以是本地文件、远程 Web 文件,甚至是从标准输入中得到。压缩包将会在镜像 /
阅读全文
摘要:我们已经介绍了 FROM,RUN,还提及了 COPY, ADD,其实 Dockerfile 功能很强大,它提供了十多个指令。下面我们继续讲解其他的指令。 COPY 复制文件 格式: COPY ... COPY ["",... ""] 和 RUN 指令一样,也有两种格式,一种类似于命令行,一种类似于函
阅读全文
摘要:Dockerfile 定制镜像 从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题
阅读全文
摘要:如果要删除本地的镜像,可以使用 命令,其格式为: " " 用 ID、镜像名、摘要删除镜像 其中, 镜像短 ID 镜像长 ID 镜像名 镜像摘要`。 比如我们有这么一些镜像: 我们可以用镜像的完整 ID,也称为 ,来删除镜像。使用脚本的时候可能会用长 ID,但是人工输入就太累了,所以更多的时候是用 来
阅读全文
摘要:要想列出已经下载下来的镜像,可以使用 命令。 列表包含了 、`标签 镜像 ID 创建时间 所占用的空间`。 其中仓库名、标签在之前的基础概念章节已经介绍过了。 镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个 标签 。因此,在上面的例子中,我们可以看到 和 拥有相同的 ID,因为它们对应的是同一
阅读全文
摘要:之前提到过, "Docker Hub" 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。 从 Docker 镜像仓库获取镜像的命令是 。其命令格式为: 具体的选项可以通过 命令看到,这里我们说一下镜像名称的格式。 Docker 镜像仓库地址:地址的格式一般是 。默认地址是 Docke
阅读全文
摘要:准备工作 系统要求 Docker CE 支持以下版本的 Ubuntu 操作系统: Artful 17.10 (Docker CE 17.11 Edge +) Xenial 16.04 (LTS) Trusty 14.04 (LTS) Docker CE 可以安装在 64 位的 x86 平台或 ARM
阅读全文
摘要:国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如: Docker 官方提供的中国 registry mirror 阿里云加速器 DaoCloud 加速器 我们以 Docker 官方加速器为例进行介绍。 Ub
阅读全文
摘要:POM 主要增加了 依赖 " " 消息消费者服务 主要使用 注解来订阅从名为 的 Binding 中接收的消息 " " Application 配置 Input( ) 的 Binding 信息并配合 注解使其生效 " " application.yml 运行成功后即可在控制台接收到消息:`Recei
阅读全文
摘要:概述 在实际生产中,我们需要发布和订阅的消息可能不止一种 Topic ,故此时就需要使用自定义 Binding 来帮我们实现多 Topic 的发布和订阅功能 生产者 自定义 Output 接口,代码如下: public interface MySource { @Output("output1")
阅读全文
摘要:概述 RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 由于本教程整个案例基于 Spring Cloud,故我们采用 Spring Cloud Stream 完成一次发布和订阅 "官方教程" " " Spring Cloud Stre
阅读全文
摘要:概述 消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要具有以下优势: 削峰填谷: 主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题 系统解耦: 解决不同重要程度、不同能力级别系统之间依赖导致一死全死 提升性能: 当存在一对多调用时,可以发一条消息
阅读全文
摘要:docker compose.yml 注意:启动 RocketMQ Server + Broker + Console 至少需要 2G 内存 version: '3.5' services: rmqnamesrv: image: foxiswho/rocketmq:server container_
阅读全文
摘要:什么是 MQ Message Queue(MQ),消息队列中间件。很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ 是异步的,用来解耦的,但是这个只是 MQ 的效果而不是目的。MQ 真正的目的是为了通讯,屏蔽底层复杂的通讯协议,定义了一套应用层的、更加
阅读全文
摘要:什么是 Assembly Plugin Assembly 插件目的是提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 " " Assembly 支持的归档文件类型 zip tar.gz tar.bz2 jar dir war " " 使用步骤 此处以将 SkyWalking 探
阅读全文
摘要:Java Agent 服务器探针 参考官网给出的帮助 "Setup java agent" ,我们需要使用官方提供的探针为我们达到监控的目的,按照实际情况我们需要实现三种部署方式 IDEA 部署探针 Java 启动方式部署探针(我们是 Spring Boot 应用程序,需要使用 的方式启动应用) D
阅读全文
摘要:基于 Docker 安装 ElasticSearch 在 " 为什么需要链路追踪 " 章节中介绍过 SkyWalking 存储方案有多种,官方推荐的方案是 ElasticSearch ,所以我们需要先安装 ElasticSearch。 " " docker compose.yml 其中, 端口号为
阅读全文
摘要:什么是链路追踪 微服务架构是通过业务来划分服务的,使用 REST 调用。对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。 随着服务的越来越多,对调用链的分析会越来越
阅读全文
摘要:Spring Boot Profile 我们在做项目开发的时候,生产环境和测试环境的一些配置可能会不一样,有时候一些功能也可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息。但是 Spring 中为我们提供了 Profile 这个功能。我们只需要在启动的时候添加一个虚拟机参数,激活自己环境
阅读全文
摘要:POM 此处我们以之前创建的 " 服务提供者 " 项目为例 在 中增加 依赖 完整的 如下: " " bootstrap.properties 创建名为 的配置文件并删除之前创建的 配置文件,由于已经在服务端配置,此处不再赘述 注意:在之前的 Spring Cloud Netflix 课程中有提到过
阅读全文
摘要:分布式配置中心 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。 " " Nacos Config Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cl
阅读全文
摘要:概述 全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP 访问限制等等。 注意:截止博客发表时间 2019 年 01 月 10 日,Spring Cloud Gateway 正式版为 2.0.2 其文档并不完善,并且有些地方还要重新设计,这里仅
阅读全文
摘要:什么是 Spring Cloud Gateway Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而
阅读全文
摘要:" " Sentinel 控制台 Sentinel 控制台提供一个轻量级的控制台,它提供机器发现、单机资源实时监控、集群资源汇总,以及规则管理的功能。您只需要对应用进行简单的配置,就可以使用这些功能。 注意: 集群资源汇总仅支持 500 台以下的应用集群,有大概 1 2 秒的延时。 " " 下载并打
阅读全文
摘要:概述 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以通过 相互调用,在 Spring Cloud 中可以用 和 来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证 100% 可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有
阅读全文
摘要:概述 Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用 Feign 注解和 JAX RS 注解。Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,Nacos 也
阅读全文
摘要:概述 服务消费者的创建与服务提供者大同小异,这里采用最原始的一种方式,即显示的使用 LoadBalanceClient 和 RestTemplate 结合的方式来访问。 " " POM 创建一个工程名为 的服务消费者项目, 配置如下: " " Application " " Configuratio
阅读全文
摘要:概述 通过一个简单的示例来感受一下如何将服务注册到 Nacos,其实和 Eureka 没有太大差别。 " " POM 创建一个工程名为 的服务提供者项目, 配置如下: " " Application 通过 注解表明是一个 Nacos 客户端,该注解是 Spring Cloud 提供的原生注解 " "
阅读全文
摘要:概述 在 Spring Cloud Netflix 阶段我们采用 Eureka 做作为我们的服务注册与发现服务器,现利用 Spring Cloud Alibaba 提供的 Nacos 组件替代该方案。 "Nacos 官网" " " 什么是 Nacos Nacos 致力于帮助您发现、配置和管理微服务。
阅读全文
摘要:概述 温馨提示 当前 Spring Cloud Alibaba 的 0.2.1.RELEASE 版本基于 Spring Cloud Finchley(F)开发,故在选择 Spring Boot 版本时不要使用 2.1.0 及以上版本(因为 2.1.x 版本必须使用 Spring Cloud Gree
阅读全文
摘要:概述 2018 年 10 月 31 日的凌晨,这个伟大的日子里,Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器,并在 Maven 中央库发布了第一个版本。 "Spring Cloud for Alibaba 0.2.0 released" The Spri
阅读全文
摘要:创建 Spring Boot Admin Client 创建一个工程名为 的项目, 文件如下: 主要增加了 2 个依赖, 、`de.codecentric:spring boot admin starter client` 其中 的版本号为: ,这里没写版本号是因为我已将版本号托管到 项目中 " "
阅读全文
摘要:创建 Spring Boot Admin Server 创建一个工程名为 的项目, 文件如下: 主要增加了 2 个依赖, 、`de.codecentric:spring boot admin starter server` 其中 的版本号为: ,这里没写版本号是因为我已将版本号托管到 项目中 " "
阅读全文
摘要:概述 这篇文章主要讲解服务追踪组件 ZipKin。 " " ZipKin 简介 ZipKin 是一个开放源代码的分布式跟踪系统,由 Twitter 公司开源,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。它的理论模型来自于 Google Dapper 论
阅读全文
摘要:随着开发周期的推移,项目会不断变大,切分出的服务也会越来越多,这时一个个的微服务构成了错综复杂的系统。对于各个微服务系统的健康状态、会话数量、并发数、服务资源、延迟等度量信息的收集就成为了一个挑战。Spring Boot Admin 应运而生,它正式基于这些需求开发出的一套功能强大的监控管理系统。
阅读全文
摘要:概述 创建一个工程名为 的项目, 文件配置如下: 主要增加了 依赖 " " Application 入口类没有需要特殊处理的地方,代码如下: " " application.yml 增加 Config Client 相关配置,并设置端口号为: 相关配置说明,如下: :配置服务中心的网址 :配置文件名
阅读全文
摘要:概述 创建一个工程名为 的项目, 配置文件如下: 主要增加了 依赖 " " Application 通过 注解,开启配置服务器功能 " " application.yml 增加 Config 相关配置,并设置端口号为: 相关配置说明,如下: :配置仓库的分支 :配置 Git 仓库地址(GitHub、
阅读全文
摘要:在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在 Spring Cloud 中,有分布式配置中心组件 Spring Cloud Config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程 Git 仓库中。在 Spring Cl
阅读全文
摘要:概述 Zuul 不仅仅只是路由,还有很多强大的功能,本节演示一下它的服务过滤功能,比如用在安全验证方面。 #创建服务过滤器 继承 ZuulFilter 类并在类上增加 @Component 注解就可以使用服务过滤功能了,非常简单方便 package com.funtl.hello.spring.cl
阅读全文
摘要:概述 在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、熔断器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简单的微服务系统如下图: 在 Spring Cloud 微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负
阅读全文
摘要:概述 在 Ribbon 和 Feign 项目增加 Hystrix 仪表盘功能,两个项目的改造方式相同 #在 pom.xml 中增加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud
阅读全文
摘要:概述 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以通过 RPC 相互调用,在 Spring Cloud 中可以用 RestTemplate + Ribbon 和 Feign 来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证 100% 可
阅读全文
摘要:概述 Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用 Feign 注解和 JAX-RS 注解。Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,并和 Eure
阅读全文
摘要:概述 在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于 http restful 的。Spring cloud 有两种服务调用方式,一种是 ribbon + restTemplate,另一种是 feign。在这一篇文章首先讲解下基于 ribbon + rest。 #Ribbon
阅读全文
摘要:概述 当 Client 向 Server 注册时,它会提供一些元数据,例如主机和端口,URL,主页等。Eureka Server 从每个 Client 实例接收心跳消息。 如果心跳超时,则通常将该实例从注册 Server 中删除。 #POM <?xml version="1.0" encoding=
阅读全文
摘要:概述 在这里,我们需要用的组件是 Spring Cloud Netflix 的 Eureka,Eureka 是一个服务注册和发现模块 #创建服务注册中心 其 pom.xml 文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="
阅读全文
摘要:概述 Spring Cloud 项目都是基于 Spring Boot 进行开发,并且都是使用 Maven 做项目管理工具。在实际开发中,我们一般都会创建一个依赖管理项目作为 Maven 的 Parent 项目使用,这样做可以极大的方便我们对 Jar 包版本的统一管理。 #创建依赖管理项目 创建一个工
阅读全文
摘要:使用 tk.mybatis 操作数据库 经过之前章节一系列的配置之后,我们已经满足了使用 MyBaits 操作数据库的必要条件,下面是使用 tk.mybatis 操作数据库的例子。 我们以测试操作用户表为例(tb_user) #修改入口类 需要使用 @MapperScan 注解来指定 Mapper
阅读全文
摘要:我们无需手动编写 实体类、DAO、XML 配置文件,只需要使用 MyBatis 提供的一个 Maven 插件就可以自动生成所需的各种文件便能够满足基本的业务需求,如果业务比较复杂只需要修改相关文件即可。 #配置插件 在 pom.xml 文件中增加 mybatis-generator-maven-pl
阅读全文
摘要:概述 tk.mybatis 是在 MyBatis 框架的基础上提供了很多工具,让开发更加高效 #引入依赖 在 pom.xml 文件中引入 mapper-spring-boot-starter 依赖,该依赖会自动引入 MyBaits 相关依赖 <dependency> <groupId>tk.myba
阅读全文
摘要:概述 PageHelper 是 Mybatis 的分页插件,支持多数据库、多数据源。可以简化数据库的分页查询操作,整合过程也极其简单,只需引入依赖即可。 #引入依赖 在 pom.xml 文件中引入 pagehelper-spring-boot-starter 依赖 <dependency> <gro
阅读全文
摘要:概述 Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和 SQL 解析器组成。该项目主要是为了扩展 JDBC 的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计 SQL 信息、SQL 性能收集、SQL 注入检查、SQL 翻译等,程序员可以通过定制来实
阅读全文
摘要:概述 本章节主要介绍一下 Spring Boot 中的一些常用配置,比如:自定义 Banner、配置日志、关闭特定的自动配置等。 #自定义 Banner 在 Spring Boot 启动的时候会有一个默认的启动图案 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __
阅读全文
摘要:概述 主要是通过 @RunWith 和 @SpringBootTest 注解来开启单元测试功能 package com.snake.hello.spring.boot; import org.junit.Before; import org.junit.Test; import org.junit.
阅读全文
摘要:概述 这里我们使用 Intellij IDEA 来新建一个 Spring Boot 项目。 #打开 IDEA -> New Project -> Spring Initializr #填写项目信息 #选择 Spring Boot 版本及 Web 开发所需的依赖 #保存项目到指定目录 #工程目录结构
阅读全文
摘要:优点 快速构建项目 对主流开发框架的无配置集成 项目可独立运行,无需外部依赖 Servlet 容器 提供运行时的应用监控 极大地提高了开发、部署效率 与云计算的天然集成 #缺点 版本迭代速度很快,一些模块改动很大 由于不用自己做配置,报错时很难定位 网上现成的解决方案比较少
阅读全文
摘要:概述 随着动态语言的流行 (Ruby、Groovy、Scala、Node.js),Java 的开发显得格外的笨重:繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。 在上述环境下,Spring Boot 应运而生。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性
阅读全文
摘要:POM 创建一个工程名为 hello-spring 的项目,pom.xml 文件如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi=
阅读全文
摘要:概述 Spring 由 20 多个模块组成,它们可以分为数据访问/集成(Data Access/Integration)、Web、面向切面编程(AOP, Aspects)、应用服务器设备管理(Instrumentation)、消息发送(Messaging)、核心容器(Core Container)和
阅读全文
摘要:概述 控制反转(IoC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。 IoC 是一个概念,是一种思想,其实现方式多种多样。当前比较
阅读全文
摘要:非侵入式 所谓非侵入式是指,Spring 框架的 API 不会在业务逻辑上出现,即业务逻辑是 POJO。由于业务逻辑中没有 Spring 的 API,所以业务逻辑可以从 Spring 框架快速的移植到其他框架, 即与环境无关。 #容器 Spring 作为一个容器,可以管理对象的生命周期、对象与对象之
阅读全文
摘要:概述 Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度。 根据功能的不同,可以将一个系统中的代码分为 主业务逻辑 与 系统级业务逻辑 两类。它们各自具有鲜明的特点:主业务代码间逻辑联系紧密,有具体的专业业务应用场景,复用性相对较低;系统级业务相对功能独立,没有具体的专业业务应用场景,主
阅读全文
摘要:概述 下面我们来学习如何使用 Maven 创建一个 Java Web 应用程序 #创建 Maven 项目 选择 File -> New -> Project... 选择 Maven 项目 填写项目信息 选择工作空间 #目录结构 Java Web 的 Maven 基本结构如下: ├─src │ ├─m
阅读全文
摘要:本章节只提供 Maven 使用时的一些基本命令 #清除产生的项目 mvn clean 编译源代码 mvn compile 打包 mvn package 只打包不测试(跳过测试) mvn -dmaven.test.skip=true 安装到本地仓库 mvn install 源码打包 mvn sourc
阅读全文
摘要:概述 大型应用软件一般由多个模块组成,一般它是多个团队开发同一个应用程序的不同模块,这是比较常见的场景。例如,一个团队正在对应用程序的应用程序,用户界面项目(app-ui.jar:1.0) 的前端进行开发,他们使用的是数据服务工程 (data-service.jar:1.0)。 现在,它可能会有这样
阅读全文
摘要:Maven 是一个执行插件的框架,每一个任务实际上是由插件完成的。Maven 插件通常用于: 创建 jar 文件 创建 war 文件 编译代码文件 进行代码单元测试 创建项目文档 创建项目报告 一个插件通常提供了一组目标,可使用以下语法来执行: mvn [plugin-name]:[goal-nam
阅读全文
摘要:概述 POM 代表项目对象模型。它是 Maven 中工作的基本单位,这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。 POM 包含的项目是使用 Maven 来构建的,它用来包含各种配置信息。 POM 也包含了目标和插件。在执行任务或目标时,Maven 会使用当前目录中的
阅读全文
摘要:概述 在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么? #传统方式 访问 http://logging.apache.org/log4j/ 下载 Log4j 的 jar 库
阅读全文
摘要:概述 当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 http://repo1.maven.org/maven2/ 查
阅读全文
摘要:概述 Maven 的本地资源库是用来存储所有项目的依赖关系(插件 Jar 和其他文件,这些文件被 Maven 下载)到本地文件夹。很简单,当你建立一个 Maven 项目,所有相关文件将被存储在你的 Maven 本地仓库。 默认情况下,Maven 的本地资源库默认为 .m2 目录文件夹: Unix/M
阅读全文
摘要:概述 想要安装 Apache Maven 在 Windows 系统上, 需要下载 Maven 的 zip 文件,并将其解压到你想安装的目录,并配置 Windows 环境变量。 注意:请尽量使用 JDK 1.8 及以上版本 #JDK 和 JAVA_HOME 确保已安装 JDK,并设置 JAVA_HOM
阅读全文
摘要:概述 Maven 是一个项目管理和综合工具。Maven 提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven 使用标准的目录结构和默认构建生命周期。 在多个开发团队环境时,Maven 可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并
阅读全文