三分钟上手ssh命令批量执行工具ansible

ansible作为目前批量linux机器远控工具的老大、其易用性、管理成本低等远远超过了同类的Fabric等工具。

准备测试机器,这里就拿已有的kubernetes的机器做测试,机器和ip分配参考:java微服务 k8s生产环境搭建, 注意下面案例中的k8s机器的ip段已经改成 192.168.10,机器列表如下

机器 ip
K8s-ha-deploy 192.168.10.140
K8s-ha-master1 192.168.10.130
K8s-ha-master2 192.168.10.131
K8s-ha-master3 192.168.10.132
K8s-ha-node1 192.168.10.135
K8s-ha-node2 192.168.10.136
K8s-ha-node3 192.168.10.137

安装ansible

执行下面的命令在部署机上安装ansible

pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

也可以使用docker一键启动

alias ansible="docker run --rm --name ansible -v ${HOME}/.ssh/config:/home/ansible/.ssh/config:ro -v ${HOME}/.ssh/known_hosts:/home/ansible/.ssh/known_hosts:ro -it williamyeh/ansible:alpine3 ansible"
ansible --version
Read more   2019/5/16 posted in  三分钟系列 OPS

使用wireshark抓包读懂tcp三次握手,四次挥手

tcp三次握手和四次挥手的描述很多,但是感觉大部分文章看下来很难具象化这个过程,下面使用这个wireshark抓包工具,通过抓取到的数据包来理解一下,能够从另一个角度理解tcp三次握手了

完整案例代码已上传github: https://github.com/neatlife/mytcp

wireshark下载地址:https://www.wireshark.org/download.html

创建案例项目

可以在idea中创建一个maven项目,创建用来测试3次握手和4次挥手的两个模块,创建模块在idea右键菜单里就有:

把握手和挥手分开测试是为了防止客户端在发送过程中,服务端就提前关闭了,然后挥手的部分包可能会丢掉,这个丢包的效果可以自行尝试

编写握手客户端和服务端

服务端

建立一个socket服务器,并在8881端口上监听,核心代码如下:

ServerSocket socket = new ServerSocket(8881);
socket.accept();
TimeUnit.SECONDS.sleep(2);
socket.close();
Read more   2019/5/15 posted in  TCP/IP

在idea中三分钟搭建spring boot框架源码阅读环境

spring boot是基于spring framework封装的,所以spring boot框架的源码主要就是spring framework框架

下载源码

执行命令

git clone https://github.com/spring-projects/spring-framework.git

下载源码,效果如下:

导入idea

在idea中打开项目,然后gradle会自动完成依赖下载

Read more   2019/5/12 posted in  Spring Boot 三分钟系列

仿金蝶,物料库存系统设计与实现思路

公司最近也在开发库存系统,就拿业界比较成功的金蝶来分析学习,提升自身的业务水平
库存系统最重要的就是入库与出库,成本与利润的计算

入库操作核心流程
入库操作时序图
出库操作核心流程
出库操作时序图

Read more   2019/5/11 posted in  业务

在spring boot中集成微服务网关系统Spring Cloud Zuul

Read more   2019/5/8 posted in  Spring Boot

三分钟把spring boot打成war包部署到tomcat中

虽然一般微服务都是把spring boot项目打成jar直接启动,但是war包作为经典的项目启动方式,是有必要掌握的。

完整项目代码已上传github:https://github.com/neatlife/mywar

写作花费了作者大量时间,求赞,求关注 _(:з」∠)_

准备案例项目

可以直接拿现成的spring boot项目进行修改,也可以在https://start.spring.io/创建一个新的案例项目,比如:

如果是在start.spring.io上创建的新项目,需要把web组件加到项目里,这个编写测试接口会用到web组件里的控制器。 

Read more   2019/5/7 posted in  三分钟系列

在spring boot中三分钟上手apache顶级分布式链路追踪系统skywalking

skywalking在apache里全票通过成为了apache顶级链路追踪系统

项目地址:https://github.com/apache/skywalking
官方文档:https://github.com/apache/skywalking/blob/master/docs/README.md

