放弃Dockerfile 部署 Spring Boot,来和谷歌的Jib插件 PY一下
放弃Dockerfile 部署 Spring Boot,来和谷歌的Jib插件 PY一下说明Jib 为 Java 应用程序构建优化的 Docker 和OCI映像,无需 Docker 守护进程,并且对 Docker 最佳实践没有深度掌握。它作为Maven和Gradle的插件以及 Java 库提供。
Jib 使用 Java 开发,使用也非常简单,可以作为 Maven 或者 Gradle 的插件直接集成到我们的项目中。它利用镜像分层和注册表缓存来实现快速、增量的构建。Jib 会自动读取项目的构建配置,代码组织到不同的层(依赖项、资源、类)中,然后它只会重新构建和推送发生变更的层。在项目进行快速迭代时,Jib 只将发生变更的层推送到 registers 来缩短构建时间。
这是谷歌开源的一个容器化运行方案,使用它我们将 Spring Boot 进行容器化部署只要两步:
第一步配置 Maven Plugin
第二步构建
使用如果需要推送到官方的 Docker Hub,需要提前准备一个 Docker Hub 的账号,账号可以直接去 Docker Hub 上面注册(https://hub.docke ...
Storm入门
说明Storm是Twitter开源的分布式实时大数据处理框架,随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等,大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。
storm的数据执行流程如下如
我们通过自定义Spout和Bolt的流程来控制数据的传输和处理。
此处使用使用kafka作为输入数据源,通过定时任务不断地产生模拟数据,storm获取kafka的数据处理,处理完毕之后吧数据存储在Redis中。
依赖因为storm-core和spring-boot会有slf4j日志的冲突,所以我们需要排除大量的依赖
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 ...
一个小小的RPC框架
一个mini的RPC框架说明这是一个实验性的RPC框架,麻雀虽小但是五脏俱全,基本上RPC的有的功能基础功能都实现了,比如注册发现,反向代理调用等。
在使用上也非常简单只需几行的代码:我们先定义一个接口是实现
12345678910111213141516public interface CalcService { /** * 获取IP地址 * * @return */ String getIp(); /** * 打招呼 * * @param name 名称 * @return */ String hi(String name);}
然后实现它
1234567891011121314151617181920public class CalcServiceImpl implements CalcService { @Override public String getIp() { String ip = null; ...
left join、right join和join,傻傻分不清?
说到SQL,很多人可能用了挺久,但依然有个问题一直困扰着,那就是 left join、 join、 right join和 inner join等等各种 join的区别。网上搜,最常见的就是一张图解图,如下:
接下来就来实际自己动手实验,彻底搞懂图中的含义。
首先,先来建两张表,第一张表命名为 kemu,第二张表命名为 score:
left join顾名思义,就是“左连接”,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下:
12345SELECT * FROM kemu LEFT JOIN score ON kemu.ID = score.ID
结果集:
right join“右连接”,表1右连接表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据,如下:
12345SELECT * FROM kemu RIGHT JOIN score ON kemu.ID = score.ID
结果集:
join(inner join)join,其实就是“ ...
使用Docker搭建Elasticsearch集群服务
Elasticsearch安装使用安装包的方式进行单机部署下载安装包:
1wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.1-darwin-x86_64.tar.gz
解压安装包:
1tar -xvf elasticsearch-7.4.1-darwin-x86_64.tar.gz
运行:
12cd elasticsearch-7.4.1/bin./elasticsearch
###使用安装包的方式进行集群部署使用安装包的方式进行集群部署其实也很简单,你可以使用如下脚本来启动集群服务:
12345678910#!/bin/bashcase $1 in"start") { /Users/pengli/software/middle-software/elasticsearch-7.4.1/bin& ...
惊呆了,竟然可以用这种方式秒建Redis集群?
搭建集群介绍Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。
Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。
Redis Cluster 是无代理模式去中心化的运行模式,客户端发送的绝大数命令会直接交给相关节点执行,这样大部分情况请求命令无需转发,或仅转发一次的情况下就能完成请求与响应,所以集群单个节点的性能与单机 Redis 服务器的性能是非常接近的,因此在理论情况下,当水平扩展一倍的主节点就相当于请求处理的性能也提高了一倍,所以 Redis Cluster 的性能是非常高的。
Redis Cluster 架构图如下所示:
搭建 Redis ClusterRedis Cluster 的搭建方式有两种,一种是使用 Redis 源码中提供的 create-cluster 工具快 ...
XXL-CONF 是一个轻量级分布式配置管理平台
说明XXL-CONF 是一个轻量级分布式配置管理平台,拥有”轻量级、秒级动态推送、多环境、跨语言、跨机房、配置监听、权限控制、版本回滚”等特性。现已开放源代码,开箱即用。
部署把源码clone下来,打开xxl-conf-admin运行即可,非常简单.访问:http://localhost:8099/xxl-conf-admin
配置中心Java接入(Spring Boot)引入配置
12345<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-conf-core</artifactId> <version>1.6.1</version></dependency>
application.properties配置
123456789# xxl-conf# 配置中心跟地址,必填;xxl.conf.admin.address=http:// ...
如何保证 RocketMQ 不丢失消息
消息的发送流程一条消息从生产到被消费,将会经历三个阶段:
生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker
存储阶段,消息将会存储在 Broker 端磁盘中
消息阶段, Consumer 将会从 Broker 拉取消息
以上任一阶段都可能会丢失消息,我们只要找到这三个阶段丢失消息原因,采用合理的办法避免丢失,就可以彻底解决消息丢失的问题。
生产阶段生产者(Producer) 通过网络发送消息给 Broker,当 Broker 收到之后,将会返回确认响应信息给 Producer。所以生产者只要接收到返回的确认响应,就代表消息在生产阶段未丢失。
RocketMQ 发送消息示例代码如下:
123456789101112131415161718DefaultMQProducer mqProducer=new DefaultMQProducer("test");// 设置 nameSpace 地址mqProducer.setNamesrvAddr("namesrvAddr");mqProducer.start();M ...
Consul动态服务发现、配置管理和服务管理平台
说明Consul 是一种服务网络解决方案,用于跨任何运行时平台和公共或私有云连接和保护服务,它提供了以下几个常用的功能:
服务发现
运行状况检查
KV 存储
安全服务通信
多数据中心
它的下载和安装都非常方便:https://www.consul.io下载完,解压,然后打开cmd进入加压的目录,可以使用以下命令启动(dev的配置只存在内存,重启后消失)
1consul agent -dev
因为是测试,所以我们起一个单节点就够了
浏览器访问它的UI界面:
1http://localhost:8500/ui
我们点到Key/Value,点击添加我们的配置
key例如:config/api/respon表示,config目录下有一个api目录,api目录下有一个名为respon的key。Value支持JSON、HCL、YAML三种格式。我们可以多建几个key/value等会用于测试
因为使用官方的SD需要引入Spring Cloud,很大一个包,所以这里我们使用它开放的api自己封装一个,获取值的工具类。application.properties ...
Nacos动态服务发现、配置管理和服务管理平台
说明Nacos 提供了一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理。今天我们就使用Nacos的服务配置功能搭建我们的配置中心。
安装为了方便这里使用docker安装Nacos,避免各种windows的环境问题。
12git clone https://github.com/nacos-group/nacos-docker.gitcd nacos-docker
因为是测试,所以我们起一个单节点就够了,单机模式 Derby
1docker-compose -f example/standalone-derby.yaml up
浏览器访问它的UI界面:
1http://127.0.0.1:8848/nacos/
点击最右边的加号,可以添加我们的配置,下面是他常用的配置格式:
TEXT
JSON
XML
YAML
HTML
Properties
我们配置一个JSON和一个Properties来测试一下
接下来就是代码编写,直接建一个Spring boot工 ...