作者归档:徐承恩

使用Docker搭建Maven私服

使用Docker容器轻松搞定Maven私服搭建

创建卷

docker volume create nexus_data

安装容器

docker run -itd \
--name nexus \
--restart=always \
-p 8081:8081 \
-e MAX_HEAP=512m \
-e MIN_HEAP=512m \
-e CONTEXT_PATH=/ \
-v nexus_data:/sonatype-work \
sonatype/nexus

 

HTTP和RPC的优缺点

在HTTP和RPC的选择上,可能有些人是迷惑的,主要是因为有些RPC框架配置复杂,如果走HTTP也能完成同样的功能,那么为什么要选择RPC,而不是更容易上手的HTTP来实现了。

本篇主要阐述HTTP和RPC的异同,让大家更容易根据自己的实际情况选择更适合的方案。

传输协议

RPC,可以基于TCP协议,也可以基于HTTP协议

HTTP,基于HTTP协议

传输效率

RPC,使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率。

HTTP,如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为一个RPC来使用的,这时标准RPC框架更多的是服务治理。

性能消耗

主要在于序列化和反序列化的耗时

RPC,可以基于thrift实现高效的二进制传输。

HTTP,大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能。

负载均衡

RPC,基本都自带了负载均衡策略。

HTTP,需要配置Nginx,HAProxy来实现。

服务治理

下游服务新增、重启、下线时如何不影响上游调用者

RPC,能做到自动通知,不影响上游。

HTTP,需要事先通知,修改Nginx/HAProxy配置。

总结

RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。

HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

 

“微信”将对您的电脑造成伤害。 您应该将它移到废纸篓。解决方案

最近升级了最新版本的Mac微信客户端,然后就遇到了如题所示的故障,其主要原因是我安装了微信助手插件。如果你也遇到相同的问题请使用如下办法解决(貌似重启电脑以后还要重新执行一次)。

终端命令行

sudo codesign --sign - --force --deep /Applications/WeChat.app
sudo spctl --master-disabley

在访达应用程序中找到微信客户端右键显示简介勾选覆盖恶意软件保护

IDEA插件SQL Dump在控制台输出完整SQL语句

之前一直使用Mybatis log插件自从这个插件收费之后我就再也没有使用过,最近利用业余时间自己开发了一个类似的插件取名叫SQL Dump并已经在Github开源。

开源地址:https://github.com/xuchengen/leo

IDEA插件开发文档:https://plugins.jetbrains.com/docs/intellij/plugin-structure.html

参考插件:https://github.com/huzunrong/mysql-explain

首先分析一下Mybatis Log插件,这款插件自收费之后就没有开源且老的开源仓库删掉了核心代码。我暗搓搓的反编译了最新的Mybatis Log插件的Jar文件然而结果是源码做了混淆没有一点参考价值。在我开发SQL Dump插件之前我仔细的阅读了IDEA Plugin开发文档,要实现Mybatis Log插件输出SQL日志只需监听控制台输出事件抓取控制台输出原文然后二次加工输出即可,其缺点也非常明显就是如果控制台不输出SQL日志那么它不会有任何输出。

SQL Dump插件参考了Mysql explain插件的源码,使用java agent技术对jdbc驱动包Preparedstatement接口的实现类做了字节码插桩,通过运行时反射获取原始SQL和参数然后二次加工输出完整SQL。其优点不依赖特定框架和控制台日志输出,缺点也非常明显需要对各个jdbc驱动包实现类做插桩。所以SQL Dump仅仅只是一个实验性的项目,通过这个项目使我深入学习了java agen以及字节码插桩相关的知识。

群辉NAS中使用Docker安装甜糖心愿

随着移动互联网快速发展,短视频、直播电商异军突起,互联网企业迫切的需要更为低廉的边缘网络服务,因此使用家庭闲置宽带构建PCND网络应运而生。甜糖心愿是甜糖科技推出的一款挂机软件可安装在安卓手机或者基于ARM芯片架构的设备中利用闲置家庭宽带挂机即可产生一定收益实现躺赚。这篇文章徐叔主要介绍如何在群辉NAS中安装甜糖心愿。

前置条件

1、自主可控的家庭带宽电信、移动、联通均可。

2、具备一定的网络基础知识。

3、已安装过Docker的群辉一台。

4、喜欢折腾的精神。

安装甜糖心愿

1、打开控制面板>终端机和SNMP启动SSH功能

2、使用SSH客户端登录群辉并提权到root权限

#提权到root命令
sudo -i

3、docker创建macvlan网络。

#subnet填写群晖所在网络与掩码
#gateway填写路由器IP
#如果你家路由器IP为192.168.1.1则subnet写192.168.1.0/24
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.88 -o parent=ovs_eth0 -o macvlan_mode=bridge macnet

4、在File Station>docker下创建ttnode01目录。

5、创建容器

docker run -itd \
  -v /volume0/docker/ttnode01:/mnts \
  --name ttnode01 \
  --hostname ttnode01 \
  --net=macnet --ip=192.168.2.2 --dns=114.114.114.114 --mac-address C2:F2:9C:C5:B2:94 \
  --privileged=true \
  --restart=always \
  ericwang2006/ttnode

