使用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/elasticsearch -E node.name=node0 -E cluster.name=elasticserch -E path.data= ...
惊呆了,竟然可以用这种方式秒建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://localhost:8099/xxl-conf-admin# 环境配置 ...
如何保证 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.prope ...
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工程,然后加入Nacos依赖
12345<dependency> < ...
Win10子系统Ubuntu 18.04 LTS上安装docker
子系统安装docker挺麻烦的,这篇文章也是为了做个记录,以后有需要可以翻出来瞅瞅。这里我使用的是Ubuntu 18.04 LTS的版本,可以在应用商店搜索Linux下载。
我们要先去docker的官网下载一个Windows的docker版本:
1https://hub.docker.com/?overlay=onboarding
Linux配置Windows 子系统Ubuntu 18.04 LTS和docker桌面版下载完毕之后,我们启动子系统,配置一些参数。
为了方便后续使用ssh工具连接linux,需要先安装ssh服务:
12sudo apt-get install openssh-serversudo apt-get install openssh-client
修改sshd配置文件
1vim /etc/ssh/sshd_config
修改内容包含下面的几个配置:
123ListenAddress 0.0.0.0 # 取消注释#StrictModes yes # 注释PasswordAuthentication yes # 允许密码登录
启动ssh,ssh服务不会跟随子 ...
Java线上服务CPU飙升问题定位
安装(以下任意一种方式)🐌 下载使用下载整个工程的脚本直接clone工程使用简单、方便更新,不过要安装有git。
123456789git clone git://github.com/oldratlee/useful-scripts.gitcd useful-scripts# 使用Release分支的内容git checkout release-2.x# 更新脚本git pull
包含2个分支:
dev-2.x:开发分支
release-2.x:发布分支,功能稳定的脚本
当然如果你不想安装git,github是支持svn的:
123456svn co https://github.com/oldratlee/useful-scripts/branches/release-2.xcd useful-scripts# 更新脚本svn up
PS:我的做法是把useful-scripts checkout到$HOME/bin目录下,再把$HOME/bin/useful-scripts/bin配置到PATH变量上,这样方便我本地使用所有的脚本。
打包下载下载文件release-2. ...
五分钟学会 Java 开发效率神器 Lombok!
简介Lombok 是一个 Java 第三方库,可以透过简单的注解省略 Java 的代码,像是 setter、getter、logger…等,目的在消除冗长的代码和提高开发效率
假设你在类上加上了一个 @Getter 和 @Setter 注解,那你就不用在写烦人的 getter 和 setter,lombok 会自动帮你产生出来啦!
之所以加个 lombok 的 @Getter 注解就可以帮我们自动生成所有变量的 getter,是因为 lombok 参与了 Java 在 compile 阶段生成 .class 档的过程,lombok 会帮我们自动写一堆 getter,然后塞进 .class 档,所以真正被编译出来的 User.class 档桉,是包含完整的 getter 的
简单的说,lombok可以算是一种语法糖,只是在帮我们增进开发效率而已,实际上所产生出来的.class档仍然是完全正常的
安装 Lombok要在 project 中使用 lombok,除了要在 maven 中加入 lombok 依赖,还要安装 IDEA lombok 插件
1. 加入 maven 依赖123456& ...
Centos7修改swap分区大小
查看初始状态查看原先swap大小
1234[yi@localhost ~]$ free -h total used free shared buff/cache availableMem: 3.7G 429M 2.7G 11M 552M 3.0GSwap: 2.0G 0B 2.0G
原先swap文件位置
1234root@gpu-2:~# swapon -s文件名 类型 大小 已用 权限/swapfile1 file 12582908 0 -2root@gpu-2:~#
创建一个新的swap文件一般swap分区要大于或等于物理内存(1-1.5倍),最大一般有20G即可,我这里创建12G:
1234567891011121314151617181920212223242526272829303 ...