【从零开始的 K8s-02】ingress-nginx 的认识与使用
认识 Ingress-nginx我们先来看一下官网对于 ingress 的解释: Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。流量路由由 Ingress 资源所定义的规则来控制。下面是 Ingress 的一个简单示例,可将所有流量都发送到同一 Service: 通俗的理解,我们可以将 ingress 理解为 cloud 项目里的网关,通过判断请求信息、请求路径后,转发到对应的服务内。 常见的 ingress 控制器有 ingress-nginx、Traefik、HAProxy Ingress 等等,但使用最多的还是 nginx,本文也会以 ingress-nginx 来做演示 PS:ingress-nginx 是 kubernetes 社区维护的,而 kubernetes-ingress 是 nginx 官方维护的,本文使用前者! minikube安装 Ingress-nginx 控制器运行下面的命令进行安装 1kubectl apply -f...
(自动化部署,CI/CD) 多环境多平台安装并使用 Jenkins
前言CI/CD 是持续化继承和持续化部署的简称。目的是在开发的过程中,尽可能的降低人工成本,来完成部署操作。通过 Jenkins 自动流水线工作可以省去很多时间,对于程序开发者而言,将部署 jar 包、修改环境、日志记录等一系列操作集成到 Jenkins 任务内,省时又省力,本次将以 Jenkins 为核心进行从 0 到 1 的搭建与使用,并提供了 Java 单体项目与微服务的通用 shell 脚本供于使用。 环境说明本文通过两种方式进行演示,第一种是基于 Docker 完成 Jenkins 的安装与应用,Docker 使用版本为 25.0.3;第二种是直接在本机上安装 Jenkins(本人主机为 Mac,所以使用 Mac 来安装,Linux 基本也是一样的) 基于 Docker 的 Jenkins 更多适合训练,因为所有的操作都在容器内、方便后续转移以及迁移。但缺点是 Jenkins 与宿主机的环境不互通,如在容器打完的 jar 包只能放在挂载的目录里。而且 Java 项目需要连接的中间件也非常多、且因为 jar 包是跑在 Jenkins...
mybatis-flex 框架的学习与使用
前言最近发现了这个新框架,想着学习一下发现网上的教程几乎全是对官网的复制粘贴…… 很多细节要点都没有告诉你,很容易让人看的一头雾水,所以自己跟着官网文档做了一个示例 Demo,写个教程做记录,也分享给需要的各位(后面会使用 flex 指代 mybatis-flex、plus 指代 mybatis-plus) 常见问题这里我把常见问题放在前面是因为有很多坑,所以我想先把我踩过的坑列出来,提前了解,不然后面问题很多不好解释。这些坑我也都是从官网找的对应解决方法,在这里放出来同时加深一下印象。 如何使用分页 以前我们 mybatis-plus 会搭配 pagehelper-spring-boot-starter 依赖来实现分页,但是使用 mybatis-flex 后,请注意,将分页依赖更换为 pagehelper 依赖 原因是 pagehelper-spring-boot-starter 依赖的 mybatis-spring-boot-starter 会使 flex 启动异常,导致查询时参数赋值不上,会产生《No value specified for parameter...
在 Java 后端实现对 xxlJob 的任务管理
前言最近需要在 Java 后端操作 xxl 任务调度平台来完成任务的加入,在网上找了发现全都需要修改 admin 服务,对于已经上线的项目来说,明显不好操作切繁琐,修改 admin 服务的原因也很简单,是因为在外部直接调用添加、修改任务方法时,会被拦截告诉未登陆,因此需要在源码内多补充几个方法同时加上绕过登陆的注解。那么有没有一种办法可以不修改源码也可以操作 admin 服务内的方法呢。看了 xxlJob 的源码部分发现是可行的,在页面内我们可以发现登陆 xxlJob 后会返回一个 cookie,那么我们就借助这个 cookie 来辅助我们登陆! 不了解 xxlJob 的朋友可以看一下上一篇:项目接入 xxl-job 工具类介绍及使用我自己已经封装了一个工具类用来帮助我们操作 admin 服务,使用也很简单。首先对工具类进行一个简单的介绍,流程框架为 调用登陆方法获取 cookie >>> 携带 cookie 和参数访问指定方法 >>> 返回结果 在使用工具类之前,我们只需要手动修改三个值以及引入一个实体类即可,分别是 xxlJob...
【从零开始的 K8s-01】基于 minikube 搭建一个本地 K8s 环境
前言minikube 可以做到在本地部署 kubernetes (也叫 K8s,后面会用 K8s 指代 kubernetes) 环境、以单节点集群环境运行,非常方便个人测试和学习。个人也打算使用 minikube 来当作练手,在差不多搞清楚 K8s 的运作原理以及各种配置后,再上多台服务器搭建的真正的 K8s 环境。所以希望本文可以帮助更多人以更轻松的方式学习,并初步了解 K8s 究竟是什么东西。 多台服务器的 Kubernetes 搭建 minikube这里先放上源代码,以及 K8s 的官网 minikube minikube(github) kubenates 正如前面所说,minikube 可以在本地计算机上运行单节点 Kubernetes 集群的工具。易于安装和使用,那么我们首先需要在本地安装 minikube 安装 minikubePS:请先安装好 docker 再继续下面的步骤,因为 minikube 需要依赖于虚拟化软件来创建和管理虚拟机;本人只有 mac 环境是自己走了一遍,windows 与 linux...
微服务项目基于 springdoc 快速接入 swagger3
环境说明 SpringBoot:3.0.2 SpringCloud:2022.0.0 SpringCloudAlibaba:2022.0.0.0-RC2 jackson:2.15.2 springdoc:2.2.0 这里也放一张官方与 SpringBoot 的版本关系 本次是基于 SpringBoot3 搭建的微服务做演示,因为升级 SpringBoot3 后,重构升级了很多东西,所以重新把 swagger 的引入记录一下。不过好消息是接入与使用非常简单。 我这里简单说一下我的项目结构,基本上是和 ruoyi 一样的 主要是 common,这里我们也只需要关注 swagger 模块即可。我在 common 下新建了一个模块,名为 swagger。主要作用是把 swagger 相关的东西放在这,方便管理。之后其他业务模块只需要引入 sora-common 即可完成对 swagger 的引入。后面也会基于此环境进行搭建与演示。 依赖引入在 swagger 模块内引入 springdoc 依赖(只需要引入此依赖即可) 12345<dependency> ...
okHttp 的使用
项目的通信在开发的过程中,我们平时会面临两种通信,一种是项目之间的通信,一种是项目以外的通信。对于前者,我们通常会使用 openFeign 来解决。而项目以外的通信我们则会有 restTemplate、okHttp 以及 Retrofit 等众多通信框架。我之前也是一直使用 restTemplate,但最近接触到 okHttp 发现,用着比 restTemplate 更省心更方便一点,并且支持异步通信。这次就针对 okHttp 来简单做一下文章。 为什么选择 okHttp从性能方面考虑,其支持 HTTP2 并且使用链接池复用资源;在实际使用方面,只需要进行一次封装,后续即可直接调用,省心省力;最后就是支持异步通信功能;这些对于日常开发完全够用了,下面直接在项目中进行演示 项目实践引入依赖1234567891011121314151617181920<!--okhttp--><dependency> <groupId>com.squareup.okhttp3</groupId> ...
关于 Excel 的导入导出和文件的下载
快速介绍我们平时开发中或多或少会接触 Excel 的使用,尤其是对于一些页面列表的导出。在项目里我们可能使用的是架构师给我们封装好的工具类,又或者是 EasyPoi,还有阿里的 EasyExcel 等等。甚至一个项目组内每个人都有自己对应的实现方式。属实有点乱。包括写这篇文章的时候,我试着去用了一下阿里的 EasyExcel,按照官网的意思,速度导出快,资源占用少。我也实际用了一下。速度肯定要比 EasyPoi 要快的。这次的文章就以 EasyExcel 为基础来讲解了,但是!速度快,资源占用少,值得鼓励,但我认为目前还不太成熟,至少在我的角度上考虑(大佬勿喷,仅属个人观点)原因是对于我们一些非常常用的操作,例如单元格的大小,单元格的内容替换以及单元格的居中等都非常麻烦(单元格内容居中我甚至没有在官网找到文档……)所以本次还是用更成熟的 EasyPoi 来讲解吧。 POI 的使用我们只需要导入一个依赖即可使用。我使用的是目前最新版本 5.0.0 12345<dependency> ...
来说说目前常用的各种加密及其对应实现
加密类型加密对于特殊数据来说是很重要的,我们也在不断开发新的加密手法来保护数据不被破解。这次我想介绍下目前常用的几种加密方式与其对应的特点。最后会基于 hutool 来完成对应的加密例子,必须引入 hutool 的依赖!! 12345<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.16</version></dependency> 对称加密对称加密是最早出现也是最简单的一种加密方式,加密和解密都是通过一个密钥去实现,具有加密解密速度快的特点,所以适合数据量大的加解密。但缺点也很明显,因为密钥是相同的,所以安全性比较低。 常用的加密方式有 DES、3DES 和 AES 特点:加密解密快,安全性低 非对称加密非对称加密则是弥补了对称加密的缺点,使用 2...
使用 propertySourceLocator 来自定义属性并引入外部配置文件
接口介绍propertySourceLocator 是 Spring-cloud-context 包下的一个接口,用于定位外部数据源或者内部的自定义数据源配置。Nacos 就是通过 NacosPropertySourceLocator 类实现 propertySourceLocator 接口,来获取 nacos 的配置加载到环境中的。下面是接口定义的三个方法。这里我们需要关注 locate 这个方法。这个方法的实现依赖于我们如何去定义一个新的 propertySource 1234567891011121314151617181920212223242526272829public interface PropertySourceLocator { PropertySource<?> locate(Environment environment); default Collection<PropertySource<?>> locateCollection(Environment environment) { ...