6、查看甜糖心愿容器日志找到自己的控制面板地址,然后按照控制面板说明绑定甜糖心愿APP。

 

查看更多信息请访问【这里就是控制面板地址】

如果觉得还有点用,麻烦用一下我的邀请码625407,有加成卡15张,我也有推广收入

如果觉得还有点用,麻烦用一下我的邀请码625407,有加成卡15张,我也有推广收入

使用Docker搭建自己的云端编辑器Theia

记得去年差不多临近双十一电商购物狂欢节我的阿里云又迎来了一次服务到期,蓦然回首我已经使用阿里云6年,使用阿里云6年从新用户变老用户期间差不多贡献了小一万元。蹭着腾讯云双十一新用户的福利我顺利的迁移到了腾讯云并完成了相关备案手续,目前手里这台腾讯云服务器相对于之前的阿里云服务器那简直叫鸟枪换炮有了足够我折腾的富余空间。最近趁着工作日忙中偷闲的间隙把Docker环境搭好顺便把Theia云端编辑器也给安装上,其实我一直有一个痛点就是不太愿意在本地电脑安装PHP环境,毕竟我这台Mac Book Pro磁盘大小堪忧。有了Theia的助力云端写PHP所见即所得这才叫有趣也比较适合我。

安装Docker-CE

yum install docker-ce docker-ce-cli containerd.io

安装Docker-CE参考菜鸟教程:《CentOS Docker 安装》

我这台服务器系统盘40G数据盘200G所以我把docker的data-root指向到数据盘

编辑/etc/docker/daemon.json文件

vim /etc/docker/daemon.json

写入配置

{
    "registry-mirrors": ["阿里云docker镜像加速服务地址需要自己去申请"],
    "data-root":"/data/var/lib/docker"
}

/data/var/lib/docker路径前面的/data目录是我挂载的200G磁盘,后面的/var/lib/docker我是遵循docker默认安装的路径自行创建。

安装Portainer

创建portainer数据卷

docker volume create portainer_data

创建portainer容器并拉取镜像

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

安装Theia

在数据盘创建项目空间目录

# cd到数据盘
cd /data
# 创建项目空间目录
mkdir web-ide

创建用户组以及用户

#创建用户组
groupadd webide
#创建用户
useradd -d /data/web-ide -s /sbin/nologin -g webide webide

将项目空间目录授权用户组和用户

# 授权web-ide目录用户组
chgrp webide web-ide/
# 授权web-ide目录用户
chown webide web-ide/

以上做的目的确保服务器安全的同时解决了theia不能创建目录和文件的问题

拉取镜像

docker pull theiaide/theia-full:latest

theia-full镜像表示他支持多语言版本,当然你也可以使用其它镜像版本。

创建容器

docker run -itd --name="web-ide" -p 3000:3000 -v "$(pwd):/home/project:cached" theiaide/theia-full:latest

$(pwd)表示当前执行命令行所处的目录

nginx反向代理theia

由于theia没有授权登录机制这里我们使用nginx反向代理theia来实现授权登录

创建密码

[root@test ~]# openssl passwd 12345
fIHcRVEKijgoM
[root@test ~]# echo "admin:fIHcRVEKijgoM" > webide
[root@test ~]# cat htpasswd
admin:fIHcRVEKijgoM

nginx反向代理theia配置

server {
    listen                     80;
    
    auth_basic                 'Code Studio';
    auth_basic_user_file       /etc/password/webide;

    location / {
        proxy_pass        http://172.18.0.3:3000;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection upgrade;
        proxy_set_header  Host $http_host;
    }
}

 

好了一切安装就绪,愉快的在云端写代码吧!

解决安装CentOS7默认网卡不是eth0的问题

ESXI中安装了好几套系统都是CentOS7,以前也没有关注网卡名称这一块的问题。最近在使用docker的时候发现网卡名称居然不是eth0而是ethxxx的形式,这样的网卡名称及其不符合我们的使用习惯。其实早在安装CentOS7的阶段就已经决定了你的网卡名称不是eth0。这里记录一下解决方案以供大家参考。

解决方案一

安装CentOS7镜像时选择第一项:Install CentOS 7此时第一项呈现着重强调的亮色,然后按tab打开kernel启动选项后输入如下命令回车即可。

net.ifnames=0 biosdevname=0

解决CentOS7默认网卡不是eth0

VMware Workstation Pro 16序列号亲测可用

VMware Workstation Pro 16虚拟机最新序列号亲测可用。

各版本序列号

16.x

ZF3R0-FHED2-M80TY-8QYGC-NPKYF

15.x

FC7D0-D1YDL-M8DXZ-CYPZE-P2AY6

14.x

AU108-FLF9P-H8EJZ-7XMQ9-XG0U8

12.x

ZC3TK-63GE6-481JY-WWW5T-Z7ATA

11.x

YG74R-86G1M-M8DLP-XEQNT-XAHW2

10.x

1Z0G9-67285-FZG78-ZL3Q2-234JG

注意事项

1、从VM11开始就不再支持32位系统了,所以32位系统用户和XP系统用户请使用10.0.7版本;
2、从VM14开始,对硬件要求进一步提高,所以低配电脑用户请使用12.5.9版本;
3、关于VM14黑屏问题,这是 VMware tools 版本过低引起的。