jiemin's Blog

本来无一物,何处惹尘埃


  • 首页

  • 归档

  • 标签

项目中docker swarm实践

发表于 2019-04-26

项目架构图

docker swarm 集群服务通信

前置要求

  1. 服务需要在同一个docker swarm集群中
  2. 服务需要处于同一个overlay网络上
  3. 服务需要暴露容器端口
  4. 有2个以上服务名不同的服务

服务部署流程(手动方式)

1、 创建overlay网络

1
2
docker network create --driver overlay lvdoo-network
docker network ls

阅读全文 »

docker swarm相关命令

发表于 2019-04-08

1、 启动一个swarm集群

1
2
3
docker swarm init --listen-addr 10.100.9.134:2376 --advertise-addr 10.100.9.134
# --listen-addr指出的是这个集群暴露给外界调用的socket地址
# --advertise-addr参数是指定网卡地址

执行结果如下:

阅读全文 »

使用jenkinsfile进行多分支自动化构建

发表于 2019-03-19

自动化构建示意图

配置步骤

1、 新建任务

2、配置git仓库地址


阅读全文 »

jconsole的小应用

发表于 2019-03-11

应用场景

当excel导出时发生了oom,优化代码后想查看下优化前和优化后导出excel时占用的内存差异,这个时候可以借助jconsole工具来进行查看。

调试步骤

测试类示例代码

模拟50万条数据调用优化前和优化后excel工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@Test
public void testExport() throws Exception {
long startTime = System.currentTimeMillis();
ExcelData<AiCallVO> data = new ExcelData<>();
List<String> titles = new ArrayList<>();
titles.add("通话记录ID");
titles.add("客户姓名");
titles.add("客户手机");
titles.add("意向等级");
titles.add("通话时长");
titles.add("呼叫时间");
titles.add("通话状态");
titles.add("所属任务");
List<AiCallVO> volist = new ArrayList<>();
for (int i = 0; i < 500000; i++) {
AiCallVO aiCallVO = new AiCallVO();
aiCallVO.setCallDuration(i);
aiCallVO.setCallStartTime("2019-03-07");
aiCallVO.setIntentionLevel("A");
aiCallVO.setMobile("13758270856");
aiCallVO.setName("测试");
aiCallVO.setStatus("已接通");
aiCallVO.setTaskName("测试任务" + i);
volist.add(aiCallVO);
}
data.setRows(volist);
data.setTitles(titles);
data.setName("通话记录");
ExportExcel4BigDataUtil.exportExcel(data); #优化后工具类
//ExportExcelUtils.exportExcel(data); #优化前工具类
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime + "ms");
}

阅读全文 »

使用POI导入时出现中文拼音问题解决方法

发表于 2019-01-23

问题描述

使用导入的excel内容如下:

进入数据库的内容

发现原本用户名为张三,进入数据库后变成了张三 zhang’san

排查问题过程

重现问题

在mac中编辑excel中文后进行excel导入,出现了这个问题,在windows中则没有这个情况。

定位问题

  1. 首先将导入有问题的excel文件后缀改成zip。
  2. 解压zip文件,得到文件内容如下:

  1. 打开里面的shareStrings.xml文件,发现zhang’san包含在文件中,确认是在excel中有包含这个字符串,应该是解析excel的时候把zhang’san这个隐藏的元素也解析进去了。

阅读全文 »

2018年总结

发表于 2019-01-23

三分钟快速搭建禅道管理系统

发表于 2019-01-11

前置环境

  1. centos7服务器
  2. 已安装docker

步骤

  1. 进入docker镜像官网,搜索zentao,官网地址:https://hub.docker.com

  1. 选择idoop/zentao镜像进入页面,查阅安装命令,里面有个QuickStart说明,选择开源版的安装命令
1
2
3
4
5
6
mkdir -p /data/zbox && docker run -d -p 8001:80 -p 3308:3306 \
-e USER="root" -e PASSWD="123456" \
-e BIND_ADDRESS="false" \
-v /data/zbox/:/opt/zbox/ \
--name zentao-server \
idoop/zentao:latest
  1. 打开禅道地址,我这里是10.200.1.27:8001

  1. 选择开源版,默认的admin账户密码为123456,进入后台