虽然官方文档很全,但是中文文档目前还没完全翻译过来,研究文档需要花费一些时间,下面作者整理总结了官方文档,可以帮助读者快速上手

skywalking拥有丰富的三方库追踪支持,参考: apm-sdk-plugin

常用的组件比如dubbo, httpclient, rocketmq, jdbc, hystrix等都已官方支持了

为了快速启动项目,会使用docker技术

下载编译

官方文档:https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md
下载源码,并下载依赖的git子模块

git clone https://github.com/apache/skywalking.git
git submodule init
git submodule update

执行编译

mvn clean package -Dmaven.test.skip=true
Read more   2019/5/7 posted in  三分钟系列

思普瑞特,小票打印机和标签打印机java网络驱动设计与实现

Read more   2019/5/6 posted in  业务

在spring boot中消息推送系统设计与实现

Read more   2019/5/6

php微服务,在laravel中集成nacos配置中心

php微服务的资料一直比java少,不过java微服务的一些组件php也是可以复用的,就拿配置中心这个组件举例,来看看在php里如何使用😀

配置中心作为微服务不可缺少的关键组件,下面就在laravel中集成配置中心nacos

nacos是由阿里巴巴开发的微服务配置中心,参考:nacos

下面用到了由作者写的php的nacos客户端php-nacos: https://github.com/neatlife/php-nacos
欢迎star,欢迎pr(求star, 求star, 求star)

启动nacos配置中心

可以使用docker启动

git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker

docker-compose -f example/standalone-derby.yaml up

然后打开 本机ip:8848端口查看效果,nacos默认的登录用户名密码都是 nacos

Read more   2019/5/2 posted in  LARAVEL

在spring boot中3分钟上手阿里巴巴服务熔断系统sentinel

一直在用hystrix做熔断降级,但是无奈hystrix官方已经不再维护了,sentinel背后是阿里巴巴公司,并且一直在维护sentinel,所以先了解下,hystrix不够用时,可以换成sentinel

并且特性丰富,这里就使用如下两个核心功能

  1. 熔断
  2. 流控

启动Sentinel控制台

sentinel的控制台是由spring boot开发,特殊需求可以修改源码定制,源码参考:sentinel-dashboard
可以使用docker一键启动控制台
编写sentinel-dashboard的Dockerfile

FROM openjdk:8-jdk-alpine

ADD https://github.com/alibaba/Sentinel/releases/download/1.6.0/sentinel-dashboard-1.6.0.jar /sentinel-dashboard-1.6.0.jar
ENTRYPOINT ["java", "-Dserver.port=8080", "-Dcsp.sentinel.dashboard.server=localhost:8080", "-Dproject.name=sentinel-dashboard", "-jar", "/sentinel-dashboard-1.6.0.jar", "-Dfile.encoding=utf-8"]

构建sentinel-dashboard镜像:docker build -t sentinel-dashboard . 然后启动

docker run --name sentinel-dashboard \
    -it --rm -p 8719:8719 -p 8780:8080 sentinel-dashboard

其中8080是sentinel web控制界面端口,8719是sentinel应用端和控制台通信端口,参考配置控制台信息

打开 本机ip:8780 查看效果,默认的用户名密码都是 sentinel

Read more   2019/4/30 posted in  Spring Boot 三分钟系列

在spring boot中3分钟上手RPC框架Dubbo

官方提供的demo太多,内容也很详细,资料也多,导致不易快速上手,以下是我根据官方文档整理出来的快速上手步骤

首先rpc调用都需要有注册中心,zookeeper, nacos,redis等都可以拿来作为注册中心
这里为了演示方便我们还是拿经典的zookeeper做演示

完整代码已上传github:https://github.com/neatlife/my-dubbo-spring-boot
下载后启动zookeeper即可运行

获取一个可用的zookeeper实例

可以使用docker启动zookeeper,比如 docker-compose-single.yml

version: '3.1'

services:
    zoo:
        image: 31z4/zookeeper
        restart: always
        hostname: zoo1
        ports:
            - 2181:2181

然后执行docker-compose -f docker-compose-single.yml up -d命令启动zookeeper实例

Read more   2019/4/29 posted in  RPC 三分钟系列