小结

这是一个docker的小运用,可以快速搭建一些服务, 可以在linux系统上实现类似于windows中一键安装的效果。

使用POI事件模式解析Excel

发表于 2019-01-07

POI的两种模式

对于Excel的读取,POI有两种模式,第一种是用户模式,使用比较简单,是将文件一次性读到内存,这种模式在文件比较大的情况下会有OutOfMemory内存溢出的情况。第二种是事件驱动模式,excel的内容是使用XML的格式存储的,处理excel就是解析XML,而目前使用事件驱动模式解析XML的API是SAX(Simple API for XML),这种模型在读取XML文档时,并没有将整个文档读入内存,而是按顺序将整个文档解析完,在解析过程中,会主动产生事件交给程序中相应的处理函数来处理当前内容。因此这种方式对系统资源要求不高。

事件模式解析步骤

  1. 通过文件路径或者Inputstream调用OPCPackage的open方法生成OPCPackage实例
  2. 通过OPCPackage实例创建XSSFReader实例对象
  3. 通过XSSFReader实例对象获取共享的字符串表
  4. 创建XMLReader实例对象,使用SAX进行解析取共享的字符串表,并设置内容处理器
  5. 开始处理

示例代码

目标

解析一份大数据量的用户名+电话的excel,将解析出来的数据放入List集合中,格式如图:


阅读全文 »

RedHat上安装指定版本docker和docker-compose

发表于 2018-11-28

安装docker(基于yum)

安装docker源

  1. 下载yum镜像源,需要翻墙,可以从阿里云或者点击这里下载
1
2
cd /etc/yum.repos.d
wget http://zjmoss.oss-cn-beijing.aliyuncs.com/resource/docker-ce.repo
  1. 安装依赖包

    1
    yum install -y yum-utils device-mapper-persistent-data lvm2
  2. 更新yum包索引

    1
    yum makecache fast
  3. 移除旧版本docker

    1
    sudo yum remove docker docker-common docker-selinux docker-engine
  4. 指定版本安装

    1
    2
    yum list docker-ce --showduplicates|sort -r
    yum install docker-ce-18.06.1.ce-3.el7 -y
  5. 启动并加入开机启动

    1
    2
    systemctl start docker
    systemctl enable docker

7 验证是否安装成功

1
2
3
docker -v
# 出现以下信息表示安装成功
Docker version 18.06.1-ce, build e68fc7a
阅读全文 »

jenkins+docker+ansible自动化部署

发表于 2018-10-30

jenkins+docker+ansible实现自动化部署

jenkins工作流程示意图

环境准备

资源 路径
jenkins服务器 10.100.2.12
python项目所在服务器 10.200.1.37

两台服务器上均装有docker和ansible

流程

第一步

为项目添加Dockerfile文件,DockerFile放在项目的根路径,DockerFile文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 基于什么镜像进行构建
FROM lucascosta/serverless-python3.6
# 设置容器环境变量时区为东八区
ENV TZ="Asia/Shanghai"
# Add a yinghuo user to run our application so that it doesn't need to run as root
RUN adduser --disabled-password yinghuo
# 安装python项目所需依赖
RUN pip3 install flask
# 将项目添加到容器中
ADD ./* /home/yinghuo/ai_voice_engine/
# 设置权限
RUN chmod -R 777 /home/yinghuo/ai_voice_engine/
# 等同于cd /home/yinghuo的意思
WORKDIR /home/yinghuo
USER yinghuo
# 启动项目
ENTRYPOINT ["python3", "ai_voice_engine/hello.py"]
# 容器暴露对外的端口号,需要在docker run时添加容器跟服务器的映射关系
EXPOSE 5000

添加完DockerFile后项目结构如下:

阅读全文 »
123…6
我爱的乌托邦

我爱的乌托邦

60 日志
23 标签
© 2020 我爱的乌托邦
由 Hexo 强力驱动
主题 - NexT.Pisces